Edit

kc3-lang/angle/src/libANGLE/renderer/vulkan/vk_format_map.json

Branch :

  • Show log

    Commit

  • Author : Alexis Hetu
    Date : 2021-09-17 16:22:55
    Hash : c0aa6108
    Message : Add new GL_RGBX8_ANGLEX format Currently, IOSurface objects using {GL_RGB, GL_UNSIGNED_BYTE} are natively represented with GL_BGRX8_ANGLEX, which we use instead of other RGBA formats in order to avoid issues when a canvas uses 'no alpha': https://source.chromium.org/chromium/chromium/src/+/main:third_party/swiftshader/third_party/angle/angle/src/libANGLE/renderer/vulkan/mac/IOSurfaceSurfaceVkMac.mm;l=44 This unfortunately causes some other issues because of the implicit RGB <-> BGR conversion like type mismatches in subresource updates. This CL adds a new type, RGBX8, which will be usable by IOSurface objects and which behaves exactly like the BGRX8 format with the B and R channels flipped. Bug: chromium:1209250 Change-Id: I345eadc8addd05a0964cae30d89c20005479e37b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3188910 Commit-Queue: Alexis Hétu <sugoi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>

  • src/libANGLE/renderer/vulkan/vk_format_map.json
  • {
        "description": [
            "Copyright 2018 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_map.json: Format mapping between OpenGL and Vulkan.",
            "",
            "The format of the map is a dictionary where the key of each entry is the",
            "ANGLE format ID, and the value is the Vulkan format enum. Note some formats",
            "are missing from the map, these formats are either unsupported or emulated",
            "on Vulkan. The map matches GL formats to identical Vulkan formats; missing",
            "formats use the fallback table for emulation.",
            "",
            "We implement formats that aren't natively supported in Vulkan using",
            "fallback formats. These are specified as dictionaries (also keyed on",
            "the angle format ID), with two optional entries for Buffer and Image",
            "formats. Each entry specifies a fallback format.",
            "",
            "Also see gen_vk_format_table.py for the code generation step."
        ],
        "map": {
            "NONE": "VK_FORMAT_UNDEFINED",
            "A1R5G5B5_UNORM": "VK_FORMAT_A1R5G5B5_UNORM_PACK16",
            "B4G4R4A4_UNORM": "VK_FORMAT_B4G4R4A4_UNORM_PACK16",
            "R4G4B4A4_UNORM": "VK_FORMAT_R4G4B4A4_UNORM_PACK16",
            "R5G6B5_UNORM": "VK_FORMAT_R5G6B5_UNORM_PACK16",
            "R5G5B5A1_UNORM": "VK_FORMAT_R5G5B5A1_UNORM_PACK16",
            "B5G6R5_UNORM": "VK_FORMAT_B5G6R5_UNORM_PACK16",
            "B5G5R5A1_UNORM": "VK_FORMAT_B5G5R5A1_UNORM_PACK16",
            "R8_UNORM": "VK_FORMAT_R8_UNORM",
            "R8_UNORM_SRGB": "VK_FORMAT_R8_SRGB",
            "R8_SNORM": "VK_FORMAT_R8_SNORM",
            "R8_UINT": "VK_FORMAT_R8_UINT",
            "R8_SINT": "VK_FORMAT_R8_SINT",
            "R8_USCALED": "VK_FORMAT_R8_USCALED",
            "R8_SSCALED": "VK_FORMAT_R8_SSCALED",
            "R8G8_UNORM": "VK_FORMAT_R8G8_UNORM",
            "R8G8_UNORM_SRGB": "VK_FORMAT_R8G8_SRGB",
            "R8G8_SNORM": "VK_FORMAT_R8G8_SNORM",
            "R8G8_UINT": "VK_FORMAT_R8G8_UINT",
            "R8G8_SINT": "VK_FORMAT_R8G8_SINT",
            "R8G8_USCALED": "VK_FORMAT_R8G8_USCALED",
            "R8G8_SSCALED": "VK_FORMAT_R8G8_SSCALED",
            "R8G8B8_SNORM": "VK_FORMAT_R8G8B8_SNORM",
            "R8G8B8_UINT": "VK_FORMAT_R8G8B8_UINT",
            "R8G8B8_SINT": "VK_FORMAT_R8G8B8_SINT",
            "R8G8B8_USCALED": "VK_FORMAT_R8G8B8_USCALED",
            "R8G8B8_SSCALED": "VK_FORMAT_R8G8B8_SSCALED",
            "R8G8B8_UNORM_SRGB": "VK_FORMAT_R8G8B8_SRGB",
            "R8G8B8A8_UNORM": "VK_FORMAT_R8G8B8A8_UNORM",
            "R8G8B8A8_SNORM": "VK_FORMAT_R8G8B8A8_SNORM",
            "R8G8B8A8_UINT": "VK_FORMAT_R8G8B8A8_UINT",
            "R8G8B8A8_SINT": "VK_FORMAT_R8G8B8A8_SINT",
            "R8G8B8A8_USCALED": "VK_FORMAT_R8G8B8A8_USCALED",
            "R8G8B8A8_SSCALED": "VK_FORMAT_R8G8B8A8_SSCALED",
            "R8G8B8A8_UNORM_SRGB": "VK_FORMAT_R8G8B8A8_SRGB",
            "B8G8R8A8_UNORM": "VK_FORMAT_B8G8R8A8_UNORM",
            "B8G8R8A8_UNORM_SRGB": "VK_FORMAT_B8G8R8A8_SRGB",
            "B10G10R10A2_UNORM": "VK_FORMAT_A2R10G10B10_UNORM_PACK32",
            "R10G10B10A2_UNORM": "VK_FORMAT_A2B10G10R10_UNORM_PACK32",
            "R10G10B10A2_SNORM": "VK_FORMAT_A2B10G10R10_SNORM_PACK32",
            "R10G10B10A2_USCALED": "VK_FORMAT_A2B10G10R10_USCALED_PACK32",
            "R10G10B10A2_SSCALED": "VK_FORMAT_A2B10G10R10_SSCALED_PACK32",
            "R10G10B10A2_UINT": "VK_FORMAT_A2B10G10R10_UINT_PACK32",
            "R10G10B10A2_SINT": "VK_FORMAT_A2B10G10R10_SINT_PACK32",
            "R16_UNORM": "VK_FORMAT_R16_UNORM",
            "R16_SNORM": "VK_FORMAT_R16_SNORM",
            "R16_USCALED": "VK_FORMAT_R16_USCALED",
            "R16_SSCALED": "VK_FORMAT_R16_SSCALED",
            "R16_UINT": "VK_FORMAT_R16_UINT",
            "R16_SINT": "VK_FORMAT_R16_SINT",
            "R16_FLOAT": "VK_FORMAT_R16_SFLOAT",
            "R16G16_UNORM": "VK_FORMAT_R16G16_UNORM",
            "R16G16_SNORM": "VK_FORMAT_R16G16_SNORM",
            "R16G16_USCALED": "VK_FORMAT_R16G16_USCALED",
            "R16G16_SSCALED": "VK_FORMAT_R16G16_SSCALED",
            "R16G16_UINT": "VK_FORMAT_R16G16_UINT",
            "R16G16_SINT": "VK_FORMAT_R16G16_SINT",
            "R16G16_FLOAT": "VK_FORMAT_R16G16_SFLOAT",
            "R16G16B16_UNORM": "VK_FORMAT_R16G16B16_UNORM",
            "R16G16B16_SNORM": "VK_FORMAT_R16G16B16_SNORM",
            "R16G16B16_USCALED": "VK_FORMAT_R16G16B16_USCALED",
            "R16G16B16_SSCALED": "VK_FORMAT_R16G16B16_SSCALED",
            "R16G16B16_UINT": "VK_FORMAT_R16G16B16_UINT",
            "R16G16B16_SINT": "VK_FORMAT_R16G16B16_SINT",
            "R16G16B16_FLOAT": "VK_FORMAT_R16G16B16_SFLOAT",
            "R16G16B16A16_UNORM": "VK_FORMAT_R16G16B16A16_UNORM",
            "R16G16B16A16_SNORM": "VK_FORMAT_R16G16B16A16_SNORM",
            "R16G16B16A16_USCALED": "VK_FORMAT_R16G16B16A16_USCALED",
            "R16G16B16A16_SSCALED": "VK_FORMAT_R16G16B16A16_SSCALED",
            "R16G16B16A16_UINT": "VK_FORMAT_R16G16B16A16_UINT",
            "R16G16B16A16_SINT": "VK_FORMAT_R16G16B16A16_SINT",
            "R16G16B16A16_FLOAT": "VK_FORMAT_R16G16B16A16_SFLOAT",
            "R32_UINT": "VK_FORMAT_R32_UINT",
            "R32_SINT": "VK_FORMAT_R32_SINT",
            "R32_FLOAT": "VK_FORMAT_R32_SFLOAT",
            "R32G32_UINT": "VK_FORMAT_R32G32_UINT",
            "R32G32_SINT": "VK_FORMAT_R32G32_SINT",
            "R32G32_FLOAT": "VK_FORMAT_R32G32_SFLOAT",
            "R32G32B32_UINT": "VK_FORMAT_R32G32B32_UINT",
            "R32G32B32_SINT": "VK_FORMAT_R32G32B32_SINT",
            "R32G32B32_FLOAT": "VK_FORMAT_R32G32B32_SFLOAT",
            "R32G32B32A32_UINT": "VK_FORMAT_R32G32B32A32_UINT",
            "R32G32B32A32_SINT": "VK_FORMAT_R32G32B32A32_SINT",
            "R32G32B32A32_FLOAT": "VK_FORMAT_R32G32B32A32_SFLOAT",
            "R11G11B10_FLOAT": "VK_FORMAT_B10G11R11_UFLOAT_PACK32",
            "R9G9B9E5_SHAREDEXP": "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32",
            "D16_UNORM": "VK_FORMAT_D16_UNORM",
            "D32_FLOAT": "VK_FORMAT_D32_SFLOAT",
            "S8_UINT": "VK_FORMAT_S8_UINT",
            "D24_UNORM_S8_UINT": "VK_FORMAT_D24_UNORM_S8_UINT",
            "D24_UNORM_X8_UINT": "VK_FORMAT_X8_D24_UNORM_PACK32",
            "D32_FLOAT_S8X24_UINT": "VK_FORMAT_D32_SFLOAT_S8_UINT",
            "BC1_RGB_UNORM_BLOCK": "VK_FORMAT_BC1_RGB_UNORM_BLOCK",
            "BC1_RGB_UNORM_SRGB_BLOCK": "VK_FORMAT_BC1_RGB_SRGB_BLOCK",
            "BC1_RGBA_UNORM_BLOCK": "VK_FORMAT_BC1_RGBA_UNORM_BLOCK",
            "BC1_RGBA_UNORM_SRGB_BLOCK": "VK_FORMAT_BC1_RGBA_SRGB_BLOCK",
            "BC2_RGBA_UNORM_BLOCK": "VK_FORMAT_BC2_UNORM_BLOCK",
            "BC2_RGBA_UNORM_SRGB_BLOCK": "VK_FORMAT_BC2_SRGB_BLOCK",
            "BC3_RGBA_UNORM_BLOCK": "VK_FORMAT_BC3_UNORM_BLOCK",
            "BC3_RGBA_UNORM_SRGB_BLOCK": "VK_FORMAT_BC3_SRGB_BLOCK",
            "BC4_RED_UNORM_BLOCK": "VK_FORMAT_BC4_UNORM_BLOCK",
            "BC4_RED_SNORM_BLOCK": "VK_FORMAT_BC4_SNORM_BLOCK",
            "BC5_RG_UNORM_BLOCK": "VK_FORMAT_BC5_UNORM_BLOCK",
            "BC5_RG_SNORM_BLOCK": "VK_FORMAT_BC5_SNORM_BLOCK",
            "BC6H_RGB_UFLOAT_BLOCK": "VK_FORMAT_BC6H_UFLOAT_BLOCK",
            "BC6H_RGB_SFLOAT_BLOCK": "VK_FORMAT_BC6H_SFLOAT_BLOCK",
            "BC7_RGBA_UNORM_BLOCK": "VK_FORMAT_BC7_UNORM_BLOCK",
            "BC7_RGBA_UNORM_SRGB_BLOCK": "VK_FORMAT_BC7_SRGB_BLOCK",
            "ETC2_R8G8B8_UNORM_BLOCK": "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK",
            "ETC2_R8G8B8_SRGB_BLOCK": "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK",
            "ETC2_R8G8B8A1_UNORM_BLOCK": "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK",
            "ETC2_R8G8B8A1_SRGB_BLOCK": "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK",
            "ETC2_R8G8B8A8_UNORM_BLOCK": "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK",
            "ETC2_R8G8B8A8_SRGB_BLOCK": "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK",
            "EAC_R11_UNORM_BLOCK": "VK_FORMAT_EAC_R11_UNORM_BLOCK",
            "EAC_R11_SNORM_BLOCK": "VK_FORMAT_EAC_R11_SNORM_BLOCK",
            "EAC_R11G11_UNORM_BLOCK": "VK_FORMAT_EAC_R11G11_UNORM_BLOCK",
            "EAC_R11G11_SNORM_BLOCK": "VK_FORMAT_EAC_R11G11_SNORM_BLOCK",
            "ASTC_4x4_UNORM_BLOCK": "VK_FORMAT_ASTC_4x4_UNORM_BLOCK",
            "ASTC_4x4_SRGB_BLOCK": "VK_FORMAT_ASTC_4x4_SRGB_BLOCK",
            "ASTC_5x4_UNORM_BLOCK": "VK_FORMAT_ASTC_5x4_UNORM_BLOCK",
            "ASTC_5x4_SRGB_BLOCK": "VK_FORMAT_ASTC_5x4_SRGB_BLOCK",
            "ASTC_5x5_UNORM_BLOCK": "VK_FORMAT_ASTC_5x5_UNORM_BLOCK",
            "ASTC_5x5_SRGB_BLOCK": "VK_FORMAT_ASTC_5x5_SRGB_BLOCK",
            "ASTC_6x5_UNORM_BLOCK": "VK_FORMAT_ASTC_6x5_UNORM_BLOCK",
            "ASTC_6x5_SRGB_BLOCK": "VK_FORMAT_ASTC_6x5_SRGB_BLOCK",
            "ASTC_6x6_UNORM_BLOCK": "VK_FORMAT_ASTC_6x6_UNORM_BLOCK",
            "ASTC_6x6_SRGB_BLOCK": "VK_FORMAT_ASTC_6x6_SRGB_BLOCK",
            "ASTC_8x5_UNORM_BLOCK": "VK_FORMAT_ASTC_8x5_UNORM_BLOCK",
            "ASTC_8x5_SRGB_BLOCK": "VK_FORMAT_ASTC_8x5_SRGB_BLOCK",
            "ASTC_8x6_UNORM_BLOCK": "VK_FORMAT_ASTC_8x6_UNORM_BLOCK",
            "ASTC_8x6_SRGB_BLOCK": "VK_FORMAT_ASTC_8x6_SRGB_BLOCK",
            "ASTC_8x8_UNORM_BLOCK": "VK_FORMAT_ASTC_8x8_UNORM_BLOCK",
            "ASTC_8x8_SRGB_BLOCK": "VK_FORMAT_ASTC_8x8_SRGB_BLOCK",
            "ASTC_10x5_UNORM_BLOCK": "VK_FORMAT_ASTC_10x5_UNORM_BLOCK",
            "ASTC_10x5_SRGB_BLOCK": "VK_FORMAT_ASTC_10x5_SRGB_BLOCK",
            "ASTC_10x6_UNORM_BLOCK": "VK_FORMAT_ASTC_10x6_UNORM_BLOCK",
            "ASTC_10x6_SRGB_BLOCK": "VK_FORMAT_ASTC_10x6_SRGB_BLOCK",
            "ASTC_10x8_UNORM_BLOCK": "VK_FORMAT_ASTC_10x8_UNORM_BLOCK",
            "ASTC_10x8_SRGB_BLOCK": "VK_FORMAT_ASTC_10x8_SRGB_BLOCK",
            "ASTC_10x10_UNORM_BLOCK": "VK_FORMAT_ASTC_10x10_UNORM_BLOCK",
            "ASTC_10x10_SRGB_BLOCK": "VK_FORMAT_ASTC_10x10_SRGB_BLOCK",
            "ASTC_12x10_UNORM_BLOCK": "VK_FORMAT_ASTC_12x10_UNORM_BLOCK",
            "ASTC_12x10_SRGB_BLOCK": "VK_FORMAT_ASTC_12x10_SRGB_BLOCK",
            "ASTC_12x12_UNORM_BLOCK": "VK_FORMAT_ASTC_12x12_UNORM_BLOCK",
            "ASTC_12x12_SRGB_BLOCK": "VK_FORMAT_ASTC_12x12_SRGB_BLOCK",
            "G8_B8_R8_3PLANE_420_UNORM": "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM",
            "G8_B8R8_2PLANE_420_UNORM": "VK_FORMAT_G8_B8R8_2PLANE_420_UNORM"
        },
        "fallbacks": {
            "A16_FLOAT": {
                "image": "R16_FLOAT"
            },
            "A32_FLOAT": {
                "image": "R32_FLOAT"
            },
            "L16_FLOAT": {
                "image": "R16_FLOAT"
            },
            "L32_FLOAT": {
                "image": "R32_FLOAT"
            },
            "L16A16_FLOAT": {
                "image": "R16G16_FLOAT"
            },
            "L32A32_FLOAT": {
                "image": "R32G32_FLOAT"
            },
            "A8_UNORM": {
                "image": "R8_UNORM"
            },
            "L8_UNORM": {
                "image": "R8_UNORM"
            },
            "L8A8_UNORM": {
                "image": "R8G8_UNORM"
            },
            "R4G4B4A4_UNORM": {
                "image": "R8G8B8A8_UNORM"
            },
            "R5G5B5A1_UNORM": {
                "image": "A1R5G5B5_UNORM"
            },
            "R8G8B8_UNORM_SRGB": {
                "image": "R8G8B8A8_UNORM_SRGB"
            },
            "B8G8R8X8_UNORM": {
                "buffer": "NONE",
                "image": "B8G8R8A8_UNORM"
            },
            "R8G8B8X8_UNORM": {
                "buffer": "NONE",
                "image": "R8G8B8A8_UNORM"
            },
            "D24_UNORM_X8_UINT": {
                "image": ["D24_UNORM_S8_UINT", "D32_FLOAT_S8X24_UINT"]
            },
            "D32_UNORM": {
                "buffer": "NONE",
                "image": ["D24_UNORM_S8_UINT", "D32_FLOAT"]
            },
            "ETC1_R8G8B8_UNORM_BLOCK": {
                "buffer": "NONE",
                "image": ["ETC2_R8G8B8_UNORM_BLOCK", "R8G8B8A8_UNORM"]
            },
            "R32_FIXED": {
                "buffer": "R32_FLOAT"
            },
            "R32G32_FIXED": {
                "buffer": "R32G32_FLOAT"
            },
            "R32G32B32_FIXED": {
                "buffer": "R32G32B32_FLOAT"
            },
            "R32G32B32A32_FIXED": {
                "buffer": "R32G32B32A32_FLOAT"
            },
            "R32_UNORM": {
                "buffer": "R32_FLOAT"
            },
            "R32G32_UNORM": {
                "buffer": "R32G32_FLOAT"
            },
            "R32G32B32_UNORM": {
                "buffer": "R32G32B32_FLOAT"
            },
            "R32G32B32A32_UNORM": {
                "buffer": "R32G32B32A32_FLOAT"
            },
            "R32_SNORM": {
                "buffer": "R32_FLOAT"
            },
            "R32G32_SNORM": {
                "buffer": "R32G32_FLOAT"
            },
            "R32G32B32_SNORM": {
                "buffer": "R32G32B32_FLOAT"
            },
            "R32G32B32A32_SNORM": {
                "buffer": "R32G32B32A32_FLOAT"
            },
            "R32G32B32A32_FLOAT": {
                "buffer_compressed": "R16G16B16A16_FLOAT"
            },
            "R32G32_FLOAT": {
                "buffer_compressed": "R16G16_FLOAT"
            },
            "R32_FLOAT": {
                "buffer_compressed": "R16_FLOAT"
            },
            "R32_USCALED": {
                "buffer": "R32_FLOAT"
            },
            "R32G32_USCALED": {
                "buffer": "R32G32_FLOAT"
            },
            "R32G32B32_USCALED": {
                "buffer": "R32G32B32_FLOAT"
            },
            "R32G32B32A32_USCALED": {
                "buffer": "R32G32B32A32_FLOAT"
            },
            "R32_SSCALED": {
                "buffer": "R32_FLOAT"
            },
            "R32G32_SSCALED": {
                "buffer": "R32G32_FLOAT"
            },
            "R32G32B32_SSCALED": {
                "buffer": "R32G32B32_FLOAT"
            },
            "R32G32B32A32_SSCALED": {
                "buffer": "R32G32B32A32_FLOAT"
            },
            "R10G10B10X2_UNORM": {
                "buffer": "NONE",
                "image": "R10G10B10A2_UNORM"
            },
            "A2R10G10B10_SINT_VERTEX": {
                "image": "NONE",
                "buffer": "R16G16B16A16_FLOAT"
            },
            "A2R10G10B10_UINT_VERTEX": {
                "image": "NONE",
                "buffer": "R16G16B16A16_FLOAT"
            },
            "A2R10G10B10_SSCALED_VERTEX": {
                "image": "NONE",
                "buffer": "R16G16B16A16_FLOAT"
            },
            "A2R10G10B10_USCALED_VERTEX": {
                "image": "NONE",
                "buffer": "R16G16B16A16_FLOAT"
            },
            "A2R10G10B10_SNORM_VERTEX": {
                "image": "NONE",
                "buffer": "R16G16B16A16_FLOAT"
            },
            "A2R10G10B10_UNORM_VERTEX": {
                "image": "NONE",
                "buffer": "R16G16B16A16_FLOAT"
            },
            "X2R10G10B10_SINT_VERTEX": {
                "image": "NONE",
                "buffer": "R16G16B16A16_FLOAT"
            },
            "X2R10G10B10_USCALED_VERTEX": {
                "image": "NONE",
                "buffer": "R16G16B16A16_FLOAT"
            },
            "X2R10G10B10_SSCALED_VERTEX": {
                "image": "NONE",
                "buffer": "R16G16B16A16_FLOAT"
            },
            "X2R10G10B10_UINT_VERTEX": {
                "image": "NONE",
                "buffer": "R16G16B16A16_FLOAT"
            },
            "X2R10G10B10_SNORM_VERTEX": {
                "image": "NONE",
                "buffer": "R16G16B16A16_FLOAT"
            },
            "X2R10G10B10_UNORM_VERTEX": {
                "image": "NONE",
                "buffer": "R16G16B16A16_FLOAT"
            },
            "D32_FLOAT_S8X24_UINT": {
                "image": ["D24_UNORM_S8_UINT", "D32_FLOAT_S8X24_UINT"]
            },
            "D24_UNORM_S8_UINT": {
                "image": ["D32_FLOAT_S8X24_UINT", "D24_UNORM_S8_UINT"]
            },
            "S8_UINT": {
                "image": ["D24_UNORM_S8_UINT", "D32_FLOAT_S8X24_UINT", "S8_UINT"]
            },
    
            "R8_USCALED": {
                "buffer": "R16_FLOAT"
            },
            "R8_SSCALED": {
                "buffer": "R16_FLOAT"
            },
            "R8G8_USCALED": {
                "buffer": "R16G16_FLOAT"
            },
            "R8G8_SSCALED": {
                "buffer": "R16G16_FLOAT"
            },
            "R8G8B8_UNORM": {
                "image": "R8G8B8A8_UNORM",
                "buffer": "R8G8B8A8_UNORM"
            },
            "R8G8B8_SNORM": {
                "image": "R8G8B8A8_SNORM",
                "buffer": "R8G8B8A8_SNORM"
            },
            "R8G8B8_USCALED": {
                "buffer": ["R16G16B16_FLOAT", "R16G16B16A16_FLOAT"]
            },
            "R8G8B8_SSCALED": {
                "buffer": ["R16G16B16_FLOAT", "R16G16B16A16_FLOAT"]
            },
            "R8G8B8A8_USCALED": {
                "buffer": "R16G16B16A16_FLOAT"
            },
            "R8G8B8A8_SSCALED": {
                "buffer": "R16G16B16A16_FLOAT"
            },
    
            "R16_USCALED": {
                "buffer": "R32_FLOAT",
                "buffer_compressed": "R16_FLOAT"
            },
            "R16_SSCALED": {
                "buffer": "R32_FLOAT",
                "buffer_compressed": "R16_FLOAT"
            },
            "R16G16_USCALED": {
                "buffer": "R32G32_FLOAT",
                "buffer_compressed": "R16G16_FLOAT"
            },
            "R16G16_SSCALED": {
                "buffer": "R32G32_FLOAT",
                "buffer_compressed": "R16G16_FLOAT"
            },
            "R16G16B16_UNORM": {
                "buffer": "R32G32B32_FLOAT",
                "buffer_compressed": ["R16G16B16_FLOAT", "R16G16B16A16_FLOAT"]
            },
            "R16G16B16_SNORM": {
                "buffer": "R32G32B32_FLOAT",
                "buffer_compressed": ["R16G16B16_FLOAT", "R16G16B16A16_FLOAT"]
            },
            "R16G16B16_USCALED": {
                "buffer": "R32G32B32_FLOAT",
                "buffer_compressed": ["R16G16B16_FLOAT", "R16G16B16A16_FLOAT"]
            },
            "R16G16B16_SSCALED": {
                "buffer": "R32G32B32_FLOAT",
                "buffer_compressed": ["R16G16B16_FLOAT", "R16G16B16A16_FLOAT"]
            },
            "R16G16B16A16_USCALED": {
                "buffer": "R32G32B32A32_FLOAT",
                "buffer_compressed": "R16G16B16A16_FLOAT"
            },
            "R16G16B16A16_SSCALED": {
                "buffer": "R32G32B32A32_FLOAT",
                "buffer_compressed": "R16G16B16A16_FLOAT"
            },
            "R32G32B32_UINT": {
                "image": "R32G32B32A32_UINT"
            },
            "R32G32B32_SINT": {
                "image": "R32G32B32A32_SINT"
            },
            "R16G16B16_UINT": {
                "image": "R16G16B16A16_UINT",
                "buffer": "R16G16B16A16_UINT"
            },
            "R16G16B16_SINT": {
                "image": "R16G16B16A16_SINT",
                "buffer": "R16G16B16A16_SINT"
            },
            "R8G8B8_UINT": {
                "image": "R8G8B8A8_UINT",
                "buffer": "R8G8B8A8_UINT"
            },
            "R8G8B8_SINT": {
                "image": "R8G8B8A8_SINT",
                "buffer": "R8G8B8A8_SINT"
            },
            "R16G16B16_FLOAT": {
                "image": "R16G16B16A16_FLOAT",
                "buffer": "R16G16B16A16_FLOAT"
            },
            "R32G32B32_FLOAT": {
                "image": "R32G32B32A32_FLOAT",
                "buffer_compressed": ["R16G16B16_FLOAT", "R16G16B16A16_FLOAT"]
            },
            "ETC2_R8G8B8_UNORM_BLOCK": {
                "image": "R8G8B8A8_UNORM"
            },
            "ETC2_R8G8B8_SRGB_BLOCK": {
                "image": "R8G8B8A8_UNORM_SRGB"
            },
            "ETC2_R8G8B8A1_UNORM_BLOCK": {
                "image": "R8G8B8A8_UNORM"
            },
            "ETC2_R8G8B8A1_SRGB_BLOCK": {
                "image": "R8G8B8A8_UNORM_SRGB"
            },
            "ETC2_R8G8B8A8_UNORM_BLOCK": {
                "image": "R8G8B8A8_UNORM"
            },
            "ETC2_R8G8B8A8_SRGB_BLOCK": {
                "image": "R8G8B8A8_UNORM_SRGB"
            },
            "EAC_R11_UNORM_BLOCK": {
                "image": ["R16_UNORM", "R16_FLOAT"]
            },
            "EAC_R11_SNORM_BLOCK": {
                "image": ["R16_SNORM", "R16_FLOAT"]
            },
            "EAC_R11G11_UNORM_BLOCK": {
                "image": ["R16G16_UNORM", "R16G16_FLOAT"]
            },
            "EAC_R11G11_SNORM_BLOCK": {
                "image": ["R16G16_SNORM", "R16G16_FLOAT"]
            },
            "R10G10B10A2_SNORM": {
                "buffer": "R16G16B16A16_FLOAT"
            },
            "R10G10B10A2_USCALED": {
                "buffer": "R16G16B16A16_FLOAT"
            },
            "R10G10B10A2_SSCALED": {
                "buffer": "R16G16B16A16_FLOAT"
            },
            "R10G10B10A2_UINT": {
                "buffer": "R16G16B16A16_UINT"
            },
            "R10G10B10A2_SINT": {
                "buffer": "R16G16B16A16_SINT"
            }
        }
    }