Flutter Engine
 
Loading...
Searching...
No Matches
impeller::CommandBufferVK Class Referencefinal

#include <command_buffer_vk.h>

Inheritance diagram for impeller::CommandBufferVK:
impeller::CommandBuffer impeller::BackendCast< CommandBufferVK, CommandBuffer >

Public Member Functions

 ~CommandBufferVK () override
 
bool Track (const std::shared_ptr< SharedObjectVK > &object)
 Ensure that [object] is kept alive until this command buffer completes execution.
 
bool Track (const std::shared_ptr< const DeviceBuffer > &buffer)
 Ensure that [buffer] is kept alive until this command buffer completes execution.
 
bool Track (const std::shared_ptr< const Texture > &texture)
 Ensure that [texture] is kept alive until this command buffer completes execution.
 
bool Track (const std::shared_ptr< const TextureSourceVK > &texture)
 Ensure that [texture] is kept alive until this command buffer completes execution.
 
vk::CommandBuffer GetCommandBuffer () const
 Retrieve the native command buffer from this object.
 
void PushDebugGroup (std::string_view label) const
 Push a debug group.
 
void PopDebugGroup () const
 Pop the previous debug group.
 
void InsertDebugMarker (std::string_view label) const
 Insert a new debug marker.
 
bool EndCommandBuffer () const
 End recording of the current command buffer.
 
fml::StatusOr< vk::DescriptorSet > AllocateDescriptorSets (const vk::DescriptorSetLayout &layout, PipelineKey pipeline_key, const ContextVK &context)
 Allocate a new descriptor set for the given [layout].
 
DescriptorPoolVKGetDescriptorPool () const
 
- Public Member Functions inherited from impeller::CommandBuffer
virtual ~CommandBuffer ()
 
void WaitUntilCompleted ()
 Block the current thread until the GPU has completed execution of the commands.
 
void WaitUntilScheduled ()
 Block the current thread until the GPU has completed scheduling execution of the commands.
 
std::shared_ptr< RenderPassCreateRenderPass (const RenderTarget &render_target)
 Create a render pass to record render commands into.
 
std::shared_ptr< BlitPassCreateBlitPass ()
 Create a blit pass to record blit commands into.
 
std::shared_ptr< ComputePassCreateComputePass ()
 Create a compute pass to record compute commands into.
 

Friends

class ContextVK
 
class CommandQueueVK
 

Additional Inherited Members

- Public Types inherited from impeller::CommandBuffer
enum class  Status {
  kPending ,
  kError ,
  kCompleted
}
 
using CompletionCallback = std::function< void(Status)>
 
- Static Public Member Functions inherited from impeller::BackendCast< CommandBufferVK, CommandBuffer >
static CommandBufferVKCast (CommandBuffer &base)
 
static const CommandBufferVKCast (const CommandBuffer &base)
 
static CommandBufferVKCast (CommandBuffer *base)
 
static const CommandBufferVKCast (const CommandBuffer *base)
 
- Protected Member Functions inherited from impeller::CommandBuffer
 CommandBuffer (std::weak_ptr< const Context > context)
 
- Protected Attributes inherited from impeller::CommandBuffer
std::weak_ptr< const Contextcontext_
 

Detailed Description

Definition at line 24 of file command_buffer_vk.h.

Constructor & Destructor Documentation

◆ ~CommandBufferVK()

impeller::CommandBufferVK::~CommandBufferVK ( )
overridedefault

Member Function Documentation

◆ AllocateDescriptorSets()

fml::StatusOr< vk::DescriptorSet > impeller::CommandBufferVK::AllocateDescriptorSets ( const vk::DescriptorSetLayout &  layout,
PipelineKey  pipeline_key,
const ContextVK context 
)

Allocate a new descriptor set for the given [layout].

Definition at line 162 of file command_buffer_vk.cc.

165 {
166 if (!IsValid()) {
167 return fml::Status(fml::StatusCode::kUnknown, "command encoder invalid");
168 }
169
170 return tracked_objects_->GetDescriptorPool().AllocateDescriptorSets(
171 layout, pipeline_key, context);
172}

References fml::kUnknown.

◆ EndCommandBuffer()

bool impeller::CommandBufferVK::EndCommandBuffer ( ) const

End recording of the current command buffer.

Definition at line 106 of file command_buffer_vk.cc.

106 {
107 InsertDebugMarker("QueueSubmit");
108
109 auto command_buffer = GetCommandBuffer();
110 tracked_objects_->GetGPUProbe().RecordCmdBufferEnd(command_buffer);
111
112 auto status = command_buffer.end();
113 if (status != vk::Result::eSuccess) {
114 VALIDATION_LOG << "Failed to end command buffer: " << vk::to_string(status);
115 return false;
116 }
117 return true;
118}
void InsertDebugMarker(std::string_view label) const
Insert a new debug marker.
vk::CommandBuffer GetCommandBuffer() const
Retrieve the native command buffer from this object.
#define VALIDATION_LOG
Definition validation.h:91

References VALIDATION_LOG.

