Flutter Engine
 
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 72 of file context.cc.

73 : 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 81 of file context.cc.

81 {
82 return context_;
83}

Referenced by InternalFlutterGpu_CommandBuffer_Initialize().

◆ 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->IsFlutterGPUEnabled()) {
45 out_error =
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 "
51 "Android.";
52 return nullptr;
53 }
54 // Grab the Impeller context from the IO manager.
55 std::promise<std::shared_ptr<impeller::Context>> context_promise;
56 auto impeller_context_future = context_promise.get_future();
58 dart_state->GetTaskRunners().GetIOTaskRunner(),
59 fml::MakeCopyable([promise = std::move(context_promise),
60 io_manager = dart_state->GetIOManager()]() mutable {
61 promise.set_value(io_manager ? io_manager->GetImpellerContext()
62 : nullptr);
63 }));
64 auto context = impeller_context_future.get();
65
66 if (!context) {
67 out_error = "Unable to retrieve the Impeller context.";
68 }
69 return context;
70}
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: