xref: /aosp_15_r20/external/skia/src/gpu/ganesh/vk/GrVkTypesPriv.h (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1 /*
2  * Copyright 2018 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 
8 #ifndef GrVkTypesPriv_DEFINED
9 #define GrVkTypesPriv_DEFINED
10 
11 #include "include/gpu/ganesh/vk/GrVkTypes.h"
12 #include "include/gpu/vk/VulkanTypes.h"
13 #include "include/private/gpu/vk/SkiaVulkan.h"
14 
15 #include <cstdint>
16 
17 namespace skgpu {
18 class MutableTextureState;
19 enum class Protected : bool;
20 }
21 
22 GrVkImageInfo GrVkImageInfoWithMutableState(const GrVkImageInfo&,
23                                             const skgpu::MutableTextureState*);
24 
25 struct GrVkImageSpec {
GrVkImageSpecGrVkImageSpec26     GrVkImageSpec()
27             : fImageTiling(VK_IMAGE_TILING_OPTIMAL)
28             , fFormat(VK_FORMAT_UNDEFINED)
29             , fImageUsageFlags(0)
30             , fSharingMode(VK_SHARING_MODE_EXCLUSIVE) {}
31 
GrVkImageSpecGrVkImageSpec32     GrVkImageSpec(const GrVkSurfaceInfo& info)
33             : fImageTiling(info.fImageTiling)
34             , fFormat(info.fFormat)
35             , fImageUsageFlags(info.fImageUsageFlags)
36             , fYcbcrConversionInfo(info.fYcbcrConversionInfo)
37             , fSharingMode(info.fSharingMode) {}
38 
39     VkImageTiling fImageTiling;
40     VkFormat fFormat;
41     VkImageUsageFlags fImageUsageFlags;
42     skgpu::VulkanYcbcrConversionInfo fYcbcrConversionInfo;
43     VkSharingMode fSharingMode;
44 };
45 
46 GrVkSurfaceInfo GrVkImageSpecToSurfaceInfo(const GrVkImageSpec& vkSpec,
47                                            uint32_t sampleCount,
48                                            uint32_t levelCount,
49                                            skgpu::Protected isProtected);
50 
51 #endif
52