xref: /aosp_15_r20/external/skia/src/gpu/ganesh/vk/GrVkImageView.h (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1 /*
2  * Copyright 2016 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 #ifndef GrVkImageView_DEFINED
8 #define GrVkImageView_DEFINED
9 
10 #include "include/core/SkRefCnt.h"
11 #include "include/private/base/SkDebug.h"
12 #include "include/private/gpu/vk/SkiaVulkan.h"
13 #include "src/gpu/ganesh/GrManagedResource.h"
14 #include "src/gpu/ganesh/vk/GrVkManagedResource.h"
15 
16 #include <cinttypes>
17 #include <cstdint>
18 
19 class GrVkGpu;
20 class GrVkSamplerYcbcrConversion;
21 
22 namespace skgpu {
23 struct VulkanYcbcrConversionInfo;
24 }
25 
26 class GrVkImageView : public GrVkManagedResource {
27 public:
28     enum Type {
29         kColor_Type,
30         kStencil_Type
31     };
32 
33     static sk_sp<const GrVkImageView> Make(GrVkGpu* gpu,
34                                            VkImage image,
35                                            VkFormat format,
36                                            Type viewType,
37                                            uint32_t miplevels,
38                                            const skgpu::VulkanYcbcrConversionInfo& ycbcrInfo);
39 
imageView()40     VkImageView imageView() const { return fImageView; }
41 
42 #ifdef SK_TRACE_MANAGED_RESOURCES
dumpInfo()43     void dumpInfo() const override {
44         SkDebugf("GrVkImageView: %" PRIdPTR " (%d refs)\n",
45                  (intptr_t)fImageView, this->getRefCnt());
46     }
47 #endif
48 
49 private:
GrVkImageView(const GrVkGpu * gpu,VkImageView imageView,GrVkSamplerYcbcrConversion * ycbcrConversion)50     GrVkImageView(const GrVkGpu* gpu, VkImageView imageView,
51                   GrVkSamplerYcbcrConversion* ycbcrConversion)
52             : INHERITED(gpu), fImageView(imageView), fYcbcrConversion(ycbcrConversion) {}
53 
54     void freeGPUData() const override;
55 
56     VkImageView  fImageView;
57     GrVkSamplerYcbcrConversion* fYcbcrConversion;
58 
59     using INHERITED = GrVkManagedResource;
60 };
61 
62 #endif
63