• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2022 Google LLC.
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 skgpu_graphite_VulkanGraphiteTypesPriv_DEFINED
9 #define skgpu_graphite_VulkanGraphiteTypesPriv_DEFINED
10 
11 #include "include/gpu/graphite/vk/VulkanGraphiteTypes.h"
12 
13 namespace skgpu::graphite {
14 
15 struct VulkanTextureSpec {
VulkanTextureSpecVulkanTextureSpec16     VulkanTextureSpec()
17             : fFlags(0)
18             , fFormat(VK_FORMAT_UNDEFINED)
19             , fImageTiling(VK_IMAGE_TILING_OPTIMAL)
20             , fImageUsageFlags(0)
21             , fSharingMode(VK_SHARING_MODE_EXCLUSIVE)
22             , fAspectMask(VK_IMAGE_ASPECT_COLOR_BIT) {}
VulkanTextureSpecVulkanTextureSpec23     VulkanTextureSpec(const VulkanTextureInfo& info)
24             : fFlags(info.fFlags)
25             , fFormat(info.fFormat)
26             , fImageTiling(info.fImageTiling)
27             , fImageUsageFlags(info.fImageUsageFlags)
28             , fSharingMode(info.fSharingMode)
29             , fAspectMask(info.fAspectMask) {}
30 
31     bool operator==(const VulkanTextureSpec& that) const {
32         return fFlags == that.fFlags &&
33                fFormat == that.fFormat &&
34                fImageTiling == that.fImageTiling &&
35                fImageUsageFlags == that.fImageUsageFlags &&
36                fSharingMode == that.fSharingMode &&
37                fAspectMask == that.fAspectMask;
38     }
39 
40     VkImageCreateFlags       fFlags;
41     VkFormat                 fFormat;
42     VkImageTiling            fImageTiling;
43     VkImageUsageFlags        fImageUsageFlags;
44     VkSharingMode            fSharingMode;
45     VkImageAspectFlags       fAspectMask;
46     // GrVkYcbcrConversionInfo  fYcbcrConversionInfo;
47 };
48 
49 VulkanTextureInfo VulkanTextureSpecToTextureInfo(const VulkanTextureSpec& vkSpec,
50                                                  uint32_t sampleCount,
51                                                  Mipmapped mipmapped);
52 
53 } // namespace skgpu::graphite
54 
55 #endif // skgpu_graphite_VulkanGraphiteTypesPriv_DEFINED
56