@@ -72,35 +72,6 @@ sk_sp<DlImage> EmbedderExternalTextureVulkan::ResolveTexture(
7272 }
7373}
7474
75- bool IsYUVVkFormat (const VkFormat format) {
76- switch (format) {
77- case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
78- case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
79- case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:
80- case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:
81- case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:
82- case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:
83- case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
84- case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:
85- case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:
86- case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:
87- case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:
88- case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:
89- case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:
90- case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:
91- case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:
92- case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:
93- case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:
94- case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:
95- case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:
96- case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:
97- return true ;
98-
99- default :
100- return false ;
101- }
102- }
103-
10475sk_sp<DlImage> EmbedderExternalTextureVulkan::ResolveTextureSkia (
10576 int64_t texture_id,
10677 GrDirectContext* context,
@@ -122,49 +93,18 @@ sk_sp<DlImage> EmbedderExternalTextureVulkan::ResolveTextureSkia(
12293 height = texture->height ;
12394 }
12495
125- GrVkImageInfo image_info = {};
126- if (IsYUVVkFormat (static_cast <VkFormat>(texture->format ))) {
127- skgpu::VulkanYcbcrConversionInfo ycbcr_info = {
128- static_cast <VkFormat>(texture->format ),
129- 0 ,
130- VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709,
131- VK_SAMPLER_YCBCR_RANGE_ITU_FULL,
132- VK_CHROMA_LOCATION_COSITED_EVEN,
133- VK_CHROMA_LOCATION_COSITED_EVEN,
134- VK_FILTER_NEAREST,
135- false ,
136- static_cast <VkFormatFeatureFlags>(texture->format_features )};
137-
138- skgpu::VulkanAlloc alloc;
139- alloc.fMemory = reinterpret_cast <VkDeviceMemory>(texture->image_memory );
140- alloc.fOffset = 0 ;
141- alloc.fSize = texture->alloc_size ;
142-
143- image_info = {.fImage = reinterpret_cast <VkImage>(texture->image ),
144- .fAlloc = alloc,
145- .fImageTiling = VK_IMAGE_TILING_LINEAR,
146- .fImageLayout = VK_IMAGE_LAYOUT_PREINITIALIZED,
147- .fFormat = static_cast <VkFormat>(texture->format ),
148- .fImageUsageFlags = VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
149- VK_IMAGE_USAGE_TRANSFER_DST_BIT |
150- VK_IMAGE_USAGE_SAMPLED_BIT,
151- .fSampleCount = 1 ,
152- .fLevelCount = 1 ,
153- .fYcbcrConversionInfo = ycbcr_info};
154- } else {
155- image_info = {
156- .fImage = reinterpret_cast <VkImage>(texture->image ),
157- .fImageTiling = VK_IMAGE_TILING_OPTIMAL,
158- .fImageLayout = VK_IMAGE_LAYOUT_UNDEFINED,
159- .fFormat = static_cast <VkFormat>(texture->format ),
160- .fImageUsageFlags = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
161- VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
162- VK_IMAGE_USAGE_TRANSFER_DST_BIT |
163- VK_IMAGE_USAGE_SAMPLED_BIT,
164- .fSampleCount = 1 ,
165- .fLevelCount = 1 ,
166- };
167- }
96+ GrVkImageInfo image_info = {
97+ .fImage = reinterpret_cast <VkImage>(texture->image ),
98+ .fImageTiling = VK_IMAGE_TILING_OPTIMAL,
99+ .fImageLayout = VK_IMAGE_LAYOUT_UNDEFINED,
100+ .fFormat = static_cast <VkFormat>(texture->format ),
101+ .fImageUsageFlags = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
102+ VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
103+ VK_IMAGE_USAGE_TRANSFER_DST_BIT |
104+ VK_IMAGE_USAGE_SAMPLED_BIT,
105+ .fSampleCount = 1 ,
106+ .fLevelCount = 1 ,
107+ };
168108
169109 auto gr_backend_texture =
170110 GrBackendTextures::MakeVk (width, height, image_info);
0 commit comments