5 #ifndef FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_COMPUTE_PASS_VK_H_
6 #define FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_COMPUTE_PASS_VK_H_
14 class CommandBufferVK;
24 std::shared_ptr<CommandBufferVK> command_buffer_;
26 std::array<uint32_t, 3> max_wg_size_ = {};
27 bool is_valid_ =
false;
30 std::array<vk::DescriptorImageInfo, kMaxBindings> image_workspace_;
31 std::array<vk::DescriptorBufferInfo, kMaxBindings> buffer_workspace_;
32 std::array<vk::WriteDescriptorSet, kMaxBindings + kMaxBindings>
34 size_t bound_image_offset_ = 0u;
35 size_t bound_buffer_offset_ = 0u;
36 size_t descriptor_write_offset_ = 0u;
37 bool has_label_ =
false;
38 bool pipeline_valid_ =
false;
39 vk::DescriptorSet descriptor_set_ = {};
40 vk::PipelineLayout pipeline_layout_ = {};
42 ComputePassVK(std::shared_ptr<const Context> context,
43 std::shared_ptr<CommandBufferVK> command_buffer);
46 bool IsValid()
const override;
49 void OnSetLabel(
const std::string& label)
override;
52 bool EncodeCommands()
const override;
55 void SetCommandLabel(std::string_view label)
override;
58 void SetPipeline(
const std::shared_ptr<Pipeline<ComputePipelineDescriptor>>&
62 void AddBufferMemoryBarrier()
override;
65 void AddTextureMemoryBarrier()
override;
68 fml::Status Compute(
const ISize& grid_size)
override;
73 const ShaderUniformSlot& slot,
74 const ShaderMetadata* metadata,
75 BufferView view)
override;
80 const SampledImageSlot& slot,
81 const ShaderMetadata* metadata,
82 std::shared_ptr<const Texture> texture,
83 raw_ptr<const Sampler> sampler)
override;
Compute passes encode compute shader into the underlying command buffer.
~ComputePassVK() override