// GENERATED FILE - DO NOT EDIT. // Generated by gen_vk_format_table.py using data from vk_format_map.json // // Copyright 2020 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // vk_format_table_autogen.cpp: // Queries for full Vulkan format information based on GL format. #include "libANGLE/renderer/vulkan/vk_format_utils.h" #include "image_util/copyimage.h" #include "image_util/generatemip.h" #include "image_util/loadimage.h" using namespace angle; namespace rx { namespace vk { void Format::initialize(RendererVk *renderer, const angle::Format &angleFormat) { switch (angleFormat.id) { case angle::FormatID::A16_FLOAT: intendedGLFormat = GL_ALPHA16F_EXT; actualImageFormatID = angle::FormatID::R16_FLOAT; imageInitializerFunction = nullptr; break; case angle::FormatID::A1R5G5B5_UNORM: intendedGLFormat = GL_A1RGB5_ANGLEX; actualImageFormatID = angle::FormatID::A1R5G5B5_UNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::A1R5G5B5_UNORM; vkBufferFormatIsPacked = true; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::A2R10G10B10_SINT_VERTEX: intendedGLFormat = GL_INT_10_10_10_2_OES; actualImageFormatID = angle::FormatID::NONE; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16B16A16_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyW2XYZ10ToXYZWFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::A2R10G10B10_SNORM_VERTEX: intendedGLFormat = GL_A2_RGB10_SNORM_ANGLEX; actualImageFormatID = angle::FormatID::NONE; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16B16A16_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyW2XYZ10ToXYZWFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::A2R10G10B10_SSCALED_VERTEX: intendedGLFormat = GL_A2_RGB10_SSCALED_ANGLEX; actualImageFormatID = angle::FormatID::NONE; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16B16A16_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyW2XYZ10ToXYZWFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::A2R10G10B10_UINT_VERTEX: intendedGLFormat = GL_UNSIGNED_INT_10_10_10_2_OES; actualImageFormatID = angle::FormatID::NONE; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16B16A16_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyW2XYZ10ToXYZWFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::A2R10G10B10_UNORM_VERTEX: intendedGLFormat = GL_A2_RGB10_UNORM_ANGLEX; actualImageFormatID = angle::FormatID::NONE; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16B16A16_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyW2XYZ10ToXYZWFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::A2R10G10B10_USCALED_VERTEX: intendedGLFormat = GL_A2_RGB10_USCALED_ANGLEX; actualImageFormatID = angle::FormatID::NONE; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16B16A16_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyW2XYZ10ToXYZWFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::A32_FLOAT: intendedGLFormat = GL_ALPHA32F_EXT; actualImageFormatID = angle::FormatID::R32_FLOAT; imageInitializerFunction = nullptr; break; case angle::FormatID::A8_UNORM: intendedGLFormat = GL_ALPHA8_EXT; actualImageFormatID = angle::FormatID::R8_UNORM; imageInitializerFunction = nullptr; break; case angle::FormatID::ASTC_10x10_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR; actualImageFormatID = angle::FormatID::ASTC_10x10_SRGB_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_10x10_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_10x10_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGBA_ASTC_10x10_KHR; actualImageFormatID = angle::FormatID::ASTC_10x10_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_10x10_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_10x5_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR; actualImageFormatID = angle::FormatID::ASTC_10x5_SRGB_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_10x5_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_10x5_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGBA_ASTC_10x5_KHR; actualImageFormatID = angle::FormatID::ASTC_10x5_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_10x5_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_10x6_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR; actualImageFormatID = angle::FormatID::ASTC_10x6_SRGB_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_10x6_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_10x6_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGBA_ASTC_10x6_KHR; actualImageFormatID = angle::FormatID::ASTC_10x6_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_10x6_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_10x8_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR; actualImageFormatID = angle::FormatID::ASTC_10x8_SRGB_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_10x8_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_10x8_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGBA_ASTC_10x8_KHR; actualImageFormatID = angle::FormatID::ASTC_10x8_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_10x8_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_12x10_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR; actualImageFormatID = angle::FormatID::ASTC_12x10_SRGB_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_12x10_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_12x10_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGBA_ASTC_12x10_KHR; actualImageFormatID = angle::FormatID::ASTC_12x10_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_12x10_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_12x12_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR; actualImageFormatID = angle::FormatID::ASTC_12x12_SRGB_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_12x12_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_12x12_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGBA_ASTC_12x12_KHR; actualImageFormatID = angle::FormatID::ASTC_12x12_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_12x12_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_3x3x3_UNORM_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ASTC_3x3x3_UNORM_SRGB_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ASTC_4x3x3_UNORM_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ASTC_4x3x3_UNORM_SRGB_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ASTC_4x4_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR; actualImageFormatID = angle::FormatID::ASTC_4x4_SRGB_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_4x4_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_4x4_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGBA_ASTC_4x4_KHR; actualImageFormatID = angle::FormatID::ASTC_4x4_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_4x4_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_4x4x3_UNORM_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ASTC_4x4x3_UNORM_SRGB_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ASTC_4x4x4_UNORM_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ASTC_4x4x4_UNORM_SRGB_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ASTC_5x4_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR; actualImageFormatID = angle::FormatID::ASTC_5x4_SRGB_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_5x4_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_5x4_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGBA_ASTC_5x4_KHR; actualImageFormatID = angle::FormatID::ASTC_5x4_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_5x4_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_5x4x4_UNORM_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ASTC_5x4x4_UNORM_SRGB_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ASTC_5x5_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR; actualImageFormatID = angle::FormatID::ASTC_5x5_SRGB_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_5x5_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_5x5_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGBA_ASTC_5x5_KHR; actualImageFormatID = angle::FormatID::ASTC_5x5_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_5x5_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_5x5x4_UNORM_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ASTC_5x5x4_UNORM_SRGB_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ASTC_5x5x5_UNORM_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ASTC_5x5x5_UNORM_SRGB_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ASTC_6x5_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR; actualImageFormatID = angle::FormatID::ASTC_6x5_SRGB_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_6x5_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_6x5_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGBA_ASTC_6x5_KHR; actualImageFormatID = angle::FormatID::ASTC_6x5_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_6x5_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_6x5x5_UNORM_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ASTC_6x5x5_UNORM_SRGB_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ASTC_6x6_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR; actualImageFormatID = angle::FormatID::ASTC_6x6_SRGB_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_6x6_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_6x6_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGBA_ASTC_6x6_KHR; actualImageFormatID = angle::FormatID::ASTC_6x6_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_6x6_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_6x6x5_UNORM_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ASTC_6x6x5_UNORM_SRGB_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ASTC_6x6x6_UNORM_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ASTC_6x6x6_UNORM_SRGB_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ASTC_8x5_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR; actualImageFormatID = angle::FormatID::ASTC_8x5_SRGB_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_8x5_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_8x5_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGBA_ASTC_8x5_KHR; actualImageFormatID = angle::FormatID::ASTC_8x5_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_8x5_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_8x6_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR; actualImageFormatID = angle::FormatID::ASTC_8x6_SRGB_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_8x6_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_8x6_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGBA_ASTC_8x6_KHR; actualImageFormatID = angle::FormatID::ASTC_8x6_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_8x6_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_8x8_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR; actualImageFormatID = angle::FormatID::ASTC_8x8_SRGB_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_8x8_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ASTC_8x8_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGBA_ASTC_8x8_KHR; actualImageFormatID = angle::FormatID::ASTC_8x8_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::ASTC_8x8_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::B10G10R10A2_UNORM: intendedGLFormat = GL_BGR10_A2_ANGLEX; actualImageFormatID = angle::FormatID::B10G10R10A2_UNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::B10G10R10A2_UNORM; vkBufferFormatIsPacked = true; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::B4G4R4A4_UNORM: intendedGLFormat = GL_BGRA4_ANGLEX; actualImageFormatID = angle::FormatID::B4G4R4A4_UNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::B4G4R4A4_UNORM; vkBufferFormatIsPacked = true; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::B5G5R5A1_UNORM: intendedGLFormat = GL_BGR5_A1_ANGLEX; actualImageFormatID = angle::FormatID::B5G5R5A1_UNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::B5G5R5A1_UNORM; vkBufferFormatIsPacked = true; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::B5G6R5_UNORM: intendedGLFormat = GL_BGR565_ANGLEX; actualImageFormatID = angle::FormatID::B5G6R5_UNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::B5G6R5_UNORM; vkBufferFormatIsPacked = true; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::B8G8R8A8_TYPELESS: // This format is not implemented in Vulkan. break; case angle::FormatID::B8G8R8A8_TYPELESS_SRGB: // This format is not implemented in Vulkan. break; case angle::FormatID::B8G8R8A8_UNORM: intendedGLFormat = GL_BGRA8_EXT; actualImageFormatID = angle::FormatID::B8G8R8A8_UNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::B8G8R8A8_UNORM; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::B8G8R8A8_UNORM_SRGB: intendedGLFormat = GL_BGRA8_SRGB_ANGLEX; actualImageFormatID = angle::FormatID::B8G8R8A8_UNORM_SRGB; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::B8G8R8A8_UNORM_SRGB; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::B8G8R8X8_UNORM: intendedGLFormat = GL_BGRX8_ANGLEX; actualImageFormatID = angle::FormatID::B8G8R8A8_UNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::NONE; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = true; break; case angle::FormatID::BC1_RGBA_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; actualImageFormatID = angle::FormatID::BC1_RGBA_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::BC1_RGBA_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::BC1_RGBA_UNORM_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT; actualImageFormatID = angle::FormatID::BC1_RGBA_UNORM_SRGB_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::BC1_RGBA_UNORM_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::BC1_RGB_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGB_S3TC_DXT1_EXT; actualImageFormatID = angle::FormatID::BC1_RGB_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::BC1_RGB_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::BC1_RGB_UNORM_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB_S3TC_DXT1_EXT; actualImageFormatID = angle::FormatID::BC1_RGB_UNORM_SRGB_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::BC1_RGB_UNORM_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::BC2_RGBA_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE; actualImageFormatID = angle::FormatID::BC2_RGBA_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::BC2_RGBA_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::BC2_RGBA_UNORM_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT; actualImageFormatID = angle::FormatID::BC2_RGBA_UNORM_SRGB_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::BC2_RGBA_UNORM_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::BC3_RGBA_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE; actualImageFormatID = angle::FormatID::BC3_RGBA_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::BC3_RGBA_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::BC3_RGBA_UNORM_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT; actualImageFormatID = angle::FormatID::BC3_RGBA_UNORM_SRGB_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::BC3_RGBA_UNORM_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::BC4_RED_SNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_SIGNED_RED_RGTC1_EXT; actualImageFormatID = angle::FormatID::BC4_RED_SNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::BC4_RED_SNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::BC4_RED_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RED_RGTC1_EXT; actualImageFormatID = angle::FormatID::BC4_RED_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::BC4_RED_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::BC5_RG_SNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT; actualImageFormatID = angle::FormatID::BC5_RG_SNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::BC5_RG_SNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::BC5_RG_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RED_GREEN_RGTC2_EXT; actualImageFormatID = angle::FormatID::BC5_RG_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::BC5_RG_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::BC6H_RGB_SFLOAT_BLOCK: intendedGLFormat = GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT; actualImageFormatID = angle::FormatID::BC6H_RGB_SFLOAT_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::BC6H_RGB_SFLOAT_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::BC6H_RGB_UFLOAT_BLOCK: intendedGLFormat = GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT; actualImageFormatID = angle::FormatID::BC6H_RGB_UFLOAT_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::BC6H_RGB_UFLOAT_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::BC7_RGBA_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGBA_BPTC_UNORM_EXT; actualImageFormatID = angle::FormatID::BC7_RGBA_UNORM_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::BC7_RGBA_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::BC7_RGBA_UNORM_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT; actualImageFormatID = angle::FormatID::BC7_RGBA_UNORM_SRGB_BLOCK; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::BC7_RGBA_UNORM_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::D16_UNORM: intendedGLFormat = GL_DEPTH_COMPONENT16; actualImageFormatID = angle::FormatID::D16_UNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::D16_UNORM; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::D24_UNORM_S8_UINT: intendedGLFormat = GL_DEPTH24_STENCIL8; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::D24_UNORM_S8_UINT, nullptr}, {angle::FormatID::D32_FLOAT_S8X24_UINT, nullptr}, {angle::FormatID::D24_UNORM_S8_UINT, nullptr}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::D24_UNORM_S8_UINT; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::D24_UNORM_X8_UINT: intendedGLFormat = GL_DEPTH_COMPONENT24; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::D24_UNORM_X8_UINT, nullptr}, {angle::FormatID::D24_UNORM_S8_UINT, nullptr}, {angle::FormatID::D32_FLOAT_S8X24_UINT, nullptr}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::D24_UNORM_X8_UINT; vkBufferFormatIsPacked = true; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::D32_FLOAT: intendedGLFormat = GL_DEPTH_COMPONENT32F; actualImageFormatID = angle::FormatID::D32_FLOAT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::D32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::D32_FLOAT_S8X24_UINT: intendedGLFormat = GL_DEPTH32F_STENCIL8; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::D32_FLOAT_S8X24_UINT, nullptr}, {angle::FormatID::D24_UNORM_S8_UINT, nullptr}, {angle::FormatID::D32_FLOAT_S8X24_UINT, nullptr}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::D32_FLOAT_S8X24_UINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::D32_UNORM: intendedGLFormat = GL_DEPTH_COMPONENT32_OES; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::D24_UNORM_S8_UINT, nullptr}, {angle::FormatID::D32_FLOAT, nullptr}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::NONE; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = true; break; case angle::FormatID::EAC_R11G11_SNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_SIGNED_RG11_EAC; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::EAC_R11G11_SNORM_BLOCK, nullptr}, {angle::FormatID::R16G16_SNORM, nullptr}, {angle::FormatID::R16G16_FLOAT, nullptr}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::EAC_R11G11_SNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::EAC_R11G11_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RG11_EAC; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::EAC_R11G11_UNORM_BLOCK, nullptr}, {angle::FormatID::R16G16_UNORM, nullptr}, {angle::FormatID::R16G16_FLOAT, nullptr}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::EAC_R11G11_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::EAC_R11_SNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_SIGNED_R11_EAC; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::EAC_R11_SNORM_BLOCK, nullptr}, {angle::FormatID::R16_SNORM, nullptr}, {angle::FormatID::R16_FLOAT, nullptr}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::EAC_R11_SNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::EAC_R11_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_R11_EAC; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::EAC_R11_UNORM_BLOCK, nullptr}, {angle::FormatID::R16_UNORM, nullptr}, {angle::FormatID::R16_FLOAT, nullptr}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::EAC_R11_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::ETC1_LOSSY_DECODE_R8G8B8_UNORM_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::ETC1_R8G8B8_UNORM_BLOCK: intendedGLFormat = GL_ETC1_RGB8_OES; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::ETC2_R8G8B8_UNORM_BLOCK, nullptr}, {angle::FormatID::R8G8B8A8_UNORM, Initialize4ComponentData}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::NONE; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = true; break; case angle::FormatID::ETC2_R8G8B8A1_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::ETC2_R8G8B8A1_SRGB_BLOCK, nullptr}, {angle::FormatID::R8G8B8A8_UNORM_SRGB, nullptr}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::ETC2_R8G8B8A1_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::ETC2_R8G8B8A1_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::ETC2_R8G8B8A1_UNORM_BLOCK, Initialize4ComponentData}, {angle::FormatID::R8G8B8A8_UNORM, Initialize4ComponentData}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::ETC2_R8G8B8A1_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::ETC2_R8G8B8A8_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::ETC2_R8G8B8A8_SRGB_BLOCK, nullptr}, {angle::FormatID::R8G8B8A8_UNORM_SRGB, nullptr}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::ETC2_R8G8B8A8_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::ETC2_R8G8B8A8_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGBA8_ETC2_EAC; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::ETC2_R8G8B8A8_UNORM_BLOCK, nullptr}, {angle::FormatID::R8G8B8A8_UNORM, nullptr}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::ETC2_R8G8B8A8_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::ETC2_R8G8B8_SRGB_BLOCK: intendedGLFormat = GL_COMPRESSED_SRGB8_ETC2; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::ETC2_R8G8B8_SRGB_BLOCK, nullptr}, {angle::FormatID::R8G8B8A8_UNORM_SRGB, Initialize4ComponentData}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::ETC2_R8G8B8_SRGB_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::ETC2_R8G8B8_UNORM_BLOCK: intendedGLFormat = GL_COMPRESSED_RGB8_ETC2; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::ETC2_R8G8B8_UNORM_BLOCK, nullptr}, {angle::FormatID::R8G8B8A8_UNORM, Initialize4ComponentData}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::ETC2_R8G8B8_UNORM_BLOCK; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::G8_B8R8_2PLANE_420_UNORM: intendedGLFormat = GL_G8_B8R8_2PLANE_420_UNORM_ANGLE; actualImageFormatID = angle::FormatID::G8_B8R8_2PLANE_420_UNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::G8_B8R8_2PLANE_420_UNORM; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::G8_B8_R8_3PLANE_420_UNORM: intendedGLFormat = GL_G8_B8_R8_3PLANE_420_UNORM_ANGLE; actualImageFormatID = angle::FormatID::G8_B8_R8_3PLANE_420_UNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::G8_B8_R8_3PLANE_420_UNORM; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::L16A16_FLOAT: intendedGLFormat = GL_LUMINANCE_ALPHA16F_EXT; actualImageFormatID = angle::FormatID::R16G16_FLOAT; imageInitializerFunction = nullptr; break; case angle::FormatID::L16_FLOAT: intendedGLFormat = GL_LUMINANCE16F_EXT; actualImageFormatID = angle::FormatID::R16_FLOAT; imageInitializerFunction = nullptr; break; case angle::FormatID::L32A32_FLOAT: intendedGLFormat = GL_LUMINANCE_ALPHA32F_EXT; actualImageFormatID = angle::FormatID::R32G32_FLOAT; imageInitializerFunction = nullptr; break; case angle::FormatID::L32_FLOAT: intendedGLFormat = GL_LUMINANCE32F_EXT; actualImageFormatID = angle::FormatID::R32_FLOAT; imageInitializerFunction = nullptr; break; case angle::FormatID::L8A8_UNORM: intendedGLFormat = GL_LUMINANCE8_ALPHA8_EXT; actualImageFormatID = angle::FormatID::R8G8_UNORM; imageInitializerFunction = nullptr; break; case angle::FormatID::L8_UNORM: intendedGLFormat = GL_LUMINANCE8_EXT; actualImageFormatID = angle::FormatID::R8_UNORM; imageInitializerFunction = nullptr; break; case angle::FormatID::NONE: intendedGLFormat = GL_NONE; actualImageFormatID = angle::FormatID::NONE; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::NONE; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::PVRTC1_RGBA_2BPP_UNORM_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::PVRTC1_RGBA_2BPP_UNORM_SRGB_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::PVRTC1_RGBA_4BPP_UNORM_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::PVRTC1_RGBA_4BPP_UNORM_SRGB_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::PVRTC1_RGB_2BPP_UNORM_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::PVRTC1_RGB_2BPP_UNORM_SRGB_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::PVRTC1_RGB_4BPP_UNORM_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::PVRTC1_RGB_4BPP_UNORM_SRGB_BLOCK: // This format is not implemented in Vulkan. break; case angle::FormatID::R10G10B10A2_SINT: intendedGLFormat = GL_RGB10_A2_SINT_ANGLEX; actualImageFormatID = angle::FormatID::R10G10B10A2_SINT; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R10G10B10A2_SINT, true, CopyNativeVertexData, false}, {angle::FormatID::R16G16B16A16_SINT, false, CopyXYZ10W2ToXYZWFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R10G10B10A2_SNORM: intendedGLFormat = GL_RGB10_A2_SNORM_ANGLEX; actualImageFormatID = angle::FormatID::R10G10B10A2_SNORM; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R10G10B10A2_SNORM, true, CopyNativeVertexData, false}, {angle::FormatID::R16G16B16A16_FLOAT, false, CopyXYZ10W2ToXYZWFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R10G10B10A2_SSCALED: intendedGLFormat = GL_RGB10_A2_SSCALED_ANGLEX; actualImageFormatID = angle::FormatID::R10G10B10A2_SSCALED; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R10G10B10A2_SSCALED, true, CopyNativeVertexData, false}, {angle::FormatID::R16G16B16A16_FLOAT, false, CopyXYZ10W2ToXYZWFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R10G10B10A2_UINT: intendedGLFormat = GL_RGB10_A2UI; actualImageFormatID = angle::FormatID::R10G10B10A2_UINT; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R10G10B10A2_UINT, true, CopyNativeVertexData, false}, {angle::FormatID::R16G16B16A16_UINT, false, CopyXYZ10W2ToXYZWFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R10G10B10A2_UNORM: intendedGLFormat = GL_RGB10_A2; actualImageFormatID = angle::FormatID::R10G10B10A2_UNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R10G10B10A2_UNORM; vkBufferFormatIsPacked = true; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R10G10B10A2_USCALED: intendedGLFormat = GL_RGB10_A2_USCALED_ANGLEX; actualImageFormatID = angle::FormatID::R10G10B10A2_USCALED; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R10G10B10A2_USCALED, true, CopyNativeVertexData, false}, {angle::FormatID::R16G16B16A16_FLOAT, false, CopyXYZ10W2ToXYZWFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R10G10B10X2_UNORM: intendedGLFormat = GL_RGB10_UNORM_ANGLEX; actualImageFormatID = angle::FormatID::R10G10B10A2_UNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::NONE; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = true; break; case angle::FormatID::R11G11B10_FLOAT: intendedGLFormat = GL_R11F_G11F_B10F; actualImageFormatID = angle::FormatID::R11G11B10_FLOAT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R11G11B10_FLOAT; vkBufferFormatIsPacked = true; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R16G16B16A16_FLOAT: intendedGLFormat = GL_RGBA16F; actualImageFormatID = angle::FormatID::R16G16B16A16_FLOAT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16B16A16_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R16G16B16A16_SINT: intendedGLFormat = GL_RGBA16I; actualImageFormatID = angle::FormatID::R16G16B16A16_SINT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16B16A16_SINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R16G16B16A16_SNORM: intendedGLFormat = GL_RGBA16_SNORM_EXT; actualImageFormatID = angle::FormatID::R16G16B16A16_SNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16B16A16_SNORM; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R16G16B16A16_SSCALED: intendedGLFormat = GL_RGBA16_SSCALED_ANGLEX; actualImageFormatID = angle::FormatID::R16G16B16A16_SSCALED; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R16G16B16A16_SSCALED, false, CopyNativeVertexData, false}, {angle::FormatID::R32G32B32A32_FLOAT, false, CopyToFloatVertexData, true}, {angle::FormatID::R16G16B16A16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R16G16B16A16_UINT: intendedGLFormat = GL_RGBA16UI; actualImageFormatID = angle::FormatID::R16G16B16A16_UINT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16B16A16_UINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R16G16B16A16_UNORM: intendedGLFormat = GL_RGBA16_EXT; actualImageFormatID = angle::FormatID::R16G16B16A16_UNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16B16A16_UNORM; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R16G16B16A16_USCALED: intendedGLFormat = GL_RGBA16_USCALED_ANGLEX; actualImageFormatID = angle::FormatID::R16G16B16A16_USCALED; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R16G16B16A16_USCALED, false, CopyNativeVertexData, false}, {angle::FormatID::R32G32B32A32_FLOAT, false, CopyToFloatVertexData, true}, {angle::FormatID::R16G16B16A16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R16G16B16_FLOAT: intendedGLFormat = GL_RGB16F; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::R16G16B16_FLOAT, nullptr}, {angle::FormatID::R16G16B16A16_FLOAT, Initialize4ComponentData}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R16G16B16_FLOAT, false, CopyNativeVertexData, false}, {angle::FormatID::R16G16B16A16_FLOAT, false, CopyNativeVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R16G16B16_SINT: intendedGLFormat = GL_RGB16I; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::R16G16B16_SINT, nullptr}, {angle::FormatID::R16G16B16A16_SINT, Initialize4ComponentData}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R16G16B16_SINT, false, CopyNativeVertexData, false}, {angle::FormatID::R16G16B16A16_SINT, false, CopyNativeVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R16G16B16_SNORM: intendedGLFormat = GL_RGB16_SNORM_EXT; actualImageFormatID = angle::FormatID::R16G16B16_SNORM; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R16G16B16_SNORM, false, CopyNativeVertexData, false}, {angle::FormatID::R32G32B32_FLOAT, false, CopyToFloatVertexData, true}, {angle::FormatID::R16G16B16_FLOAT, false, CopyToFloatVertexData, true}, {angle::FormatID::R16G16B16A16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R16G16B16_SSCALED: intendedGLFormat = GL_RGB16_SSCALED_ANGLEX; actualImageFormatID = angle::FormatID::R16G16B16_SSCALED; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R16G16B16_SSCALED, false, CopyNativeVertexData, false}, {angle::FormatID::R32G32B32_FLOAT, false, CopyToFloatVertexData, true}, {angle::FormatID::R16G16B16_FLOAT, false, CopyToFloatVertexData, true}, {angle::FormatID::R16G16B16A16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R16G16B16_UINT: intendedGLFormat = GL_RGB16UI; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::R16G16B16_UINT, nullptr}, {angle::FormatID::R16G16B16A16_UINT, Initialize4ComponentData}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R16G16B16_UINT, false, CopyNativeVertexData, false}, {angle::FormatID::R16G16B16A16_UINT, false, CopyNativeVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R16G16B16_UNORM: intendedGLFormat = GL_RGB16_EXT; actualImageFormatID = angle::FormatID::R16G16B16_UNORM; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R16G16B16_UNORM, false, CopyNativeVertexData, false}, {angle::FormatID::R32G32B32_FLOAT, false, CopyToFloatVertexData, true}, {angle::FormatID::R16G16B16_FLOAT, false, CopyToFloatVertexData, true}, {angle::FormatID::R16G16B16A16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R16G16B16_USCALED: intendedGLFormat = GL_RGB16_USCALED_ANGLEX; actualImageFormatID = angle::FormatID::R16G16B16_USCALED; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R16G16B16_USCALED, false, CopyNativeVertexData, false}, {angle::FormatID::R32G32B32_FLOAT, false, CopyToFloatVertexData, true}, {angle::FormatID::R16G16B16_FLOAT, false, CopyToFloatVertexData, true}, {angle::FormatID::R16G16B16A16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R16G16_FLOAT: intendedGLFormat = GL_RG16F; actualImageFormatID = angle::FormatID::R16G16_FLOAT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R16G16_SINT: intendedGLFormat = GL_RG16I; actualImageFormatID = angle::FormatID::R16G16_SINT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16_SINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R16G16_SNORM: intendedGLFormat = GL_RG16_SNORM_EXT; actualImageFormatID = angle::FormatID::R16G16_SNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16_SNORM; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R16G16_SSCALED: intendedGLFormat = GL_RG16_SSCALED_ANGLEX; actualImageFormatID = angle::FormatID::R16G16_SSCALED; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R16G16_SSCALED, false, CopyNativeVertexData, false}, {angle::FormatID::R32G32_FLOAT, false, CopyToFloatVertexData, true}, {angle::FormatID::R16G16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R16G16_UINT: intendedGLFormat = GL_RG16UI; actualImageFormatID = angle::FormatID::R16G16_UINT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16_UINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R16G16_UNORM: intendedGLFormat = GL_RG16_EXT; actualImageFormatID = angle::FormatID::R16G16_UNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16_UNORM; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R16G16_USCALED: intendedGLFormat = GL_RG16_USCALED_ANGLEX; actualImageFormatID = angle::FormatID::R16G16_USCALED; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R16G16_USCALED, false, CopyNativeVertexData, false}, {angle::FormatID::R32G32_FLOAT, false, CopyToFloatVertexData, true}, {angle::FormatID::R16G16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R16_FLOAT: intendedGLFormat = GL_R16F; actualImageFormatID = angle::FormatID::R16_FLOAT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R16_SINT: intendedGLFormat = GL_R16I; actualImageFormatID = angle::FormatID::R16_SINT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16_SINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R16_SNORM: intendedGLFormat = GL_R16_SNORM_EXT; actualImageFormatID = angle::FormatID::R16_SNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16_SNORM; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R16_SSCALED: intendedGLFormat = GL_R16_SSCALED_ANGLEX; actualImageFormatID = angle::FormatID::R16_SSCALED; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R16_SSCALED, false, CopyNativeVertexData, false}, {angle::FormatID::R32_FLOAT, false, CopyToFloatVertexData, true}, {angle::FormatID::R16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R16_UINT: intendedGLFormat = GL_R16UI; actualImageFormatID = angle::FormatID::R16_UINT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16_UINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R16_UNORM: intendedGLFormat = GL_R16_EXT; actualImageFormatID = angle::FormatID::R16_UNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16_UNORM; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R16_USCALED: intendedGLFormat = GL_R16_USCALED_ANGLEX; actualImageFormatID = angle::FormatID::R16_USCALED; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R16_USCALED, false, CopyNativeVertexData, false}, {angle::FormatID::R32_FLOAT, false, CopyToFloatVertexData, true}, {angle::FormatID::R16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R32G32B32A32_FIXED: intendedGLFormat = GL_RGBA32_FIXED_ANGLEX; actualBufferFormatID = angle::FormatID::R32G32B32A32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = Copy32FixedTo32FVertexData<4, 4>; vertexLoadRequiresConversion = true; break; case angle::FormatID::R32G32B32A32_FLOAT: intendedGLFormat = GL_RGBA32F; actualImageFormatID = angle::FormatID::R32G32B32A32_FLOAT; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R32G32B32A32_FLOAT, false, CopyNativeVertexData, false}, {angle::FormatID::R16G16B16A16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 1); } break; case angle::FormatID::R32G32B32A32_SINT: intendedGLFormat = GL_RGBA32I; actualImageFormatID = angle::FormatID::R32G32B32A32_SINT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R32G32B32A32_SINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R32G32B32A32_SNORM: intendedGLFormat = GL_RGBA32_SNORM_ANGLEX; actualBufferFormatID = angle::FormatID::R32G32B32A32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyToFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::R32G32B32A32_SSCALED: intendedGLFormat = GL_RGBA32_SSCALED_ANGLEX; actualBufferFormatID = angle::FormatID::R32G32B32A32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyToFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::R32G32B32A32_UINT: intendedGLFormat = GL_RGBA32UI; actualImageFormatID = angle::FormatID::R32G32B32A32_UINT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R32G32B32A32_UINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R32G32B32A32_UNORM: intendedGLFormat = GL_RGBA32_UNORM_ANGLEX; actualBufferFormatID = angle::FormatID::R32G32B32A32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyToFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::R32G32B32A32_USCALED: intendedGLFormat = GL_RGBA32_USCALED_ANGLEX; actualBufferFormatID = angle::FormatID::R32G32B32A32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyToFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::R32G32B32_FIXED: intendedGLFormat = GL_RGB32_FIXED_ANGLEX; actualBufferFormatID = angle::FormatID::R32G32B32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = Copy32FixedTo32FVertexData<3, 3>; vertexLoadRequiresConversion = true; break; case angle::FormatID::R32G32B32_FLOAT: intendedGLFormat = GL_RGB32F; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::R32G32B32_FLOAT, nullptr}, {angle::FormatID::R32G32B32A32_FLOAT, Initialize4ComponentData}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R32G32B32_FLOAT, false, CopyNativeVertexData, false}, {angle::FormatID::R16G16B16_FLOAT, false, CopyToFloatVertexData, true}, {angle::FormatID::R16G16B16A16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 1); } break; case angle::FormatID::R32G32B32_SINT: intendedGLFormat = GL_RGB32I; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::R32G32B32_SINT, nullptr}, {angle::FormatID::R32G32B32A32_SINT, Initialize4ComponentData}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::R32G32B32_SINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R32G32B32_SNORM: intendedGLFormat = GL_RGB32_SNORM_ANGLEX; actualBufferFormatID = angle::FormatID::R32G32B32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyToFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::R32G32B32_SSCALED: intendedGLFormat = GL_RGB32_SSCALED_ANGLEX; actualBufferFormatID = angle::FormatID::R32G32B32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyToFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::R32G32B32_UINT: intendedGLFormat = GL_RGB32UI; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::R32G32B32_UINT, nullptr}, {angle::FormatID::R32G32B32A32_UINT, Initialize4ComponentData}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::R32G32B32_UINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R32G32B32_UNORM: intendedGLFormat = GL_RGB32_UNORM_ANGLEX; actualBufferFormatID = angle::FormatID::R32G32B32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyToFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::R32G32B32_USCALED: intendedGLFormat = GL_RGB32_USCALED_ANGLEX; actualBufferFormatID = angle::FormatID::R32G32B32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyToFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::R32G32_FIXED: intendedGLFormat = GL_RG32_FIXED_ANGLEX; actualBufferFormatID = angle::FormatID::R32G32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = Copy32FixedTo32FVertexData<2, 2>; vertexLoadRequiresConversion = true; break; case angle::FormatID::R32G32_FLOAT: intendedGLFormat = GL_RG32F; actualImageFormatID = angle::FormatID::R32G32_FLOAT; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R32G32_FLOAT, false, CopyNativeVertexData, false}, {angle::FormatID::R16G16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 1); } break; case angle::FormatID::R32G32_SINT: intendedGLFormat = GL_RG32I; actualImageFormatID = angle::FormatID::R32G32_SINT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R32G32_SINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R32G32_SNORM: intendedGLFormat = GL_RG32_SNORM_ANGLEX; actualBufferFormatID = angle::FormatID::R32G32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyToFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::R32G32_SSCALED: intendedGLFormat = GL_RG32_SSCALED_ANGLEX; actualBufferFormatID = angle::FormatID::R32G32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyToFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::R32G32_UINT: intendedGLFormat = GL_RG32UI; actualImageFormatID = angle::FormatID::R32G32_UINT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R32G32_UINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R32G32_UNORM: intendedGLFormat = GL_RG32_UNORM_ANGLEX; actualBufferFormatID = angle::FormatID::R32G32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyToFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::R32G32_USCALED: intendedGLFormat = GL_RG32_USCALED_ANGLEX; actualBufferFormatID = angle::FormatID::R32G32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyToFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::R32_FIXED: intendedGLFormat = GL_R32_FIXED_ANGLEX; actualBufferFormatID = angle::FormatID::R32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = Copy32FixedTo32FVertexData<1, 1>; vertexLoadRequiresConversion = true; break; case angle::FormatID::R32_FLOAT: intendedGLFormat = GL_R32F; actualImageFormatID = angle::FormatID::R32_FLOAT; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R32_FLOAT, false, CopyNativeVertexData, false}, {angle::FormatID::R16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 1); } break; case angle::FormatID::R32_SINT: intendedGLFormat = GL_R32I; actualImageFormatID = angle::FormatID::R32_SINT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R32_SINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R32_SNORM: intendedGLFormat = GL_R32_SNORM_ANGLEX; actualBufferFormatID = angle::FormatID::R32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyToFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::R32_SSCALED: intendedGLFormat = GL_R32_SSCALED_ANGLEX; actualBufferFormatID = angle::FormatID::R32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyToFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::R32_UINT: intendedGLFormat = GL_R32UI; actualImageFormatID = angle::FormatID::R32_UINT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R32_UINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R32_UNORM: intendedGLFormat = GL_R32_UNORM_ANGLEX; actualBufferFormatID = angle::FormatID::R32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyToFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::R32_USCALED: intendedGLFormat = GL_R32_USCALED_ANGLEX; actualBufferFormatID = angle::FormatID::R32_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyToFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::R4G4B4A4_UNORM: intendedGLFormat = GL_RGBA4; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::R4G4B4A4_UNORM, nullptr}, {angle::FormatID::R8G8B8A8_UNORM, nullptr}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::R4G4B4A4_UNORM; vkBufferFormatIsPacked = true; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R5G5B5A1_UNORM: intendedGLFormat = GL_RGB5_A1; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::R5G5B5A1_UNORM, nullptr}, {angle::FormatID::A1R5G5B5_UNORM, nullptr}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::R5G5B5A1_UNORM; vkBufferFormatIsPacked = true; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R5G6B5_UNORM: intendedGLFormat = GL_RGB565; actualImageFormatID = angle::FormatID::R5G6B5_UNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R5G6B5_UNORM; vkBufferFormatIsPacked = true; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R8G8B8A8_SINT: intendedGLFormat = GL_RGBA8I; actualImageFormatID = angle::FormatID::R8G8B8A8_SINT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R8G8B8A8_SINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R8G8B8A8_SNORM: intendedGLFormat = GL_RGBA8_SNORM; actualImageFormatID = angle::FormatID::R8G8B8A8_SNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R8G8B8A8_SNORM; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R8G8B8A8_SSCALED: intendedGLFormat = GL_RGBA8_SSCALED_ANGLEX; actualImageFormatID = angle::FormatID::R8G8B8A8_SSCALED; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R8G8B8A8_SSCALED, false, CopyNativeVertexData, false}, {angle::FormatID::R16G16B16A16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R8G8B8A8_TYPELESS: // This format is not implemented in Vulkan. break; case angle::FormatID::R8G8B8A8_TYPELESS_SRGB: // This format is not implemented in Vulkan. break; case angle::FormatID::R8G8B8A8_UINT: intendedGLFormat = GL_RGBA8UI; actualImageFormatID = angle::FormatID::R8G8B8A8_UINT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R8G8B8A8_UINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R8G8B8A8_UNORM: intendedGLFormat = GL_RGBA8; actualImageFormatID = angle::FormatID::R8G8B8A8_UNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R8G8B8A8_UNORM; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R8G8B8A8_UNORM_SRGB: intendedGLFormat = GL_SRGB8_ALPHA8; actualImageFormatID = angle::FormatID::R8G8B8A8_UNORM_SRGB; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R8G8B8A8_UNORM_SRGB; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R8G8B8A8_USCALED: intendedGLFormat = GL_RGBA8_USCALED_ANGLEX; actualImageFormatID = angle::FormatID::R8G8B8A8_USCALED; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R8G8B8A8_USCALED, false, CopyNativeVertexData, false}, {angle::FormatID::R16G16B16A16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R8G8B8_SINT: intendedGLFormat = GL_RGB8I; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::R8G8B8_SINT, nullptr}, {angle::FormatID::R8G8B8A8_SINT, Initialize4ComponentData}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R8G8B8_SINT, false, CopyNativeVertexData, false}, {angle::FormatID::R8G8B8A8_SINT, false, CopyNativeVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R8G8B8_SNORM: intendedGLFormat = GL_RGB8_SNORM; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::R8G8B8_SNORM, nullptr}, {angle::FormatID::R8G8B8A8_SNORM, Initialize4ComponentData}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R8G8B8_SNORM, false, CopyNativeVertexData, false}, {angle::FormatID::R8G8B8A8_SNORM, false, CopyNativeVertexData::max()>, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R8G8B8_SSCALED: intendedGLFormat = GL_RGB8_SSCALED_ANGLEX; actualImageFormatID = angle::FormatID::R8G8B8_SSCALED; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R8G8B8_SSCALED, false, CopyNativeVertexData, false}, {angle::FormatID::R16G16B16_FLOAT, false, CopyToFloatVertexData, true}, {angle::FormatID::R16G16B16A16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 3); } break; case angle::FormatID::R8G8B8_UINT: intendedGLFormat = GL_RGB8UI; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::R8G8B8_UINT, nullptr}, {angle::FormatID::R8G8B8A8_UINT, Initialize4ComponentData}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R8G8B8_UINT, false, CopyNativeVertexData, false}, {angle::FormatID::R8G8B8A8_UINT, false, CopyNativeVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R8G8B8_UNORM: intendedGLFormat = GL_RGB8; actualImageFormatID = angle::FormatID::R8G8B8A8_UNORM; imageInitializerFunction = Initialize4ComponentData; actualBufferFormatID = angle::FormatID::R8G8B8A8_UNORM; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData::max()>; vertexLoadRequiresConversion = true; break; case angle::FormatID::R8G8B8_UNORM_SRGB: intendedGLFormat = GL_SRGB8; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::R8G8B8_UNORM_SRGB, nullptr}, {angle::FormatID::R8G8B8A8_UNORM_SRGB, Initialize4ComponentData}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::R8G8B8_UNORM_SRGB; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R8G8B8_USCALED: intendedGLFormat = GL_RGB8_USCALED_ANGLEX; actualImageFormatID = angle::FormatID::R8G8B8_USCALED; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R8G8B8_USCALED, false, CopyNativeVertexData, false}, {angle::FormatID::R16G16B16_FLOAT, false, CopyToFloatVertexData, true}, {angle::FormatID::R16G16B16A16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 3); } break; case angle::FormatID::R8G8_SINT: intendedGLFormat = GL_RG8I; actualImageFormatID = angle::FormatID::R8G8_SINT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R8G8_SINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R8G8_SNORM: intendedGLFormat = GL_RG8_SNORM; actualImageFormatID = angle::FormatID::R8G8_SNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R8G8_SNORM; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R8G8_SSCALED: intendedGLFormat = GL_RG8_SSCALED_ANGLEX; actualImageFormatID = angle::FormatID::R8G8_SSCALED; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R8G8_SSCALED, false, CopyNativeVertexData, false}, {angle::FormatID::R16G16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R8G8_UINT: intendedGLFormat = GL_RG8UI; actualImageFormatID = angle::FormatID::R8G8_UINT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R8G8_UINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R8G8_UNORM: intendedGLFormat = GL_RG8; actualImageFormatID = angle::FormatID::R8G8_UNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R8G8_UNORM; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R8G8_UNORM_SRGB: intendedGLFormat = GL_SRG8_EXT; actualImageFormatID = angle::FormatID::R8G8_UNORM_SRGB; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R8G8_UNORM_SRGB; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R8G8_USCALED: intendedGLFormat = GL_RG8_USCALED_ANGLEX; actualImageFormatID = angle::FormatID::R8G8_USCALED; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R8G8_USCALED, false, CopyNativeVertexData, false}, {angle::FormatID::R16G16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R8_SINT: intendedGLFormat = GL_R8I; actualImageFormatID = angle::FormatID::R8_SINT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R8_SINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R8_SNORM: intendedGLFormat = GL_R8_SNORM; actualImageFormatID = angle::FormatID::R8_SNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R8_SNORM; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R8_SSCALED: intendedGLFormat = GL_R8_SSCALED_ANGLEX; actualImageFormatID = angle::FormatID::R8_SSCALED; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R8_SSCALED, false, CopyNativeVertexData, false}, {angle::FormatID::R16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R8_UINT: intendedGLFormat = GL_R8UI; actualImageFormatID = angle::FormatID::R8_UINT; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R8_UINT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R8_UNORM: intendedGLFormat = GL_R8; actualImageFormatID = angle::FormatID::R8_UNORM; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R8_UNORM; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R8_UNORM_SRGB: intendedGLFormat = GL_SR8_EXT; actualImageFormatID = angle::FormatID::R8_UNORM_SRGB; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R8_UNORM_SRGB; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::R8_USCALED: intendedGLFormat = GL_R8_USCALED_ANGLEX; actualImageFormatID = angle::FormatID::R8_USCALED; imageInitializerFunction = nullptr; { static constexpr BufferFormatInitInfo kInfo[] = { {angle::FormatID::R8_USCALED, false, CopyNativeVertexData, false}, {angle::FormatID::R16_FLOAT, false, CopyToFloatVertexData, true}}; initBufferFallback(renderer, kInfo, ArraySize(kInfo), 2); } break; case angle::FormatID::R9G9B9E5_SHAREDEXP: intendedGLFormat = GL_RGB9_E5; actualImageFormatID = angle::FormatID::R9G9B9E5_SHAREDEXP; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R9G9B9E5_SHAREDEXP; vkBufferFormatIsPacked = true; vertexLoadFunction = CopyNativeVertexData; vertexLoadRequiresConversion = false; break; case angle::FormatID::S8_UINT: intendedGLFormat = GL_STENCIL_INDEX8; { static constexpr ImageFormatInitInfo kInfo[] = { {angle::FormatID::S8_UINT, nullptr}, {angle::FormatID::D24_UNORM_S8_UINT, nullptr}, {angle::FormatID::D32_FLOAT_S8X24_UINT, nullptr}, {angle::FormatID::S8_UINT, nullptr}}; initImageFallback(renderer, kInfo, ArraySize(kInfo)); } actualBufferFormatID = angle::FormatID::S8_UINT; vkBufferFormatIsPacked = false; vertexLoadFunction = nullptr; vertexLoadRequiresConversion = false; break; case angle::FormatID::X2R10G10B10_SINT_VERTEX: intendedGLFormat = GL_X2_RGB10_SINT_ANGLEX; actualImageFormatID = angle::FormatID::NONE; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16B16A16_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyXYZ10ToXYZWFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::X2R10G10B10_SNORM_VERTEX: intendedGLFormat = GL_X2_RGB10_SNORM_ANGLEX; actualImageFormatID = angle::FormatID::NONE; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16B16A16_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyXYZ10ToXYZWFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::X2R10G10B10_SSCALED_VERTEX: intendedGLFormat = GL_X2_RGB10_SSCALED_ANGLEX; actualImageFormatID = angle::FormatID::NONE; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16B16A16_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyXYZ10ToXYZWFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::X2R10G10B10_UINT_VERTEX: intendedGLFormat = GL_X2_RGB10_UINT_ANGLEX; actualImageFormatID = angle::FormatID::NONE; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16B16A16_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyXYZ10ToXYZWFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::X2R10G10B10_UNORM_VERTEX: intendedGLFormat = GL_X2_RGB10_UNORM_ANGLEX; actualImageFormatID = angle::FormatID::NONE; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16B16A16_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyXYZ10ToXYZWFloatVertexData; vertexLoadRequiresConversion = true; break; case angle::FormatID::X2R10G10B10_USCALED_VERTEX: intendedGLFormat = GL_X2_RGB10_USCALED_ANGLEX; actualImageFormatID = angle::FormatID::NONE; imageInitializerFunction = nullptr; actualBufferFormatID = angle::FormatID::R16G16B16A16_FLOAT; vkBufferFormatIsPacked = false; vertexLoadFunction = CopyXYZ10ToXYZWFloatVertexData; vertexLoadRequiresConversion = true; break; default: UNREACHABLE(); break; } } VkFormat GetVkFormatFromFormatID(angle::FormatID formatID) { static constexpr angle::FormatMap kMap = { {angle::FormatID::A1R5G5B5_UNORM, VK_FORMAT_A1R5G5B5_UNORM_PACK16}, {angle::FormatID::ASTC_10x10_SRGB_BLOCK, VK_FORMAT_ASTC_10x10_SRGB_BLOCK}, {angle::FormatID::ASTC_10x10_UNORM_BLOCK, VK_FORMAT_ASTC_10x10_UNORM_BLOCK}, {angle::FormatID::ASTC_10x5_SRGB_BLOCK, VK_FORMAT_ASTC_10x5_SRGB_BLOCK}, {angle::FormatID::ASTC_10x5_UNORM_BLOCK, VK_FORMAT_ASTC_10x5_UNORM_BLOCK}, {angle::FormatID::ASTC_10x6_SRGB_BLOCK, VK_FORMAT_ASTC_10x6_SRGB_BLOCK}, {angle::FormatID::ASTC_10x6_UNORM_BLOCK, VK_FORMAT_ASTC_10x6_UNORM_BLOCK}, {angle::FormatID::ASTC_10x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x8_SRGB_BLOCK}, {angle::FormatID::ASTC_10x8_UNORM_BLOCK, VK_FORMAT_ASTC_10x8_UNORM_BLOCK}, {angle::FormatID::ASTC_12x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x10_SRGB_BLOCK}, {angle::FormatID::ASTC_12x10_UNORM_BLOCK, VK_FORMAT_ASTC_12x10_UNORM_BLOCK}, {angle::FormatID::ASTC_12x12_SRGB_BLOCK, VK_FORMAT_ASTC_12x12_SRGB_BLOCK}, {angle::FormatID::ASTC_12x12_UNORM_BLOCK, VK_FORMAT_ASTC_12x12_UNORM_BLOCK}, {angle::FormatID::ASTC_4x4_SRGB_BLOCK, VK_FORMAT_ASTC_4x4_SRGB_BLOCK}, {angle::FormatID::ASTC_4x4_UNORM_BLOCK, VK_FORMAT_ASTC_4x4_UNORM_BLOCK}, {angle::FormatID::ASTC_5x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x4_SRGB_BLOCK}, {angle::FormatID::ASTC_5x4_UNORM_BLOCK, VK_FORMAT_ASTC_5x4_UNORM_BLOCK}, {angle::FormatID::ASTC_5x5_SRGB_BLOCK, VK_FORMAT_ASTC_5x5_SRGB_BLOCK}, {angle::FormatID::ASTC_5x5_UNORM_BLOCK, VK_FORMAT_ASTC_5x5_UNORM_BLOCK}, {angle::FormatID::ASTC_6x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x5_SRGB_BLOCK}, {angle::FormatID::ASTC_6x5_UNORM_BLOCK, VK_FORMAT_ASTC_6x5_UNORM_BLOCK}, {angle::FormatID::ASTC_6x6_SRGB_BLOCK, VK_FORMAT_ASTC_6x6_SRGB_BLOCK}, {angle::FormatID::ASTC_6x6_UNORM_BLOCK, VK_FORMAT_ASTC_6x6_UNORM_BLOCK}, {angle::FormatID::ASTC_8x5_SRGB_BLOCK, VK_FORMAT_ASTC_8x5_SRGB_BLOCK}, {angle::FormatID::ASTC_8x5_UNORM_BLOCK, VK_FORMAT_ASTC_8x5_UNORM_BLOCK}, {angle::FormatID::ASTC_8x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x6_SRGB_BLOCK}, {angle::FormatID::ASTC_8x6_UNORM_BLOCK, VK_FORMAT_ASTC_8x6_UNORM_BLOCK}, {angle::FormatID::ASTC_8x8_SRGB_BLOCK, VK_FORMAT_ASTC_8x8_SRGB_BLOCK}, {angle::FormatID::ASTC_8x8_UNORM_BLOCK, VK_FORMAT_ASTC_8x8_UNORM_BLOCK}, {angle::FormatID::B10G10R10A2_UNORM, VK_FORMAT_A2R10G10B10_UNORM_PACK32}, {angle::FormatID::B4G4R4A4_UNORM, VK_FORMAT_B4G4R4A4_UNORM_PACK16}, {angle::FormatID::B5G5R5A1_UNORM, VK_FORMAT_B5G5R5A1_UNORM_PACK16}, {angle::FormatID::B5G6R5_UNORM, VK_FORMAT_B5G6R5_UNORM_PACK16}, {angle::FormatID::B8G8R8A8_UNORM, VK_FORMAT_B8G8R8A8_UNORM}, {angle::FormatID::B8G8R8A8_UNORM_SRGB, VK_FORMAT_B8G8R8A8_SRGB}, {angle::FormatID::BC1_RGBA_UNORM_BLOCK, VK_FORMAT_BC1_RGBA_UNORM_BLOCK}, {angle::FormatID::BC1_RGBA_UNORM_SRGB_BLOCK, VK_FORMAT_BC1_RGBA_SRGB_BLOCK}, {angle::FormatID::BC1_RGB_UNORM_BLOCK, VK_FORMAT_BC1_RGB_UNORM_BLOCK}, {angle::FormatID::BC1_RGB_UNORM_SRGB_BLOCK, VK_FORMAT_BC1_RGB_SRGB_BLOCK}, {angle::FormatID::BC2_RGBA_UNORM_BLOCK, VK_FORMAT_BC2_UNORM_BLOCK}, {angle::FormatID::BC2_RGBA_UNORM_SRGB_BLOCK, VK_FORMAT_BC2_SRGB_BLOCK}, {angle::FormatID::BC3_RGBA_UNORM_BLOCK, VK_FORMAT_BC3_UNORM_BLOCK}, {angle::FormatID::BC3_RGBA_UNORM_SRGB_BLOCK, VK_FORMAT_BC3_SRGB_BLOCK}, {angle::FormatID::BC4_RED_SNORM_BLOCK, VK_FORMAT_BC4_SNORM_BLOCK}, {angle::FormatID::BC4_RED_UNORM_BLOCK, VK_FORMAT_BC4_UNORM_BLOCK}, {angle::FormatID::BC5_RG_SNORM_BLOCK, VK_FORMAT_BC5_SNORM_BLOCK}, {angle::FormatID::BC5_RG_UNORM_BLOCK, VK_FORMAT_BC5_UNORM_BLOCK}, {angle::FormatID::BC6H_RGB_SFLOAT_BLOCK, VK_FORMAT_BC6H_SFLOAT_BLOCK}, {angle::FormatID::BC6H_RGB_UFLOAT_BLOCK, VK_FORMAT_BC6H_UFLOAT_BLOCK}, {angle::FormatID::BC7_RGBA_UNORM_BLOCK, VK_FORMAT_BC7_UNORM_BLOCK}, {angle::FormatID::BC7_RGBA_UNORM_SRGB_BLOCK, VK_FORMAT_BC7_SRGB_BLOCK}, {angle::FormatID::D16_UNORM, VK_FORMAT_D16_UNORM}, {angle::FormatID::D24_UNORM_S8_UINT, VK_FORMAT_D24_UNORM_S8_UINT}, {angle::FormatID::D24_UNORM_X8_UINT, VK_FORMAT_X8_D24_UNORM_PACK32}, {angle::FormatID::D32_FLOAT, VK_FORMAT_D32_SFLOAT}, {angle::FormatID::D32_FLOAT_S8X24_UINT, VK_FORMAT_D32_SFLOAT_S8_UINT}, {angle::FormatID::EAC_R11G11_SNORM_BLOCK, VK_FORMAT_EAC_R11G11_SNORM_BLOCK}, {angle::FormatID::EAC_R11G11_UNORM_BLOCK, VK_FORMAT_EAC_R11G11_UNORM_BLOCK}, {angle::FormatID::EAC_R11_SNORM_BLOCK, VK_FORMAT_EAC_R11_SNORM_BLOCK}, {angle::FormatID::EAC_R11_UNORM_BLOCK, VK_FORMAT_EAC_R11_UNORM_BLOCK}, {angle::FormatID::ETC2_R8G8B8A1_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK}, {angle::FormatID::ETC2_R8G8B8A1_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK}, {angle::FormatID::ETC2_R8G8B8A8_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK}, {angle::FormatID::ETC2_R8G8B8A8_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK}, {angle::FormatID::ETC2_R8G8B8_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK}, {angle::FormatID::ETC2_R8G8B8_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK}, {angle::FormatID::G8_B8R8_2PLANE_420_UNORM, VK_FORMAT_G8_B8R8_2PLANE_420_UNORM}, {angle::FormatID::G8_B8_R8_3PLANE_420_UNORM, VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM}, {angle::FormatID::NONE, VK_FORMAT_UNDEFINED}, {angle::FormatID::R10G10B10A2_SINT, VK_FORMAT_A2B10G10R10_SINT_PACK32}, {angle::FormatID::R10G10B10A2_SNORM, VK_FORMAT_A2B10G10R10_SNORM_PACK32}, {angle::FormatID::R10G10B10A2_SSCALED, VK_FORMAT_A2B10G10R10_SSCALED_PACK32}, {angle::FormatID::R10G10B10A2_UINT, VK_FORMAT_A2B10G10R10_UINT_PACK32}, {angle::FormatID::R10G10B10A2_UNORM, VK_FORMAT_A2B10G10R10_UNORM_PACK32}, {angle::FormatID::R10G10B10A2_USCALED, VK_FORMAT_A2B10G10R10_USCALED_PACK32}, {angle::FormatID::R11G11B10_FLOAT, VK_FORMAT_B10G11R11_UFLOAT_PACK32}, {angle::FormatID::R16G16B16A16_FLOAT, VK_FORMAT_R16G16B16A16_SFLOAT}, {angle::FormatID::R16G16B16A16_SINT, VK_FORMAT_R16G16B16A16_SINT}, {angle::FormatID::R16G16B16A16_SNORM, VK_FORMAT_R16G16B16A16_SNORM}, {angle::FormatID::R16G16B16A16_SSCALED, VK_FORMAT_R16G16B16A16_SSCALED}, {angle::FormatID::R16G16B16A16_UINT, VK_FORMAT_R16G16B16A16_UINT}, {angle::FormatID::R16G16B16A16_UNORM, VK_FORMAT_R16G16B16A16_UNORM}, {angle::FormatID::R16G16B16A16_USCALED, VK_FORMAT_R16G16B16A16_USCALED}, {angle::FormatID::R16G16B16_FLOAT, VK_FORMAT_R16G16B16_SFLOAT}, {angle::FormatID::R16G16B16_SINT, VK_FORMAT_R16G16B16_SINT}, {angle::FormatID::R16G16B16_SNORM, VK_FORMAT_R16G16B16_SNORM}, {angle::FormatID::R16G16B16_SSCALED, VK_FORMAT_R16G16B16_SSCALED}, {angle::FormatID::R16G16B16_UINT, VK_FORMAT_R16G16B16_UINT}, {angle::FormatID::R16G16B16_UNORM, VK_FORMAT_R16G16B16_UNORM}, {angle::FormatID::R16G16B16_USCALED, VK_FORMAT_R16G16B16_USCALED}, {angle::FormatID::R16G16_FLOAT, VK_FORMAT_R16G16_SFLOAT}, {angle::FormatID::R16G16_SINT, VK_FORMAT_R16G16_SINT}, {angle::FormatID::R16G16_SNORM, VK_FORMAT_R16G16_SNORM}, {angle::FormatID::R16G16_SSCALED, VK_FORMAT_R16G16_SSCALED}, {angle::FormatID::R16G16_UINT, VK_FORMAT_R16G16_UINT}, {angle::FormatID::R16G16_UNORM, VK_FORMAT_R16G16_UNORM}, {angle::FormatID::R16G16_USCALED, VK_FORMAT_R16G16_USCALED}, {angle::FormatID::R16_FLOAT, VK_FORMAT_R16_SFLOAT}, {angle::FormatID::R16_SINT, VK_FORMAT_R16_SINT}, {angle::FormatID::R16_SNORM, VK_FORMAT_R16_SNORM}, {angle::FormatID::R16_SSCALED, VK_FORMAT_R16_SSCALED}, {angle::FormatID::R16_UINT, VK_FORMAT_R16_UINT}, {angle::FormatID::R16_UNORM, VK_FORMAT_R16_UNORM}, {angle::FormatID::R16_USCALED, VK_FORMAT_R16_USCALED}, {angle::FormatID::R32G32B32A32_FLOAT, VK_FORMAT_R32G32B32A32_SFLOAT}, {angle::FormatID::R32G32B32A32_SINT, VK_FORMAT_R32G32B32A32_SINT}, {angle::FormatID::R32G32B32A32_UINT, VK_FORMAT_R32G32B32A32_UINT}, {angle::FormatID::R32G32B32_FLOAT, VK_FORMAT_R32G32B32_SFLOAT}, {angle::FormatID::R32G32B32_SINT, VK_FORMAT_R32G32B32_SINT}, {angle::FormatID::R32G32B32_UINT, VK_FORMAT_R32G32B32_UINT}, {angle::FormatID::R32G32_FLOAT, VK_FORMAT_R32G32_SFLOAT}, {angle::FormatID::R32G32_SINT, VK_FORMAT_R32G32_SINT}, {angle::FormatID::R32G32_UINT, VK_FORMAT_R32G32_UINT}, {angle::FormatID::R32_FLOAT, VK_FORMAT_R32_SFLOAT}, {angle::FormatID::R32_SINT, VK_FORMAT_R32_SINT}, {angle::FormatID::R32_UINT, VK_FORMAT_R32_UINT}, {angle::FormatID::R4G4B4A4_UNORM, VK_FORMAT_R4G4B4A4_UNORM_PACK16}, {angle::FormatID::R5G5B5A1_UNORM, VK_FORMAT_R5G5B5A1_UNORM_PACK16}, {angle::FormatID::R5G6B5_UNORM, VK_FORMAT_R5G6B5_UNORM_PACK16}, {angle::FormatID::R8G8B8A8_SINT, VK_FORMAT_R8G8B8A8_SINT}, {angle::FormatID::R8G8B8A8_SNORM, VK_FORMAT_R8G8B8A8_SNORM}, {angle::FormatID::R8G8B8A8_SSCALED, VK_FORMAT_R8G8B8A8_SSCALED}, {angle::FormatID::R8G8B8A8_UINT, VK_FORMAT_R8G8B8A8_UINT}, {angle::FormatID::R8G8B8A8_UNORM, VK_FORMAT_R8G8B8A8_UNORM}, {angle::FormatID::R8G8B8A8_UNORM_SRGB, VK_FORMAT_R8G8B8A8_SRGB}, {angle::FormatID::R8G8B8A8_USCALED, VK_FORMAT_R8G8B8A8_USCALED}, {angle::FormatID::R8G8B8_SINT, VK_FORMAT_R8G8B8_SINT}, {angle::FormatID::R8G8B8_SNORM, VK_FORMAT_R8G8B8_SNORM}, {angle::FormatID::R8G8B8_SSCALED, VK_FORMAT_R8G8B8_SSCALED}, {angle::FormatID::R8G8B8_UINT, VK_FORMAT_R8G8B8_UINT}, {angle::FormatID::R8G8B8_UNORM_SRGB, VK_FORMAT_R8G8B8_SRGB}, {angle::FormatID::R8G8B8_USCALED, VK_FORMAT_R8G8B8_USCALED}, {angle::FormatID::R8G8_SINT, VK_FORMAT_R8G8_SINT}, {angle::FormatID::R8G8_SNORM, VK_FORMAT_R8G8_SNORM}, {angle::FormatID::R8G8_SSCALED, VK_FORMAT_R8G8_SSCALED}, {angle::FormatID::R8G8_UINT, VK_FORMAT_R8G8_UINT}, {angle::FormatID::R8G8_UNORM, VK_FORMAT_R8G8_UNORM}, {angle::FormatID::R8G8_UNORM_SRGB, VK_FORMAT_R8G8_SRGB}, {angle::FormatID::R8G8_USCALED, VK_FORMAT_R8G8_USCALED}, {angle::FormatID::R8_SINT, VK_FORMAT_R8_SINT}, {angle::FormatID::R8_SNORM, VK_FORMAT_R8_SNORM}, {angle::FormatID::R8_SSCALED, VK_FORMAT_R8_SSCALED}, {angle::FormatID::R8_UINT, VK_FORMAT_R8_UINT}, {angle::FormatID::R8_UNORM, VK_FORMAT_R8_UNORM}, {angle::FormatID::R8_UNORM_SRGB, VK_FORMAT_R8_SRGB}, {angle::FormatID::R8_USCALED, VK_FORMAT_R8_USCALED}, {angle::FormatID::R9G9B9E5_SHAREDEXP, VK_FORMAT_E5B9G9R9_UFLOAT_PACK32}, {angle::FormatID::S8_UINT, VK_FORMAT_S8_UINT}}; return kMap[formatID]; } angle::FormatID GetFormatIDFromVkFormat(VkFormat vkFormat) { switch (vkFormat) { case VK_FORMAT_A1R5G5B5_UNORM_PACK16: return angle::FormatID::A1R5G5B5_UNORM; case VK_FORMAT_ASTC_10x10_SRGB_BLOCK: return angle::FormatID::ASTC_10x10_SRGB_BLOCK; case VK_FORMAT_ASTC_10x10_UNORM_BLOCK: return angle::FormatID::ASTC_10x10_UNORM_BLOCK; case VK_FORMAT_ASTC_10x5_SRGB_BLOCK: return angle::FormatID::ASTC_10x5_SRGB_BLOCK; case VK_FORMAT_ASTC_10x5_UNORM_BLOCK: return angle::FormatID::ASTC_10x5_UNORM_BLOCK; case VK_FORMAT_ASTC_10x6_SRGB_BLOCK: return angle::FormatID::ASTC_10x6_SRGB_BLOCK; case VK_FORMAT_ASTC_10x6_UNORM_BLOCK: return angle::FormatID::ASTC_10x6_UNORM_BLOCK; case VK_FORMAT_ASTC_10x8_SRGB_BLOCK: return angle::FormatID::ASTC_10x8_SRGB_BLOCK; case VK_FORMAT_ASTC_10x8_UNORM_BLOCK: return angle::FormatID::ASTC_10x8_UNORM_BLOCK; case VK_FORMAT_ASTC_12x10_SRGB_BLOCK: return angle::FormatID::ASTC_12x10_SRGB_BLOCK; case VK_FORMAT_ASTC_12x10_UNORM_BLOCK: return angle::FormatID::ASTC_12x10_UNORM_BLOCK; case VK_FORMAT_ASTC_12x12_SRGB_BLOCK: return angle::FormatID::ASTC_12x12_SRGB_BLOCK; case VK_FORMAT_ASTC_12x12_UNORM_BLOCK: return angle::FormatID::ASTC_12x12_UNORM_BLOCK; case VK_FORMAT_ASTC_4x4_SRGB_BLOCK: return angle::FormatID::ASTC_4x4_SRGB_BLOCK; case VK_FORMAT_ASTC_4x4_UNORM_BLOCK: return angle::FormatID::ASTC_4x4_UNORM_BLOCK; case VK_FORMAT_ASTC_5x4_SRGB_BLOCK: return angle::FormatID::ASTC_5x4_SRGB_BLOCK; case VK_FORMAT_ASTC_5x4_UNORM_BLOCK: return angle::FormatID::ASTC_5x4_UNORM_BLOCK; case VK_FORMAT_ASTC_5x5_SRGB_BLOCK: return angle::FormatID::ASTC_5x5_SRGB_BLOCK; case VK_FORMAT_ASTC_5x5_UNORM_BLOCK: return angle::FormatID::ASTC_5x5_UNORM_BLOCK; case VK_FORMAT_ASTC_6x5_SRGB_BLOCK: return angle::FormatID::ASTC_6x5_SRGB_BLOCK; case VK_FORMAT_ASTC_6x5_UNORM_BLOCK: return angle::FormatID::ASTC_6x5_UNORM_BLOCK; case VK_FORMAT_ASTC_6x6_SRGB_BLOCK: return angle::FormatID::ASTC_6x6_SRGB_BLOCK; case VK_FORMAT_ASTC_6x6_UNORM_BLOCK: return angle::FormatID::ASTC_6x6_UNORM_BLOCK; case VK_FORMAT_ASTC_8x5_SRGB_BLOCK: return angle::FormatID::ASTC_8x5_SRGB_BLOCK; case VK_FORMAT_ASTC_8x5_UNORM_BLOCK: return angle::FormatID::ASTC_8x5_UNORM_BLOCK; case VK_FORMAT_ASTC_8x6_SRGB_BLOCK: return angle::FormatID::ASTC_8x6_SRGB_BLOCK; case VK_FORMAT_ASTC_8x6_UNORM_BLOCK: return angle::FormatID::ASTC_8x6_UNORM_BLOCK; case VK_FORMAT_ASTC_8x8_SRGB_BLOCK: return angle::FormatID::ASTC_8x8_SRGB_BLOCK; case VK_FORMAT_ASTC_8x8_UNORM_BLOCK: return angle::FormatID::ASTC_8x8_UNORM_BLOCK; case VK_FORMAT_A2R10G10B10_UNORM_PACK32: return angle::FormatID::B10G10R10A2_UNORM; case VK_FORMAT_B4G4R4A4_UNORM_PACK16: return angle::FormatID::B4G4R4A4_UNORM; case VK_FORMAT_B5G5R5A1_UNORM_PACK16: return angle::FormatID::B5G5R5A1_UNORM; case VK_FORMAT_B5G6R5_UNORM_PACK16: return angle::FormatID::B5G6R5_UNORM; case VK_FORMAT_B8G8R8A8_UNORM: return angle::FormatID::B8G8R8A8_UNORM; case VK_FORMAT_B8G8R8A8_SRGB: return angle::FormatID::B8G8R8A8_UNORM_SRGB; case VK_FORMAT_BC1_RGBA_UNORM_BLOCK: return angle::FormatID::BC1_RGBA_UNORM_BLOCK; case VK_FORMAT_BC1_RGBA_SRGB_BLOCK: return angle::FormatID::BC1_RGBA_UNORM_SRGB_BLOCK; case VK_FORMAT_BC1_RGB_UNORM_BLOCK: return angle::FormatID::BC1_RGB_UNORM_BLOCK; case VK_FORMAT_BC1_RGB_SRGB_BLOCK: return angle::FormatID::BC1_RGB_UNORM_SRGB_BLOCK; case VK_FORMAT_BC2_UNORM_BLOCK: return angle::FormatID::BC2_RGBA_UNORM_BLOCK; case VK_FORMAT_BC2_SRGB_BLOCK: return angle::FormatID::BC2_RGBA_UNORM_SRGB_BLOCK; case VK_FORMAT_BC3_UNORM_BLOCK: return angle::FormatID::BC3_RGBA_UNORM_BLOCK; case VK_FORMAT_BC3_SRGB_BLOCK: return angle::FormatID::BC3_RGBA_UNORM_SRGB_BLOCK; case VK_FORMAT_BC4_SNORM_BLOCK: return angle::FormatID::BC4_RED_SNORM_BLOCK; case VK_FORMAT_BC4_UNORM_BLOCK: return angle::FormatID::BC4_RED_UNORM_BLOCK; case VK_FORMAT_BC5_SNORM_BLOCK: return angle::FormatID::BC5_RG_SNORM_BLOCK; case VK_FORMAT_BC5_UNORM_BLOCK: return angle::FormatID::BC5_RG_UNORM_BLOCK; case VK_FORMAT_BC6H_SFLOAT_BLOCK: return angle::FormatID::BC6H_RGB_SFLOAT_BLOCK; case VK_FORMAT_BC6H_UFLOAT_BLOCK: return angle::FormatID::BC6H_RGB_UFLOAT_BLOCK; case VK_FORMAT_BC7_UNORM_BLOCK: return angle::FormatID::BC7_RGBA_UNORM_BLOCK; case VK_FORMAT_BC7_SRGB_BLOCK: return angle::FormatID::BC7_RGBA_UNORM_SRGB_BLOCK; case VK_FORMAT_D16_UNORM: return angle::FormatID::D16_UNORM; case VK_FORMAT_D24_UNORM_S8_UINT: return angle::FormatID::D24_UNORM_S8_UINT; case VK_FORMAT_X8_D24_UNORM_PACK32: return angle::FormatID::D24_UNORM_X8_UINT; case VK_FORMAT_D32_SFLOAT: return angle::FormatID::D32_FLOAT; case VK_FORMAT_D32_SFLOAT_S8_UINT: return angle::FormatID::D32_FLOAT_S8X24_UINT; case VK_FORMAT_EAC_R11G11_SNORM_BLOCK: return angle::FormatID::EAC_R11G11_SNORM_BLOCK; case VK_FORMAT_EAC_R11G11_UNORM_BLOCK: return angle::FormatID::EAC_R11G11_UNORM_BLOCK; case VK_FORMAT_EAC_R11_SNORM_BLOCK: return angle::FormatID::EAC_R11_SNORM_BLOCK; case VK_FORMAT_EAC_R11_UNORM_BLOCK: return angle::FormatID::EAC_R11_UNORM_BLOCK; case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK: return angle::FormatID::ETC2_R8G8B8A1_SRGB_BLOCK; case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK: return angle::FormatID::ETC2_R8G8B8A1_UNORM_BLOCK; case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK: return angle::FormatID::ETC2_R8G8B8A8_SRGB_BLOCK; case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK: return angle::FormatID::ETC2_R8G8B8A8_UNORM_BLOCK; case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK: return angle::FormatID::ETC2_R8G8B8_SRGB_BLOCK; case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK: return angle::FormatID::ETC2_R8G8B8_UNORM_BLOCK; case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM: return angle::FormatID::G8_B8R8_2PLANE_420_UNORM; case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM: return angle::FormatID::G8_B8_R8_3PLANE_420_UNORM; case VK_FORMAT_UNDEFINED: return angle::FormatID::NONE; case VK_FORMAT_A2B10G10R10_SINT_PACK32: return angle::FormatID::R10G10B10A2_SINT; case VK_FORMAT_A2B10G10R10_SNORM_PACK32: return angle::FormatID::R10G10B10A2_SNORM; case VK_FORMAT_A2B10G10R10_SSCALED_PACK32: return angle::FormatID::R10G10B10A2_SSCALED; case VK_FORMAT_A2B10G10R10_UINT_PACK32: return angle::FormatID::R10G10B10A2_UINT; case VK_FORMAT_A2B10G10R10_UNORM_PACK32: return angle::FormatID::R10G10B10A2_UNORM; case VK_FORMAT_A2B10G10R10_USCALED_PACK32: return angle::FormatID::R10G10B10A2_USCALED; case VK_FORMAT_B10G11R11_UFLOAT_PACK32: return angle::FormatID::R11G11B10_FLOAT; case VK_FORMAT_R16G16B16A16_SFLOAT: return angle::FormatID::R16G16B16A16_FLOAT; case VK_FORMAT_R16G16B16A16_SINT: return angle::FormatID::R16G16B16A16_SINT; case VK_FORMAT_R16G16B16A16_SNORM: return angle::FormatID::R16G16B16A16_SNORM; case VK_FORMAT_R16G16B16A16_SSCALED: return angle::FormatID::R16G16B16A16_SSCALED; case VK_FORMAT_R16G16B16A16_UINT: return angle::FormatID::R16G16B16A16_UINT; case VK_FORMAT_R16G16B16A16_UNORM: return angle::FormatID::R16G16B16A16_UNORM; case VK_FORMAT_R16G16B16A16_USCALED: return angle::FormatID::R16G16B16A16_USCALED; case VK_FORMAT_R16G16B16_SFLOAT: return angle::FormatID::R16G16B16_FLOAT; case VK_FORMAT_R16G16B16_SINT: return angle::FormatID::R16G16B16_SINT; case VK_FORMAT_R16G16B16_SNORM: return angle::FormatID::R16G16B16_SNORM; case VK_FORMAT_R16G16B16_SSCALED: return angle::FormatID::R16G16B16_SSCALED; case VK_FORMAT_R16G16B16_UINT: return angle::FormatID::R16G16B16_UINT; case VK_FORMAT_R16G16B16_UNORM: return angle::FormatID::R16G16B16_UNORM; case VK_FORMAT_R16G16B16_USCALED: return angle::FormatID::R16G16B16_USCALED; case VK_FORMAT_R16G16_SFLOAT: return angle::FormatID::R16G16_FLOAT; case VK_FORMAT_R16G16_SINT: return angle::FormatID::R16G16_SINT; case VK_FORMAT_R16G16_SNORM: return angle::FormatID::R16G16_SNORM; case VK_FORMAT_R16G16_SSCALED: return angle::FormatID::R16G16_SSCALED; case VK_FORMAT_R16G16_UINT: return angle::FormatID::R16G16_UINT; case VK_FORMAT_R16G16_UNORM: return angle::FormatID::R16G16_UNORM; case VK_FORMAT_R16G16_USCALED: return angle::FormatID::R16G16_USCALED; case VK_FORMAT_R16_SFLOAT: return angle::FormatID::R16_FLOAT; case VK_FORMAT_R16_SINT: return angle::FormatID::R16_SINT; case VK_FORMAT_R16_SNORM: return angle::FormatID::R16_SNORM; case VK_FORMAT_R16_SSCALED: return angle::FormatID::R16_SSCALED; case VK_FORMAT_R16_UINT: return angle::FormatID::R16_UINT; case VK_FORMAT_R16_UNORM: return angle::FormatID::R16_UNORM; case VK_FORMAT_R16_USCALED: return angle::FormatID::R16_USCALED; case VK_FORMAT_R32G32B32A32_SFLOAT: return angle::FormatID::R32G32B32A32_FLOAT; case VK_FORMAT_R32G32B32A32_SINT: return angle::FormatID::R32G32B32A32_SINT; case VK_FORMAT_R32G32B32A32_UINT: return angle::FormatID::R32G32B32A32_UINT; case VK_FORMAT_R32G32B32_SFLOAT: return angle::FormatID::R32G32B32_FLOAT; case VK_FORMAT_R32G32B32_SINT: return angle::FormatID::R32G32B32_SINT; case VK_FORMAT_R32G32B32_UINT: return angle::FormatID::R32G32B32_UINT; case VK_FORMAT_R32G32_SFLOAT: return angle::FormatID::R32G32_FLOAT; case VK_FORMAT_R32G32_SINT: return angle::FormatID::R32G32_SINT; case VK_FORMAT_R32G32_UINT: return angle::FormatID::R32G32_UINT; case VK_FORMAT_R32_SFLOAT: return angle::FormatID::R32_FLOAT; case VK_FORMAT_R32_SINT: return angle::FormatID::R32_SINT; case VK_FORMAT_R32_UINT: return angle::FormatID::R32_UINT; case VK_FORMAT_R4G4B4A4_UNORM_PACK16: return angle::FormatID::R4G4B4A4_UNORM; case VK_FORMAT_R5G5B5A1_UNORM_PACK16: return angle::FormatID::R5G5B5A1_UNORM; case VK_FORMAT_R5G6B5_UNORM_PACK16: return angle::FormatID::R5G6B5_UNORM; case VK_FORMAT_R8G8B8A8_SINT: return angle::FormatID::R8G8B8A8_SINT; case VK_FORMAT_R8G8B8A8_SNORM: return angle::FormatID::R8G8B8A8_SNORM; case VK_FORMAT_R8G8B8A8_SSCALED: return angle::FormatID::R8G8B8A8_SSCALED; case VK_FORMAT_R8G8B8A8_UINT: return angle::FormatID::R8G8B8A8_UINT; case VK_FORMAT_R8G8B8A8_UNORM: return angle::FormatID::R8G8B8A8_UNORM; case VK_FORMAT_R8G8B8A8_SRGB: return angle::FormatID::R8G8B8A8_UNORM_SRGB; case VK_FORMAT_R8G8B8A8_USCALED: return angle::FormatID::R8G8B8A8_USCALED; case VK_FORMAT_R8G8B8_SINT: return angle::FormatID::R8G8B8_SINT; case VK_FORMAT_R8G8B8_SNORM: return angle::FormatID::R8G8B8_SNORM; case VK_FORMAT_R8G8B8_SSCALED: return angle::FormatID::R8G8B8_SSCALED; case VK_FORMAT_R8G8B8_UINT: return angle::FormatID::R8G8B8_UINT; case VK_FORMAT_R8G8B8_SRGB: return angle::FormatID::R8G8B8_UNORM_SRGB; case VK_FORMAT_R8G8B8_USCALED: return angle::FormatID::R8G8B8_USCALED; case VK_FORMAT_R8G8_SINT: return angle::FormatID::R8G8_SINT; case VK_FORMAT_R8G8_SNORM: return angle::FormatID::R8G8_SNORM; case VK_FORMAT_R8G8_SSCALED: return angle::FormatID::R8G8_SSCALED; case VK_FORMAT_R8G8_UINT: return angle::FormatID::R8G8_UINT; case VK_FORMAT_R8G8_UNORM: return angle::FormatID::R8G8_UNORM; case VK_FORMAT_R8G8_SRGB: return angle::FormatID::R8G8_UNORM_SRGB; case VK_FORMAT_R8G8_USCALED: return angle::FormatID::R8G8_USCALED; case VK_FORMAT_R8_SINT: return angle::FormatID::R8_SINT; case VK_FORMAT_R8_SNORM: return angle::FormatID::R8_SNORM; case VK_FORMAT_R8_SSCALED: return angle::FormatID::R8_SSCALED; case VK_FORMAT_R8_UINT: return angle::FormatID::R8_UINT; case VK_FORMAT_R8_UNORM: return angle::FormatID::R8_UNORM; case VK_FORMAT_R8_SRGB: return angle::FormatID::R8_UNORM_SRGB; case VK_FORMAT_R8_USCALED: return angle::FormatID::R8_USCALED; case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32: return angle::FormatID::R9G9B9E5_SHAREDEXP; case VK_FORMAT_S8_UINT: return angle::FormatID::S8_UINT; default: return angle::FormatID::NONE; } } } // namespace vk } // namespace rx