Referenced by flutter::SetTextureLayout(), and impeller::CommandQueueVK::Submit().

◆ GetCommandBuffer()

vk::CommandBuffer impeller::CommandBufferVK::GetCommandBuffer ( ) const

Retrieve the native command buffer from this object.

Definition at line 120 of file command_buffer_vk.cc.

120 {
121 if (tracked_objects_) {
122 return tracked_objects_->GetCommandBuffer();
123 }
124 return {};
125}

Referenced by impeller::GPUTracerVK::InitializeQueryPool(), flutter::SetTextureLayout(), and impeller::CommandQueueVK::Submit().

◆ GetDescriptorPool()

DescriptorPoolVK & impeller::CommandBufferVK::GetDescriptorPool ( ) const

Definition at line 205 of file command_buffer_vk.cc.

205 {
206 return tracked_objects_->GetDescriptorPool();
207}

Referenced by impeller::testing::TEST().

◆ InsertDebugMarker()

void impeller::CommandBufferVK::InsertDebugMarker ( std::string_view  label) const

Insert a new debug marker.

This label is only visible in debuggers like RenderDoc. This function is ignored in release builds.

Definition at line 194 of file command_buffer_vk.cc.

194 {
195 if (!HasValidationLayers()) {
196 return;
197 }
198 vk::DebugUtilsLabelEXT label_info;
199 label_info.pLabelName = label.data();
200 if (auto command_buffer = GetCommandBuffer()) {
201 command_buffer.insertDebugUtilsLabelEXT(label_info);
202 }
203}
bool HasValidationLayers()
Definition context_vk.cc:53

References impeller::HasValidationLayers().

◆ PopDebugGroup()

void impeller::CommandBufferVK::PopDebugGroup ( ) const

Pop the previous debug group.

This label is only visible in debuggers like RenderDoc. This function is ignored in release builds.

Definition at line 185 of file command_buffer_vk.cc.

185 {
186 if (!HasValidationLayers()) {
187 return;
188 }
189 if (auto command_buffer = GetCommandBuffer()) {
190 command_buffer.endDebugUtilsLabelEXT();
191 }
192}

References impeller::HasValidationLayers().

◆ PushDebugGroup()

void impeller::CommandBufferVK::PushDebugGroup ( std::string_view  label) const

Push a debug group.

This label is only visible in debuggers like RenderDoc. This function is ignored in release builds.

Definition at line 174 of file command_buffer_vk.cc.

174 {
175 if (!HasValidationLayers()) {
176 return;
177 }
178 vk::DebugUtilsLabelEXT label_info;
179 label_info.pLabelName = label.data();
180 if (auto command_buffer = GetCommandBuffer()) {
181 command_buffer.beginDebugUtilsLabelEXT(label_info);
182 }
183}

References impeller::HasValidationLayers().

◆ Track() [1/4]

bool impeller::CommandBufferVK::Track ( const std::shared_ptr< const DeviceBuffer > &  buffer)

Ensure that [buffer] is kept alive until this command buffer completes execution.

Definition at line 135 of file command_buffer_vk.cc.

135 {
136 if (!IsValid()) {
137 return false;
138 }
139 tracked_objects_->Track(buffer);
140 return true;
141}

◆ Track() [2/4]

bool impeller::CommandBufferVK::Track ( const std::shared_ptr< const Texture > &  texture)

Ensure that [texture] is kept alive until this command buffer completes execution.

Definition at line 152 of file command_buffer_vk.cc.

152 {
153 if (!IsValid()) {
154 return false;
155 }
156 if (!texture) {
157 return true;
158 }
159 return Track(TextureVK::Cast(*texture).GetTextureSource());
160}
static TextureVK & Cast(Texture &base)
bool Track(const std::shared_ptr< SharedObjectVK > &object)
Ensure that [object] is kept alive until this command buffer completes execution.
std::shared_ptr< const TextureSourceVK > GetTextureSource() const
FlTexture * texture

References texture.

◆ Track() [3/4]

bool impeller::CommandBufferVK::Track ( const std::shared_ptr< const TextureSourceVK > &  texture)

Ensure that [texture] is kept alive until this command buffer completes execution.

Definition at line 143 of file command_buffer_vk.cc.

144 {
145 if (!IsValid()) {
146 return false;
147 }
148 tracked_objects_->Track(texture);
149 return true;
150}

References texture.

◆ Track() [4/4]

bool impeller::CommandBufferVK::Track ( const std::shared_ptr< SharedObjectVK > &  object)

Ensure that [object] is kept alive until this command buffer completes execution.

Definition at line 127 of file command_buffer_vk.cc.

127 {
128 if (!IsValid()) {
129 return false;
130 }
131 tracked_objects_->Track(object);
132 return true;
133}

Friends And Related Symbol Documentation

◆ CommandQueueVK

friend class CommandQueueVK
friend

Definition at line 85 of file command_buffer_vk.h.

◆ ContextVK

friend class ContextVK
friend

Definition at line 84 of file command_buffer_vk.h.


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