| /* |
| * Copyright 2026 Google LLC |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef skgpu_graphite_VulkanComputePipeline_DEFINED |
| #define skgpu_graphite_VulkanComputePipeline_DEFINED |
| |
| #include "include/core/SkRefCnt.h" |
| #include "include/core/SkSpan.h" |
| #include "include/gpu/vk/VulkanTypes.h" |
| #include "include/private/SkTArray.h" |
| #include "src/gpu/graphite/ComputePipeline.h" |
| #include "src/gpu/graphite/DescriptorData.h" |
| |
| namespace skgpu::graphite { |
| |
| class ComputePipelineDesc; |
| class VulkanSharedContext; |
| |
| class VulkanComputePipeline final : public ComputePipeline { |
| public: |
| static sk_sp<VulkanComputePipeline> Make(VulkanSharedContext*, |
| const ComputePipelineDesc&); |
| |
| ~VulkanComputePipeline() override = default; |
| |
| VkPipeline vkPipeline() const { return fPipeline; } |
| VkPipelineLayout vkPipelineLayout() const { return fPipelineLayout; } |
| SkSpan<const DescriptorData> descriptorData() const { return fDescriptorData; } |
| VkDescriptorType bindingType(size_t index) const; |
| VkAccessFlags bufferAccessFlags(size_t index) const; |
| |
| private: |
| VulkanComputePipeline(const SharedContext*, |
| VkPipeline, |
| VkPipelineLayout, |
| skia_private::TArray<DescriptorData> descriptorData, |
| skia_private::TArray<VkAccessFlags> bufferAccessFlags); |
| |
| void freeGpuData() override; |
| |
| VkPipeline fPipeline; |
| VkPipelineLayout fPipelineLayout; |
| skia_private::TArray<DescriptorData> fDescriptorData; |
| skia_private::TArray<VkAccessFlags> fBufferAccessFlags; |
| }; |
| |
| } // namespace skgpu::graphite |
| |
| #endif // skgpu_graphite_VulkanComputePipeline_DEFINED |