Edit

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

Branch :

  • Show log

    Commit

  • Author : James Dong
    Date : 2019-06-18 15:30:16
    Hash : 8bb6baa0
    Message : Vulkan: improve handling of RGB texture formats Adds fallback for some RGB textures using the corresponding RGBA formats and modifies fallback calculation to not require filtering/rendering for formats which are not required to support filtering by GL spec. Bug: angleproject:3190 Bug: angleproject:3196 Change-Id: I7beaf9881d63e3c6bd9339faede0333919a4174c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1665894 Commit-Queue: James Dong <dongja@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@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 overrides table for emulation.",
            "",
            "We implement formats that aren't natively supported in Vulkan using",
            "fallback and override 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 or override format.",
            "",
            "Override formats are used for emulated support for formats we assume are never",
            "supported by any Vulkan device, although they might exist. Fallback formats",
            "differ in that they are tested at runtime for support, and we only fall back",
            "if the main format is not available on this device.",
            "",
            "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_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_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_UNORM": "VK_FORMAT_R8G8B8_UNORM",
            "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",
            "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",
            "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",
            "BPTC_RGB_UNSIGNED_FLOAT_BLOCK": "VK_FORMAT_BC6H_UFLOAT_BLOCK",
            "BPTC_RGB_SIGNED_FLOAT_BLOCK": "VK_FORMAT_BC6H_SFLOAT_BLOCK",
            "BPTC_RGBA_UNORM_BLOCK": "VK_FORMAT_BC7_UNORM_BLOCK",
            "BPTC_SRGB_ALPHA_UNORM_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"
        },
        "overrides": {
            "A16_FLOAT": {
                "image": "R16_FLOAT"
            },
            "A32_FLOAT": {
                "image": "R32_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": {
                "image": "R8G8B8A8_UNORM"
            },
            "R8G8B8_UNORM_SRGB": {
                "image": "R8G8B8A8_UNORM_SRGB"
            },
            "B8G8R8X8_UNORM": {
                "buffer": "NONE",
                "image": "B8G8R8A8_UNORM"
            },
            "D24_UNORM_X8_UINT": {
                "buffer": "NONE",
                "image": "D24_UNORM_S8_UINT"
            },
            "D32_UNORM": {
                "buffer": "NONE",
                "image": "D24_UNORM_S8_UINT"
            },
            "ETC1_R8G8B8_UNORM_BLOCK": {
                "buffer": "NONE",
                "image": "ETC2_R8G8B8_UNORM_BLOCK"
            },
            "R32_FIXED": {
                "buffer": "R32_FLOAT"
            },
            "R32G32_FIXED": {
                "buffer": "R32G32_FLOAT"
            },
            "R32G32B32_FIXED": {
                "buffer": "R32G32B32_FLOAT"
            },
            "R32G32B32A32_FIXED": {
                "buffer": "R32G32B32A32_FLOAT"
            }
        },
        "fallbacks": {
            "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"]
            },
            "D24_UNORM_X8_UINT": {
                "image": ["D32_FLOAT_S8X24_UINT", "D24_UNORM_S8_UINT"]
            },
            "S8_UINT": {
                "image": ["D24_UNORM_S8_UINT", "D32_FLOAT_S8X24_UINT", "S8_UINT"]
            },
    
            "R8_UNORM": {
                "buffer": "R32_FLOAT"
            },
            "R8_SNORM": {
                "buffer": "R32_FLOAT"
            },
            "R8_USCALED": {
                "buffer": "R32_FLOAT"
            },
            "R8_SSCALED": {
                "buffer": "R32_FLOAT"
            },
            "R8G8_UNORM": {
                "buffer": "R32G32_FLOAT"
            },
            "R8G8_SNORM": {
                "buffer": "R32G32_FLOAT"
            },
            "R8G8_USCALED": {
                "buffer": "R32G32_FLOAT"
            },
            "R8G8_SSCALED": {
                "buffer": "R32G32_FLOAT"
            },
            "R8G8B8_UNORM": {
                "buffer": "R32G32B32_FLOAT"
            },
            "R8G8B8_SNORM": {
                "image": "R8G8B8A8_SNORM",
                "buffer": "R32G32B32_FLOAT"
            },
            "R8G8B8_USCALED": {
                "buffer": "R32G32B32_FLOAT"
            },
            "R8G8B8_SSCALED": {
                "buffer": "R32G32B32_FLOAT"
            },
            "R8G8B8A8_UNORM": {
                "buffer": "R32G32B32A32_FLOAT"
            },
            "R8G8B8A8_SNORM": {
                "buffer": "R32G32B32A32_FLOAT"
            },
            "R8G8B8A8_USCALED": {
                "buffer": "R32G32B32A32_FLOAT"
            },
            "R8G8B8A8_SSCALED": {
                "buffer": "R32G32B32A32_FLOAT"
            },
    
            "R16_UNORM": {
                "buffer": "R32_FLOAT"
            },
            "R16_SNORM": {
                "buffer": "R32_FLOAT"
            },
            "R16_USCALED": {
                "buffer": "R32_FLOAT"
            },
            "R16_SSCALED": {
                "buffer": "R32_FLOAT"
            },
            "R16G16_UNORM": {
                "buffer": "R32G32_FLOAT"
            },
            "R16G16_SNORM": {
                "buffer": "R32G32_FLOAT"
            },
            "R16G16_USCALED": {
                "buffer": "R32G32_FLOAT"
            },
            "R16G16_SSCALED": {
                "buffer": "R32G32_FLOAT"
            },
            "R16G16B16_UNORM": {
                "buffer": "R32G32B32_FLOAT"
            },
            "R16G16B16_SNORM": {
                "buffer": "R32G32B32_FLOAT"
            },
            "R16G16B16_USCALED": {
                "buffer": "R32G32B32_FLOAT"
            },
            "R16G16B16_SSCALED": {
                "buffer": "R32G32B32_FLOAT"
            },
            "R16G16B16A16_UNORM": {
                "buffer": "R32G32B32A32_FLOAT"
            },
            "R16G16B16A16_SNORM": {
                "buffer": "R32G32B32A32_FLOAT"
            },
            "R16G16B16A16_USCALED": {
                "buffer": "R32G32B32A32_FLOAT"
            },
            "R16G16B16A16_SSCALED": {
                "buffer": "R32G32B32A32_FLOAT"
            },
            "R32G32B32_UINT": {
                "image": "R32G32B32A32_UINT"
            },
            "R32G32B32_SINT": {
                "image": "R32G32B32A32_SINT"
            },
            "R16G16B16_UINT": {
                "image": "R16G16B16A16_UINT"
            },
            "R16G16B16_SINT": {
                "image": "R16G16B16A16_SINT"
            },
            "R8G8B8_UINT": {
                "image": "R8G8B8A8_UINT"
            },
            "R8G8B8_SINT": {
                "image": "R8G8B8A8_SINT"
            },
            "R16G16B16_FLOAT": {
                "image": "R16G16B16A16_FLOAT"
            },
            "R32G32B32_FLOAT": {
                "image": "R32G32B32A32_FLOAT"
            }
        }
    }