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