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