Flutter Engine
 
Loading...
Searching...
No Matches
flutter::gpu::CommandBuffer Class Reference

#include <command_buffer.h>

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

Public Member Functions

 CommandBuffer (std::shared_ptr< impeller::Context > context, std::shared_ptr< impeller::CommandBuffer > command_buffer)
 
std::shared_ptr< impeller::CommandBufferGetCommandBuffer ()
 
void AddRenderPass (std::shared_ptr< impeller::RenderPass > render_pass)
 
bool Submit ()
 
bool Submit (const impeller::CommandBuffer::CompletionCallback &completion_callback)
 
 ~CommandBuffer () override
 
- Public Member Functions inherited from flutter::RefCountedDartWrappable< CommandBuffer >
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
 

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 17 of file command_buffer.h.

Constructor & Destructor Documentation

◆ CommandBuffer()

flutter::gpu::CommandBuffer::CommandBuffer ( std::shared_ptr< impeller::Context context,
std::shared_ptr< impeller::CommandBuffer command_buffer 
)

Definition at line 19 of file command_buffer.cc.

22 : context_(std::move(context)),
23 command_buffer_(std::move(command_buffer)) {}

◆ ~CommandBuffer()

flutter::gpu::CommandBuffer::~CommandBuffer ( )
overridedefault

Member Function Documentation

◆ AddRenderPass()

void flutter::gpu::CommandBuffer::AddRenderPass ( std::shared_ptr< impeller::RenderPass render_pass)

Definition at line 31 of file command_buffer.cc.

32 {
33 encodables_.push_back(std::move(render_pass));
34}

Referenced by flutter::gpu::RenderPass::Begin().

◆ GetCommandBuffer()

std::shared_ptr< impeller::CommandBuffer > flutter::gpu::CommandBuffer::GetCommandBuffer ( )

Definition at line 27 of file command_buffer.cc.

27 {
28 return command_buffer_;
29}

Referenced by flutter::gpu::RenderPass::Begin().

◆ Submit() [1/2]

bool flutter::gpu::CommandBuffer::Submit ( )

Definition at line 36 of file command_buffer.cc.

36 {
37 return CommandBuffer::Submit({});
38}

References Submit().

Referenced by InternalFlutterGpu_CommandBuffer_Submit(), and Submit().

◆ Submit() [2/2]

bool flutter::gpu::CommandBuffer::Submit ( const impeller::CommandBuffer::CompletionCallback completion_callback)

Definition at line 40 of file command_buffer.cc.

41 {
42 // For the GLES backend, command queue submission just flushes the reactor,
43 // which needs to happen on the raster thread.
44 if (context_->GetBackendType() == impeller::Context::BackendType::kOpenGLES) {
45 auto dart_state = flutter::UIDartState::Current();
46 auto& task_runners = dart_state->GetTaskRunners();
47
48 task_runners.GetRasterTaskRunner()->PostTask(
49 fml::MakeCopyable([context = context_, command_buffer = command_buffer_,
50 completion_callback = completion_callback,
51 encodables = encodables_]() mutable {
52 for (auto& encodable : encodables) {
53 encodable->EncodeCommands();
54 }
55
56 context->GetCommandQueue()->Submit({command_buffer},
57 completion_callback);
58 context->DisposeThreadLocalCachedResources();
59 }));
60 return true;
61 }
62
63 for (auto& encodable : encodables_) {
64 encodable->EncodeCommands();
65 }
66
67 auto status = context_->GetCommandQueue()->Submit({command_buffer_},
68 completion_callback);
69 context_->DisposeThreadLocalCachedResources();
70 return status.ok();
71}
static UIDartState * Current()
internal::CopyableLambda< T > MakeCopyable(T lambda)

References flutter::UIDartState::Current(), impeller::Context::kOpenGLES, and fml::MakeCopyable().


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