Flutter Impeller
compute_pipeline_vk.h
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_COMPUTE_PIPELINE_VK_H_
6 #define FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_COMPUTE_PIPELINE_VK_H_
7 
8 #include <memory>
9 
14 
15 namespace impeller {
16 
17 class ComputePipelineVK final
18  : public Pipeline<ComputePipelineDescriptor>,
19  public BackendCast<ComputePipelineVK,
20  Pipeline<ComputePipelineDescriptor>> {
21  public:
22  ComputePipelineVK(std::weak_ptr<DeviceHolderVK> device_holder,
23  std::weak_ptr<PipelineLibrary> library,
24  const ComputePipelineDescriptor& desc,
25  vk::UniquePipeline pipeline,
26  vk::UniquePipelineLayout layout,
27  vk::UniqueDescriptorSetLayout descriptor_set_layout,
28  PipelineKey pipeline_key);
29 
30  // |Pipeline|
31  ~ComputePipelineVK() override;
32 
33  const vk::Pipeline& GetPipeline() const;
34 
35  const vk::PipelineLayout& GetPipelineLayout() const;
36 
37  const vk::DescriptorSetLayout& GetDescriptorSetLayout() const;
38 
39  /// @brief Retrieve the unique identifier for this pipeline's descriptor set
40  /// layout.
42 
43  private:
44  friend class PipelineLibraryVK;
45 
46  std::weak_ptr<DeviceHolderVK> device_holder_;
47  vk::UniquePipeline pipeline_;
48  vk::UniquePipelineLayout layout_;
49  vk::UniqueDescriptorSetLayout descriptor_set_layout_;
50  const PipelineKey pipeline_key_;
51  bool is_valid_ = false;
52 
53  // |Pipeline|
54  bool IsValid() const override;
55 
56  ComputePipelineVK(const ComputePipelineVK&) = delete;
57 
58  ComputePipelineVK& operator=(const ComputePipelineVK&) = delete;
59 };
60 
61 } // namespace impeller
62 
63 #endif // FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_COMPUTE_PIPELINE_VK_H_
const vk::DescriptorSetLayout & GetDescriptorSetLayout() const
const vk::Pipeline & GetPipeline() const
const vk::PipelineLayout & GetPipelineLayout() const
PipelineKey GetPipelineKey() const
Retrieve the unique identifier for this pipeline's descriptor set layout.
ComputePipelineVK(std::weak_ptr< DeviceHolderVK > device_holder, std::weak_ptr< PipelineLibrary > library, const ComputePipelineDescriptor &desc, vk::UniquePipeline pipeline, vk::UniquePipelineLayout layout, vk::UniqueDescriptorSetLayout descriptor_set_layout, PipelineKey pipeline_key)
Describes the fixed function and programmable aspects of rendering and compute operations performed b...
Definition: pipeline.h:52
int64_t PipelineKey
Definition: pipeline.h:21