Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
flutter::gpu::Context Class Reference

#include <context.h>

Inheritance diagram for flutter::gpu::Context:
flutter::RefCountedDartWrappable< Context > fml::RefCountedThreadSafe< T > tonic::DartWrappable fml::internal::RefCountedThreadSafeBase

Public Member Functions

 Context (std::shared_ptr< impeller::Context > context)
 
 ~Context () override
 
impeller::ContextGetContext ()
 
std::shared_ptr< impeller::Context > & GetContextShared ()
 
- Public Member Functions inherited from flutter::RefCountedDartWrappable< Context >
virtual void RetainDartWrappableReference () const override
 
virtual void ReleaseDartWrappableReference () const override
 
- Public Member Functions inherited from fml::RefCountedThreadSafe< T >
void Release () const
 
- Public Member Functions inherited from fml::internal::RefCountedThreadSafeBase
void AddRef () const
 
bool HasOneRef () const
 
void AssertHasOneRef () const
 
- Public Member Functions inherited from tonic::DartWrappable
 DartWrappable ()
 
virtual const DartWrapperInfoGetDartWrapperInfo () const =0
 
Dart_Handle CreateDartWrapper (DartState *dart_state)
 
void AssociateWithDartWrapper (Dart_Handle wrappable)
 
void ClearDartWrapper ()
 
Dart_WeakPersistentHandle dart_wrapper () const
 

Static Public Member Functions

static void SetOverrideContext (std::shared_ptr< impeller::Context > context)
 
static std::shared_ptr< impeller::ContextGetOverrideContext ()
 
static std::shared_ptr< impeller::ContextGetDefaultContext (std::optional< std::string > &out_error)
 

Additional Inherited Members

- Public Types inherited from tonic::DartWrappable
enum  DartNativeFields {
  kPeerIndex ,
  kNumberOfNativeFields
}
 
- Protected Member Functions inherited from fml::RefCountedThreadSafe< T >
 RefCountedThreadSafe ()
 
 ~RefCountedThreadSafe ()
 
- Protected Member Functions inherited from fml::internal::RefCountedThreadSafeBase
 RefCountedThreadSafeBase ()
 
 ~RefCountedThreadSafeBase ()
 
bool Release () const
 
void Adopt ()
 
- Protected Member Functions inherited from tonic::DartWrappable
virtual ~DartWrappable ()
 
- Static Protected Member Functions inherited from tonic::DartWrappable
static Dart_PersistentHandle GetTypeForWrapper (tonic::DartState *dart_state, const tonic::DartWrapperInfo &wrapper_info)
 

Detailed Description

Definition at line 18 of file context.h.

Constructor & Destructor Documentation

◆ Context()

flutter::gpu::Context::Context ( std::shared_ptr< impeller::Context context)
explicit

Definition at line 79 of file context.cc.

80 : context_(std::move(context)) {}

◆ ~Context()

flutter::gpu::Context::~Context ( )
overridedefault

Member Function Documentation

◆ GetContext()

◆ GetContextShared()

std::shared_ptr< impeller::Context > & flutter::gpu::Context::GetContextShared ( )

Definition at line 88 of file context.cc.

88 {
89 return context_;
90}

Referenced by InternalFlutterGpu_CommandBuffer_Initialize(), and flutter::gpu::Texture::Overwrite().

◆ GetDefaultContext()

std::shared_ptr< impeller::Context > flutter::gpu::Context::GetDefaultContext ( std::optional< std::string > &  out_error)
static

Definition at line 36 of file context.cc.

37 {
38 auto override_context = GetOverrideContext();
39 if (override_context) {
40 return override_context;
41 }
42
43 auto dart_state = flutter::UIDartState::Current();
44 if (!dart_state->IsImpellerEnabled()) {
45 out_error =
46 "Flutter GPU requires the Impeller rendering backend, but Impeller is "
47 "not enabled. For more details about where Impeller is available and "
48 "how to enable it, see: https://docs.flutter.dev/perf/impeller";
49 return nullptr;
50 }
51 if (!dart_state->IsFlutterGPUEnabled()) {
52 out_error =
53 "Flutter GPU must be enabled via the Flutter GPU manifest "
54 "setting. This can be done either via command line argument "
55 "--enable-flutter-gpu or "
56 "by adding the FLTEnableFlutterGPU key set to true in the Info.plist "
57 "on iOS/macOS, or the io.flutter.embedding.android.EnableFlutterGPU "
58 "metadata key to true in the AndroidManifest.xml on Android.";
59 return nullptr;
60 }
61 // Grab the Impeller context from the IO manager.
62 std::promise<std::shared_ptr<impeller::Context>> context_promise;
63 auto impeller_context_future = context_promise.get_future();
65 dart_state->GetTaskRunners().GetIOTaskRunner(),
66 fml::MakeCopyable([promise = std::move(context_promise),
67 io_manager = dart_state->GetIOManager()]() mutable {
68 promise.set_value(io_manager ? io_manager->GetImpellerContext()
69 : nullptr);
70 }));
71 auto context = impeller_context_future.get();
72
73 if (!context) {
74 out_error = "Unable to retrieve the Impeller context.";
75 }
76 return context;
77}
static UIDartState * Current()
static std::shared_ptr< impeller::Context > GetOverrideContext()
Definition context.cc:32
static void RunNowOrPostTask(const fml::RefPtr< fml::TaskRunner > &runner, const fml::closure &task)
internal::CopyableLambda< T > MakeCopyable(T lambda)

References flutter::UIDartState::Current(), GetOverrideContext(), fml::MakeCopyable(), and fml::TaskRunner::RunNowOrPostTask().

Referenced by InternalFlutterGpu_Context_InitializeDefault(), and InternalFlutterGpu_ShaderLibrary_InitializeWithAsset().

◆ GetOverrideContext()

std::shared_ptr< impeller::Context > flutter::gpu::Context::GetOverrideContext ( )
static

Definition at line 32 of file context.cc.

32 {
33 return default_context_;
34}

Referenced by GetDefaultContext().

◆ SetOverrideContext()

void flutter::gpu::Context::SetOverrideContext ( std::shared_ptr< impeller::Context context)
static

Definition at line 28 of file context.cc.

28 {
29 default_context_ = std::move(context);
30}

Referenced by impeller::testing::RendererDartTest::GetIsolate().


The documentation for this class was generated from the following files: