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 
10 #include "flutter/fml/macros.h"
15 
16 namespace impeller {
17 
18 class ComputePipelineVK final
19  : public Pipeline<ComputePipelineDescriptor>,
20  public BackendCast<ComputePipelineVK,
21  Pipeline<ComputePipelineDescriptor>> {
22  public:
23  ComputePipelineVK(std::weak_ptr<DeviceHolderVK> device_holder,
24  std::weak_ptr<PipelineLibrary> library,
25  const ComputePipelineDescriptor& desc,
26  vk::UniquePipeline pipeline,
27  vk::UniquePipelineLayout layout,
28  vk::UniqueDescriptorSetLayout descriptor_set_layout);
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  private:
40  friend class PipelineLibraryVK;
41 
42  std::weak_ptr<DeviceHolderVK> device_holder_;
43  vk::UniquePipeline pipeline_;
44  vk::UniquePipelineLayout layout_;
45  vk::UniqueDescriptorSetLayout descriptor_set_layout_;
46  bool is_valid_ = false;
47 
48  // |Pipeline|
49  bool IsValid() const override;
50 
51  ComputePipelineVK(const ComputePipelineVK&) = delete;
52 
53  ComputePipelineVK& operator=(const ComputePipelineVK&) = delete;
54 };
55 
56 } // namespace impeller
57 
58 #endif // FLUTTER_IMPELLER_RENDERER_BACKEND_VULKAN_COMPUTE_PIPELINE_VK_H_
impeller::Pipeline
Describes the fixed function and programmable aspects of rendering and compute operations performed b...
Definition: compute_pipeline_descriptor.h:28
impeller::ComputePipelineDescriptor
Definition: compute_pipeline_descriptor.h:30
impeller::ComputePipelineVK::GetPipelineLayout
const vk::PipelineLayout & GetPipelineLayout() const
Definition: compute_pipeline_vk.cc:45
pipeline.h
impeller::ComputePipelineVK::~ComputePipelineVK
~ComputePipelineVK() override
Definition: compute_pipeline_vk.cc:24
impeller::PipelineLibraryVK
Definition: pipeline_library_vk.h:26
vk.h
device_holder_vk.h
impeller::ComputePipelineVK::GetDescriptorSetLayout
const vk::DescriptorSetLayout & GetDescriptorSetLayout() const
Definition: compute_pipeline_vk.cc:49
backend_cast.h
impeller::BackendCast
Definition: backend_cast.h:11
impeller::ComputePipelineVK::GetPipeline
const vk::Pipeline & GetPipeline() const
Definition: compute_pipeline_vk.cc:41
impeller::ComputePipelineVK::ComputePipelineVK
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)
Definition: compute_pipeline_vk.cc:9
impeller::ComputePipelineVK
Definition: compute_pipeline_vk.h:18
impeller
Definition: aiks_blur_unittests.cc:20