5 #ifndef FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_PIPELINE_VK_H_
6 #define FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_PIPELINE_VK_H_
26 :
public Pipeline<PipelineDescriptor>,
27 public BackendCast<PipelineVK, Pipeline<PipelineDescriptor>> {
29 static std::unique_ptr<PipelineVK>
Create(
31 const std::shared_ptr<DeviceHolderVK>& device_holder,
32 const std::weak_ptr<PipelineLibrary>& weak_library,
34 std::shared_ptr<SamplerVK> immutable_sampler = {});
46 const std::shared_ptr<SamplerVK>& immutable_sampler)
const;
53 using ImmutableSamplerVariants =
55 std::shared_ptr<PipelineVK>,
59 std::weak_ptr<DeviceHolderVK> device_holder_;
60 vk::UniquePipeline pipeline_;
61 vk::UniqueRenderPass render_pass_;
62 vk::UniquePipelineLayout layout_;
63 vk::UniqueDescriptorSetLayout descriptor_set_layout_;
64 std::shared_ptr<SamplerVK> immutable_sampler_;
66 mutable Mutex immutable_sampler_variants_mutex_;
67 mutable ImmutableSamplerVariants immutable_sampler_variants_
IPLR_GUARDED_BY(
68 immutable_sampler_variants_mutex_);
69 bool is_valid_ =
false;
71 PipelineVK(std::weak_ptr<DeviceHolderVK> device_holder,
72 std::weak_ptr<PipelineLibrary> library,
74 vk::UniquePipeline pipeline,
75 vk::UniqueRenderPass render_pass,
76 vk::UniquePipelineLayout layout,
77 vk::UniqueDescriptorSetLayout descriptor_set_layout,
79 std::shared_ptr<SamplerVK> immutable_sampler);
82 bool IsValid()
const override;
Describes the fixed function and programmable aspects of rendering and compute operations performed b...
std::shared_ptr< PipelineVK > CreateVariantForImmutableSamplers(const std::shared_ptr< SamplerVK > &immutable_sampler) const
PipelineKey GetPipelineKey() const
const vk::PipelineLayout & GetPipelineLayout() const
const vk::DescriptorSetLayout & GetDescriptorSetLayout() const
vk::Pipeline GetPipeline() const
static std::unique_ptr< PipelineVK > Create(const PipelineDescriptor &desc, const std::shared_ptr< DeviceHolderVK > &device_holder, const std::weak_ptr< PipelineLibrary > &weak_library, PipelineKey pipeline_key, std::shared_ptr< SamplerVK > immutable_sampler={})
static constexpr size_t kMaxBindings
#define IPLR_GUARDED_BY(x)