37 std::optional<std::string>& out_error) {
39 if (override_context) {
40 return override_context;
44 if (!dart_state->IsFlutterGPUEnabled()) {
46 "Flutter GPU must be enabled via the Flutter GPU manifest "
47 "setting. This can be done either via command line argument "
48 "--enable-flutter-gpu or "
49 "by adding the FLTEnableFlutterGPU key set to true on iOS or "
50 "io.flutter.embedding.android.EnableFlutterGPU metadata key to true on "
55 std::promise<std::shared_ptr<impeller::Context>> context_promise;
56 auto impeller_context_future = context_promise.get_future();
58 dart_state->GetTaskRunners().GetIOTaskRunner(),
60 io_manager = dart_state->GetIOManager()]()
mutable {
61 promise.set_value(io_manager ? io_manager->GetImpellerContext()
64 auto context = impeller_context_future.get();
67 out_error =
"Unable to retrieve the Impeller context.";
static std::shared_ptr< impeller::Context > GetOverrideContext()
static void SetOverrideContext(std::shared_ptr< impeller::Context > context)
std::shared_ptr< impeller::Context > & GetContextShared()
impeller::Context & GetContext()
Context(std::shared_ptr< impeller::Context > context)
static std::shared_ptr< impeller::Context > GetDefaultContext(std::optional< std::string > &out_error)
To do anything rendering related with Impeller, you need a context.
virtual const std::shared_ptr< const Capabilities > & GetCapabilities() const =0
Get the capabilities of Impeller context. All optionally supported feature of the platform,...
int InternalFlutterGpu_Context_GetMinimumUniformByteAlignment(flutter::gpu::Context *wrapper)
int InternalFlutterGpu_Context_GetDefaultDepthStencilFormat(flutter::gpu::Context *wrapper)
Dart_Handle InternalFlutterGpu_Context_InitializeDefault(Dart_Handle wrapper)
int InternalFlutterGpu_Context_GetDefaultColorFormat(flutter::gpu::Context *wrapper)
bool InternalFlutterGpu_Context_GetSupportsOffscreenMSAA(flutter::gpu::Context *wrapper)
int InternalFlutterGpu_Context_GetDefaultStencilFormat(flutter::gpu::Context *wrapper)