Commit fb4eea2e by Jamie Madill Committed by Commit Bot

Vulkan: Index mandatory support table by ANGLE format.

This removes another instance of indexing a flat array by VkFormat. With the introduction of YUV formats we no longer have a compact table. Switching to ANGLE format indexing allows us to keep a flat array and avoid using an unordered map. Bug: angleproject:5438 Change-Id: I96caa19e3b7ce419ce09680399919447f002b0bd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2622238Reviewed-by: 's avatarIan Elliott <ianelliott@google.com> Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent 8db7915e
...@@ -2,11 +2,13 @@ ...@@ -2,11 +2,13 @@
"src/libANGLE/renderer/angle_format.py": "src/libANGLE/renderer/angle_format.py":
"32ba71942c0fd00e6807104f1bb80a3c", "32ba71942c0fd00e6807104f1bb80a3c",
"src/libANGLE/renderer/vulkan/gen_vk_mandatory_format_support_table.py": "src/libANGLE/renderer/vulkan/gen_vk_mandatory_format_support_table.py":
"791db4381676327e49c7a9046423136a", "0d798546ff1b4932164a64b9404396bb",
"src/libANGLE/renderer/vulkan/vk_format_map.json":
"b62588b1e9f6d9fa98aeea886d8ed2bd",
"src/libANGLE/renderer/vulkan/vk_mandatory_format_support_data.json": "src/libANGLE/renderer/vulkan/vk_mandatory_format_support_data.json":
"fa2bd54c1bb0ab2cf1d386061a4bc5c5", "fa2bd54c1bb0ab2cf1d386061a4bc5c5",
"src/libANGLE/renderer/vulkan/vk_mandatory_format_support_table_autogen.cpp": "src/libANGLE/renderer/vulkan/vk_mandatory_format_support_table_autogen.cpp":
"8bfd8a3857c2b9062d7ada46c7d27bcf", "ed2e75f0b4eec5ad9f55227c5578e0d6",
"third_party/vulkan-deps/vulkan-headers/src/registry/vk.xml": "third_party/vulkan-deps/vulkan-headers/src/registry/vk.xml":
"e7129a174322b4f0a2c8c1229e91f04c" "e7129a174322b4f0a2c8c1229e91f04c"
} }
\ No newline at end of file
...@@ -2330,16 +2330,16 @@ VkFormatFeatureFlags RendererVk::getFormatFeatureBits(angle::FormatID formatID, ...@@ -2330,16 +2330,16 @@ VkFormatFeatureFlags RendererVk::getFormatFeatureBits(angle::FormatID formatID,
if (deviceProperties.bufferFeatures == kInvalidFormatFeatureFlags) if (deviceProperties.bufferFeatures == kInvalidFormatFeatureFlags)
{ {
VkFormat vkFormat = vk::GetVkFormatFromFormatID(formatID);
// If we don't have the actual device features, see if the requested features are mandatory. // If we don't have the actual device features, see if the requested features are mandatory.
// If so, there's no need to query the device. // If so, there's no need to query the device.
const VkFormatProperties &mandatoryProperties = vk::GetMandatoryFormatSupport(vkFormat); const VkFormatProperties &mandatoryProperties = vk::GetMandatoryFormatSupport(formatID);
if (IsMaskFlagSet(mandatoryProperties.*features, featureBits)) if (IsMaskFlagSet(mandatoryProperties.*features, featureBits))
{ {
return featureBits; return featureBits;
} }
VkFormat vkFormat = vk::GetVkFormatFromFormatID(formatID);
// Otherwise query the format features and cache it. // Otherwise query the format features and cache it.
vkGetPhysicalDeviceFormatProperties(mPhysicalDevice, vkFormat, &deviceProperties); vkGetPhysicalDeviceFormatProperties(mPhysicalDevice, vkFormat, &deviceProperties);
// Workaround for some Android devices that don't indicate filtering // Workaround for some Android devices that don't indicate filtering
......
...@@ -15,7 +15,7 @@ import angle_format ...@@ -15,7 +15,7 @@ import angle_format
import xml.etree.ElementTree as etree import xml.etree.ElementTree as etree
import sys, os import sys, os
template_table_autogen_cpp = """// GENERATED FILE - DO NOT EDIT. TEMPLATE_TABLE_AUTOGEN_CPP = """// GENERATED FILE - DO NOT EDIT.
// Generated by {script_name} using data from {input_file_name} and // Generated by {script_name} using data from {input_file_name} and
// the vk.xml file situated at // the vk.xml file situated at
// /third_party/vulkan-validation-layers/src/scripts/vk.xml // /third_party/vulkan-validation-layers/src/scripts/vk.xml
...@@ -33,53 +33,63 @@ using namespace angle; ...@@ -33,53 +33,63 @@ using namespace angle;
namespace rx namespace rx
{{ {{
namespace vk namespace vk
{{ {{
namespace namespace
{{ {{
static_assert({num_formats} == kNumVkFormats, "Update kNumVkFormats"); constexpr VkFormatFeatureFlagBits BLIT_DST = VK_FORMAT_FEATURE_BLIT_DST_BIT;
constexpr std::array<VkFormatProperties, kNumVkFormats> kFormatProperties = {{{{ constexpr VkFormatFeatureFlagBits BLIT_SRC = VK_FORMAT_FEATURE_BLIT_SRC_BIT;
constexpr VkFormatFeatureFlagBits COLOR_ATTACHMENT = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT;
constexpr VkFormatFeatureFlagBits COLOR_ATTACHMENT_BLEND = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT;
constexpr VkFormatFeatureFlagBits DEPTH_STENCIL_ATTACHMENT = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT;
constexpr VkFormatFeatureFlagBits SAMPLED_IMAGE = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT;
constexpr VkFormatFeatureFlagBits SAMPLED_IMAGE_FILTER_LINEAR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT;
constexpr VkFormatFeatureFlagBits STORAGE_IMAGE = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;
constexpr VkFormatFeatureFlagBits STORAGE_IMAGE_ATOMIC = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT;
constexpr VkFormatFeatureFlagBits STORAGE_TEXEL_BUFFER = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT;
constexpr VkFormatFeatureFlagBits STORAGE_TEXEL_BUFFER_ATOMIC = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT;
constexpr VkFormatFeatureFlagBits UNIFORM_TEXEL_BUFFER = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT;
constexpr VkFormatFeatureFlagBits VERTEX_BUFFER = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT;
using namespace angle;
constexpr FormatMap<VkFormatProperties> kFormatProperties = {{
{format_case_data} {format_case_data}
}}}}; }};
}} // anonymous namespace }} // anonymous namespace
const VkFormatProperties& GetMandatoryFormatSupport(VkFormat vkFormat) const VkFormatProperties& GetMandatoryFormatSupport(FormatID formatID)
{{ {{
ASSERT(static_cast<uint64_t>(vkFormat) < sizeof(kFormatProperties)); return kFormatProperties[formatID];
return kFormatProperties[vkFormat];
}} }}
}} // namespace vk }} // namespace vk
}} // namespace rx }} // namespace rx
""" """
template_format_property = """ TEMPLATE_FORMAT_PROPERTY = """{{FormatID::{format_id}, {{0, {optimal_features}, {buffer_features}}}}}"""
/* {vk_format} */
{{0, {optimal_features}, {buffer_features}}}"""
def script_relative(path): def script_relative(path):
return os.path.join(os.path.dirname(sys.argv[0]), path) return os.path.join(os.path.dirname(sys.argv[0]), path)
def gen_format_case(index, vk_to_index_to_format_map, vk_map): def gen_format_case(format_id, vk_format, vk_map):
vk_format = vk_to_index_to_format_map[index]
def de(str):
return str.replace("VK_FORMAT_FEATURE_", "").replace("_BIT", "")
if vk_format in vk_map and len(vk_map[vk_format]) > 0: if vk_format in vk_map and len(vk_map[vk_format]) > 0:
# Check which feature is a buffer feature or not. # Check which feature is a buffer feature or not.
buffer_features = [x for x in vk_map[vk_format] if x.find("_BUFFER_") != -1] buffer_features = [de(x) for x in vk_map[vk_format] if x.find("_BUFFER_") != -1]
optimal_features = [x for x in vk_map[vk_format] if x.find("_BUFFER_") == -1] optimal_features = [de(x) for x in vk_map[vk_format] if x.find("_BUFFER_") == -1]
optimal_features_str = "|".join(optimal_features) if len(optimal_features) else "0" optimal_features_str = "|".join(sorted(optimal_features)) if len(optimal_features) else "0"
buffer_features_str = "|".join(buffer_features) if len(buffer_features) else "0" buffer_features_str = "|".join(sorted(buffer_features)) if len(buffer_features) else "0"
else: else:
optimal_features_str = "0" optimal_features_str = "0"
buffer_features_str = "0" buffer_features_str = "0"
return template_format_property.format( return TEMPLATE_FORMAT_PROPERTY.format(
format_id=format_id,
vk_format=vk_format, vk_format=vk_format,
optimal_features=optimal_features_str, optimal_features=optimal_features_str,
buffer_features=buffer_features_str) buffer_features=buffer_features_str)
...@@ -88,6 +98,7 @@ def gen_format_case(index, vk_to_index_to_format_map, vk_map): ...@@ -88,6 +98,7 @@ def gen_format_case(index, vk_to_index_to_format_map, vk_map):
def main(): def main():
input_file_name = 'vk_mandatory_format_support_data.json' input_file_name = 'vk_mandatory_format_support_data.json'
vk_format_map_path = 'vk_format_map.json'
out_file_name = 'vk_mandatory_format_support_table_autogen.cpp' out_file_name = 'vk_mandatory_format_support_table_autogen.cpp'
vk_xml_file = '../../../../third_party/vulkan-deps/vulkan-headers/src/registry/vk.xml' vk_xml_file = '../../../../third_party/vulkan-deps/vulkan-headers/src/registry/vk.xml'
...@@ -96,6 +107,7 @@ def main(): ...@@ -96,6 +107,7 @@ def main():
inputs = [ inputs = [
'../angle_format.py', '../angle_format.py',
input_file_name, input_file_name,
vk_format_map_path,
vk_xml_file, vk_xml_file,
] ]
outputs = [out_file_name] outputs = [out_file_name]
...@@ -112,22 +124,15 @@ def main(): ...@@ -112,22 +124,15 @@ def main():
tree = etree.parse(script_relative(vk_xml_file)) tree = etree.parse(script_relative(vk_xml_file))
root = tree.getroot() root = tree.getroot()
vk_format_enums = root.findall(".//enums[@name='VkFormat']/enum") vk_format_enums = root.findall(".//enums[@name='VkFormat']/enum")
vk_format_name_to_index_map = {}
num_formats = len(vk_format_enums)
for format_enum in vk_format_enums:
index = int(format_enum.attrib['value'])
vk_format = format_enum.attrib['name']
vk_format_name_to_index_map[index] = vk_format
vk_map = angle_format.load_json(input_file_name) vk_map = angle_format.load_json(input_file_name)
vk_format_map = angle_format.load_json(vk_format_map_path)
vk_cases = [ vk_cases = [
gen_format_case(index, vk_format_name_to_index_map, vk_map) gen_format_case(format_id, vk_format, vk_map)
for index in vk_format_name_to_index_map for format_id, vk_format in vk_format_map["map"].iteritems()
] ]
output_cpp = template_table_autogen_cpp.format( output_cpp = TEMPLATE_TABLE_AUTOGEN_CPP.format(
num_formats=num_formats, format_case_data=",\n".join(vk_cases),
format_case_data="\n,".join(vk_cases),
script_name=__file__, script_name=__file__,
out_file_name=out_file_name, out_file_name=out_file_name,
input_file_name=input_file_name) input_file_name=input_file_name)
......
...@@ -178,7 +178,7 @@ class FormatTable final : angle::NonCopyable ...@@ -178,7 +178,7 @@ class FormatTable final : angle::NonCopyable
// if the format is a mandatory format described in section 31.3.3. Required Format Support // if the format is a mandatory format described in section 31.3.3. Required Format Support
// of the Vulkan spec. If the vkFormat isn't mandatory, it will return a VkFormatProperties // of the Vulkan spec. If the vkFormat isn't mandatory, it will return a VkFormatProperties
// initialized to 0. // initialized to 0.
const VkFormatProperties &GetMandatoryFormatSupport(VkFormat vkFormat); const VkFormatProperties &GetMandatoryFormatSupport(angle::FormatID formatID);
VkImageUsageFlags GetMaximalImageUsageFlags(RendererVk *renderer, angle::FormatID formatID); VkImageUsageFlags GetMaximalImageUsageFlags(RendererVk *renderer, angle::FormatID formatID);
......
...@@ -16,594 +16,281 @@ using namespace angle; ...@@ -16,594 +16,281 @@ using namespace angle;
namespace rx namespace rx
{ {
namespace vk namespace vk
{ {
namespace namespace
{ {
static_assert(185 == kNumVkFormats, "Update kNumVkFormats"); constexpr VkFormatFeatureFlagBits BLIT_DST = VK_FORMAT_FEATURE_BLIT_DST_BIT;
constexpr std::array<VkFormatProperties, kNumVkFormats> kFormatProperties = {{ constexpr VkFormatFeatureFlagBits BLIT_SRC = VK_FORMAT_FEATURE_BLIT_SRC_BIT;
constexpr VkFormatFeatureFlagBits COLOR_ATTACHMENT = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT;
constexpr VkFormatFeatureFlagBits COLOR_ATTACHMENT_BLEND =
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT;
constexpr VkFormatFeatureFlagBits DEPTH_STENCIL_ATTACHMENT =
VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT;
constexpr VkFormatFeatureFlagBits SAMPLED_IMAGE = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT;
constexpr VkFormatFeatureFlagBits SAMPLED_IMAGE_FILTER_LINEAR =
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT;
constexpr VkFormatFeatureFlagBits STORAGE_IMAGE = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT;
constexpr VkFormatFeatureFlagBits STORAGE_IMAGE_ATOMIC = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT;
constexpr VkFormatFeatureFlagBits STORAGE_TEXEL_BUFFER = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT;
constexpr VkFormatFeatureFlagBits STORAGE_TEXEL_BUFFER_ATOMIC =
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT;
constexpr VkFormatFeatureFlagBits UNIFORM_TEXEL_BUFFER = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT;
constexpr VkFormatFeatureFlagBits VERTEX_BUFFER = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT;
using namespace angle;
/* VK_FORMAT_UNDEFINED */ constexpr FormatMap<VkFormatProperties> kFormatProperties = {
{0, 0, 0}, {FormatID::R8G8_USCALED, {0, 0, 0}},
/* VK_FORMAT_R4G4_UNORM_PACK8 */ {FormatID::D32_FLOAT_S8X24_UINT, {0, 0, 0}},
{0, 0, 0}, {FormatID::ETC2_R8G8B8_SRGB_BLOCK, {0, 0, 0}},
/* VK_FORMAT_R4G4B4A4_UNORM_PACK16 */ {FormatID::R32G32B32A32_SINT,
{0, 0, 0}, {0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE | STORAGE_IMAGE,
/* VK_FORMAT_B4G4R4A4_UNORM_PACK16 */ STORAGE_TEXEL_BUFFER | UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
{0, {FormatID::ASTC_10x8_SRGB_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | {FormatID::R16G16B16_USCALED, {0, 0, 0}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT, {FormatID::BC4_RED_SNORM_BLOCK, {0, 0, 0}},
0}, {FormatID::R16G16B16_SNORM, {0, 0, 0}},
/* VK_FORMAT_R5G6B5_UNORM_PACK16 */ {FormatID::S8_UINT, {0, 0, 0}},
{0, {FormatID::R8G8B8_USCALED, {0, 0, 0}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | {FormatID::ASTC_5x4_UNORM_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT | {FormatID::BC5_RG_UNORM_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT | {FormatID::ASTC_8x5_SRGB_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, {FormatID::R8G8_SNORM,
0}, {0, BLIT_SRC | SAMPLED_IMAGE | SAMPLED_IMAGE_FILTER_LINEAR,
/* VK_FORMAT_B5G6R5_UNORM_PACK16 */ UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
{0, 0, 0}, {FormatID::R16G16B16_UINT, {0, 0, 0}},
/* VK_FORMAT_R5G5B5A1_UNORM_PACK16 */ {FormatID::ETC2_R8G8B8A8_UNORM_BLOCK, {0, 0, 0}},
{0, 0, 0}, {FormatID::R16G16_UINT,
/* VK_FORMAT_B5G5R5A1_UNORM_PACK16 */ {0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE,
{0, 0, 0}, UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
/* VK_FORMAT_A1R5G5B5_UNORM_PACK16 */ {FormatID::R16_USCALED, {0, 0, 0}},
{0, {FormatID::BC3_RGBA_UNORM_SRGB_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | {FormatID::R8_SINT,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT | {0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE,
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT | UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, {FormatID::R11G11B10_FLOAT,
0}, {0, BLIT_SRC | SAMPLED_IMAGE | SAMPLED_IMAGE_FILTER_LINEAR, UNIFORM_TEXEL_BUFFER}},
/* VK_FORMAT_R8_UNORM */ {FormatID::D24_UNORM_S8_UINT, {0, 0, 0}},
{0, {FormatID::B4G4R4A4_UNORM, {0, BLIT_SRC | SAMPLED_IMAGE | SAMPLED_IMAGE_FILTER_LINEAR, 0}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | {FormatID::ASTC_12x10_UNORM_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT | {FormatID::R8G8B8_SSCALED, {0, 0, 0}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT | {FormatID::R32G32B32_UINT, {0, 0, VERTEX_BUFFER}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, {FormatID::R16_SINT,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT}, {0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE,
/* VK_FORMAT_R8_SNORM */ UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
{0, {FormatID::D16_UNORM, {0, BLIT_SRC | DEPTH_STENCIL_ATTACHMENT | SAMPLED_IMAGE, 0}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | {FormatID::ASTC_4x4_UNORM_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT, {FormatID::ASTC_8x8_SRGB_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT}, {FormatID::R8_USCALED, {0, 0, 0}},
/* VK_FORMAT_R8_USCALED */ {FormatID::R8G8B8_UNORM_SRGB, {0, 0, 0}},
{0, 0, 0}, {FormatID::BPTC_RGB_UNSIGNED_FLOAT_BLOCK, {0, 0, 0}},
/* VK_FORMAT_R8_SSCALED */ {FormatID::B5G5R5A1_UNORM, {0, 0, 0}},
{0, 0, 0}, {FormatID::R16G16_SSCALED, {0, 0, 0}},
/* VK_FORMAT_R8_UINT */ {FormatID::B8G8R8A8_UNORM_SRGB,
{0, {0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | COLOR_ATTACHMENT_BLEND | SAMPLED_IMAGE |
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT, SAMPLED_IMAGE_FILTER_LINEAR,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT}, 0}},
/* VK_FORMAT_R8_SINT */ {FormatID::BC3_RGBA_UNORM_BLOCK, {0, 0, 0}},
{0, {FormatID::R16_FLOAT,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | {0,
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | COLOR_ATTACHMENT_BLEND | SAMPLED_IMAGE |
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT}, SAMPLED_IMAGE_FILTER_LINEAR,
/* VK_FORMAT_R8_SRGB */ UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
{0, 0, 0}, {FormatID::R8G8B8A8_SNORM,
/* VK_FORMAT_R8G8_UNORM */ {0, BLIT_SRC | SAMPLED_IMAGE | SAMPLED_IMAGE_FILTER_LINEAR | STORAGE_IMAGE,
{0, STORAGE_TEXEL_BUFFER | UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | {FormatID::R8G8B8A8_SSCALED, {0, 0, 0}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT | {FormatID::R8_UNORM_SRGB, {0, 0, 0}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT | {FormatID::BC1_RGBA_UNORM_SRGB_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, {FormatID::ASTC_10x10_SRGB_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT}, {FormatID::R10G10B10A2_UNORM,
/* VK_FORMAT_R8G8_SNORM */ {0,
{0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | COLOR_ATTACHMENT_BLEND | SAMPLED_IMAGE |
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | SAMPLED_IMAGE_FILTER_LINEAR,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT, UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT}, {FormatID::ASTC_12x10_SRGB_BLOCK, {0, 0, 0}},
/* VK_FORMAT_R8G8_USCALED */ {FormatID::ASTC_5x4_SRGB_BLOCK, {0, 0, 0}},
{0, 0, 0}, {FormatID::ASTC_8x5_UNORM_BLOCK, {0, 0, 0}},
/* VK_FORMAT_R8G8_SSCALED */ {FormatID::R16G16B16A16_USCALED, {0, 0, 0}},
{0, 0, 0}, {FormatID::R8G8B8A8_UNORM_SRGB,
/* VK_FORMAT_R8G8_UINT */ {0,
{0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | COLOR_ATTACHMENT_BLEND | SAMPLED_IMAGE |
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | SAMPLED_IMAGE_FILTER_LINEAR,
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT, 0}},
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT}, {FormatID::NONE, {0, 0, 0}},
/* VK_FORMAT_R8G8_SINT */ {FormatID::R32G32_UINT,
{0, {0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE | STORAGE_IMAGE,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | STORAGE_TEXEL_BUFFER | UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT, {FormatID::R16G16_SNORM, {0, 0, VERTEX_BUFFER}},
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT}, {FormatID::R16_UNORM, {0, 0, VERTEX_BUFFER}},
/* VK_FORMAT_R8G8_SRGB */ {FormatID::R10G10B10A2_SINT, {0, 0, 0}},
{0, 0, 0}, {FormatID::R16G16B16A16_FLOAT,
/* VK_FORMAT_R8G8B8_UNORM */ {0,
{0, 0, 0}, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | COLOR_ATTACHMENT_BLEND | SAMPLED_IMAGE |
/* VK_FORMAT_R8G8B8_SNORM */ SAMPLED_IMAGE_FILTER_LINEAR | STORAGE_IMAGE,
{0, 0, 0}, STORAGE_TEXEL_BUFFER | UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
/* VK_FORMAT_R8G8B8_USCALED */ {FormatID::ASTC_5x5_SRGB_BLOCK, {0, 0, 0}},
{0, 0, 0}, {FormatID::EAC_R11_SNORM_BLOCK, {0, 0, 0}},
/* VK_FORMAT_R8G8B8_SSCALED */ {FormatID::ASTC_8x6_SRGB_BLOCK, {0, 0, 0}},
{0, 0, 0}, {FormatID::R8G8B8A8_USCALED, {0, 0, 0}},
/* VK_FORMAT_R8G8B8_UINT */ {FormatID::ASTC_6x5_UNORM_BLOCK, {0, 0, 0}},
{0, 0, 0}, {FormatID::R8G8B8A8_UINT,
/* VK_FORMAT_R8G8B8_SINT */ {0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE | STORAGE_IMAGE,
{0, 0, 0}, STORAGE_TEXEL_BUFFER | UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
/* VK_FORMAT_R8G8B8_SRGB */ {FormatID::R5G6B5_UNORM,
{0, 0, 0}, {0,
/* VK_FORMAT_B8G8R8_UNORM */ BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | COLOR_ATTACHMENT_BLEND | SAMPLED_IMAGE |
{0, 0, 0}, SAMPLED_IMAGE_FILTER_LINEAR,
/* VK_FORMAT_B8G8R8_SNORM */ 0}},
{0, 0, 0}, {FormatID::R8G8B8A8_SINT,
/* VK_FORMAT_B8G8R8_USCALED */ {0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE | STORAGE_IMAGE,
{0, 0, 0}, STORAGE_TEXEL_BUFFER | UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
/* VK_FORMAT_B8G8R8_SSCALED */ {FormatID::B8G8R8A8_UNORM,
{0, 0, 0}, {0,
/* VK_FORMAT_B8G8R8_UINT */ BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | COLOR_ATTACHMENT_BLEND | SAMPLED_IMAGE |
{0, 0, 0}, SAMPLED_IMAGE_FILTER_LINEAR,
/* VK_FORMAT_B8G8R8_SINT */ UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
{0, 0, 0}, {FormatID::R32G32B32A32_FLOAT,
/* VK_FORMAT_B8G8R8_SRGB */ {0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE | STORAGE_IMAGE,
{0, 0, 0}, STORAGE_TEXEL_BUFFER | UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
/* VK_FORMAT_R8G8B8A8_UNORM */ {FormatID::R16G16B16_UNORM, {0, 0, 0}},
{0, {FormatID::BC2_RGBA_UNORM_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | {FormatID::ASTC_12x12_UNORM_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT | VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | {FormatID::ETC2_R8G8B8A8_SRGB_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT | {FormatID::R10G10B10A2_SNORM, {0, 0, 0}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, {FormatID::R8G8B8A8_UNORM,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT | {0,
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT}, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | COLOR_ATTACHMENT_BLEND | SAMPLED_IMAGE |
/* VK_FORMAT_R8G8B8A8_SNORM */ SAMPLED_IMAGE_FILTER_LINEAR | STORAGE_IMAGE,
{0, STORAGE_TEXEL_BUFFER | UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | {FormatID::ASTC_6x6_SRGB_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT | VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, {FormatID::ASTC_10x10_UNORM_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT | {FormatID::ETC2_R8G8B8A1_SRGB_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT}, {FormatID::R16G16B16_SSCALED, {0, 0, 0}},
/* VK_FORMAT_R8G8B8A8_USCALED */ {FormatID::R16G16_UNORM, {0, 0, VERTEX_BUFFER}},
{0, 0, 0}, {FormatID::D32_FLOAT, {0, 0, 0}},
/* VK_FORMAT_R8G8B8A8_SSCALED */ {FormatID::R16G16B16A16_UNORM, {0, 0, VERTEX_BUFFER}},
{0, 0, 0}, {FormatID::EAC_R11_UNORM_BLOCK, {0, 0, 0}},
/* VK_FORMAT_R8G8B8A8_UINT */ {FormatID::R16G16B16A16_UINT,
{0, {0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE | STORAGE_IMAGE,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | STORAGE_TEXEL_BUFFER | UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | {FormatID::R16G16B16A16_SINT,
VK_FORMAT_FEATURE_BLIT_DST_BIT, {0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE | STORAGE_IMAGE,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT | STORAGE_TEXEL_BUFFER | UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT}, {FormatID::BPTC_RGBA_UNORM_BLOCK, {0, 0, 0}},
/* VK_FORMAT_R8G8B8A8_SINT */ {FormatID::A1R5G5B5_UNORM,
{0, {0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | COLOR_ATTACHMENT_BLEND | SAMPLED_IMAGE |
VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | SAMPLED_IMAGE_FILTER_LINEAR,
VK_FORMAT_FEATURE_BLIT_DST_BIT, 0}},
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT | {FormatID::ASTC_8x6_UNORM_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT}, {FormatID::EAC_R11G11_SNORM_BLOCK, {0, 0, 0}},
/* VK_FORMAT_R8G8B8A8_SRGB */ {FormatID::R10G10B10A2_SSCALED, {0, 0, 0}},
{0, {FormatID::BC1_RGBA_UNORM_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | {FormatID::R32G32_SINT,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT | {0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE | STORAGE_IMAGE,
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT | STORAGE_TEXEL_BUFFER | UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, {FormatID::R32G32B32_FLOAT, {0, 0, VERTEX_BUFFER}},
0}, {FormatID::R8_UINT,
/* VK_FORMAT_B8G8R8A8_UNORM */ {0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE,
{0, UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | {FormatID::ASTC_10x6_UNORM_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT | {FormatID::BC1_RGB_UNORM_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT | {FormatID::R4G4B4A4_UNORM, {0, 0, 0}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, {FormatID::BC1_RGB_UNORM_SRGB_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT}, {FormatID::BPTC_RGB_SIGNED_FLOAT_BLOCK, {0, 0, 0}},
/* VK_FORMAT_B8G8R8A8_SNORM */ {FormatID::R10G10B10A2_UINT,
{0, 0, 0}, {0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE, UNIFORM_TEXEL_BUFFER}},
/* VK_FORMAT_B8G8R8A8_USCALED */ {FormatID::ASTC_6x5_SRGB_BLOCK, {0, 0, 0}},
{0, 0, 0}, {FormatID::R16G16_FLOAT,
/* VK_FORMAT_B8G8R8A8_SSCALED */ {0,
{0, 0, 0}, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | COLOR_ATTACHMENT_BLEND | SAMPLED_IMAGE |
/* VK_FORMAT_B8G8R8A8_UINT */ SAMPLED_IMAGE_FILTER_LINEAR,
{0, 0, 0}, UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
/* VK_FORMAT_B8G8R8A8_SINT */ {FormatID::B5G6R5_UNORM, {0, 0, 0}},
{0, 0, 0}, {FormatID::R32_FLOAT,
/* VK_FORMAT_B8G8R8A8_SRGB */ {0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE | STORAGE_IMAGE,
{0, STORAGE_TEXEL_BUFFER | UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | {FormatID::ASTC_12x12_SRGB_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT | {FormatID::ASTC_5x5_UNORM_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT | {FormatID::R8G8B8_SINT, {0, 0, 0}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, {FormatID::ASTC_8x8_UNORM_BLOCK, {0, 0, 0}},
0}, {FormatID::R32_SINT,
/* VK_FORMAT_A8B8G8R8_UNORM_PACK32 */ {0,
{0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE | STORAGE_IMAGE | STORAGE_IMAGE_ATOMIC,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | STORAGE_TEXEL_BUFFER | STORAGE_TEXEL_BUFFER_ATOMIC | UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT | {FormatID::ETC2_R8G8B8A1_UNORM_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT | {FormatID::R16_SSCALED, {0, 0, 0}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, {FormatID::ASTC_6x6_UNORM_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT | {FormatID::R8G8B8_SNORM, {0, 0, 0}},
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT}, {FormatID::R16_UINT,
/* VK_FORMAT_A8B8G8R8_SNORM_PACK32 */ {0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE,
{0, UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | {FormatID::R8_UNORM,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT, {0,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT | BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | COLOR_ATTACHMENT_BLEND | SAMPLED_IMAGE |
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT}, SAMPLED_IMAGE_FILTER_LINEAR,
/* VK_FORMAT_A8B8G8R8_USCALED_PACK32 */ UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
{0, 0, 0}, {FormatID::R32G32_FLOAT,
/* VK_FORMAT_A8B8G8R8_SSCALED_PACK32 */ {0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE | STORAGE_IMAGE,
{0, 0, 0}, STORAGE_TEXEL_BUFFER | UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
/* VK_FORMAT_A8B8G8R8_UINT_PACK32 */ {FormatID::BC5_RG_SNORM_BLOCK, {0, 0, 0}},
{0, {FormatID::R16G16B16A16_SNORM, {0, 0, VERTEX_BUFFER}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | {FormatID::R8G8_UNORM,
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT, {0,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT | BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | COLOR_ATTACHMENT_BLEND | SAMPLED_IMAGE |
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT}, SAMPLED_IMAGE_FILTER_LINEAR,
/* VK_FORMAT_A8B8G8R8_SINT_PACK32 */ UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
{0, {FormatID::ASTC_10x6_SRGB_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | {FormatID::ASTC_10x5_UNORM_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT, {FormatID::B10G10R10A2_UNORM, {0, 0, 0}},
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT | {FormatID::BC2_RGBA_UNORM_SRGB_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT}, {FormatID::R32G32B32_SINT, {0, 0, VERTEX_BUFFER}},
/* VK_FORMAT_A8B8G8R8_SRGB_PACK32 */ {FormatID::R10G10B10A2_USCALED, {0, 0, 0}},
{0, {FormatID::R8G8_SINT,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | {0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT | UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT | {FormatID::R16G16B16A16_SSCALED, {0, 0, 0}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, {FormatID::ASTC_10x5_SRGB_BLOCK, {0, 0, 0}},
0}, {FormatID::R8_SSCALED, {0, 0, 0}},
/* VK_FORMAT_A2R10G10B10_UNORM_PACK32 */ {FormatID::R16G16B16_FLOAT, {0, 0, 0}},
{0, 0, 0}, {FormatID::R8_SNORM,
/* VK_FORMAT_A2R10G10B10_SNORM_PACK32 */ {0, BLIT_SRC | SAMPLED_IMAGE | SAMPLED_IMAGE_FILTER_LINEAR,
{0, 0, 0}, UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
/* VK_FORMAT_A2R10G10B10_USCALED_PACK32 */ {FormatID::R16_SNORM, {0, 0, VERTEX_BUFFER}},
{0, 0, 0}, {FormatID::D24_UNORM_X8_UINT, {0, 0, 0}},
/* VK_FORMAT_A2R10G10B10_SSCALED_PACK32 */ {FormatID::R16G16_SINT,
{0, 0, 0}, {0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE,
/* VK_FORMAT_A2R10G10B10_UINT_PACK32 */ UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
{0, 0, 0}, {FormatID::R16G16B16_SINT, {0, 0, 0}},
/* VK_FORMAT_A2R10G10B10_SINT_PACK32 */ {FormatID::R8G8_SSCALED, {0, 0, 0}},
{0, 0, 0}, {FormatID::EAC_R11G11_UNORM_BLOCK, {0, 0, 0}},
/* VK_FORMAT_A2B10G10R10_UNORM_PACK32 */ {FormatID::ASTC_10x8_UNORM_BLOCK, {0, 0, 0}},
{0, {FormatID::ASTC_4x4_SRGB_BLOCK, {0, 0, 0}},
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | {FormatID::R8G8_UINT,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT | {0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE,
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT | UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, {FormatID::R5G5B5A1_UNORM, {0, 0, 0}},
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT}, {FormatID::R8G8B8_UINT, {0, 0, 0}},
/* VK_FORMAT_A2B10G10R10_SNORM_PACK32 */ {FormatID::ETC2_R8G8B8_UNORM_BLOCK, {0, 0, 0}},
{0, 0, 0}, {FormatID::R32_UINT,
/* VK_FORMAT_A2B10G10R10_USCALED_PACK32 */ {0,
{0, 0, 0}, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE | STORAGE_IMAGE | STORAGE_IMAGE_ATOMIC,
/* VK_FORMAT_A2B10G10R10_SSCALED_PACK32 */ STORAGE_TEXEL_BUFFER | STORAGE_TEXEL_BUFFER_ATOMIC | UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
{0, 0, 0}, {FormatID::R9G9B9E5_SHAREDEXP, {0, BLIT_SRC | SAMPLED_IMAGE | SAMPLED_IMAGE_FILTER_LINEAR, 0}},
/* VK_FORMAT_A2B10G10R10_UINT_PACK32 */ {FormatID::BC4_RED_UNORM_BLOCK, {0, 0, 0}},
{0, {FormatID::R32G32B32A32_UINT,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT | {0, BLIT_DST | BLIT_SRC | COLOR_ATTACHMENT | SAMPLED_IMAGE | STORAGE_IMAGE,
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT, STORAGE_TEXEL_BUFFER | UNIFORM_TEXEL_BUFFER | VERTEX_BUFFER}},
VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT}, {FormatID::BPTC_SRGB_ALPHA_UNORM_BLOCK, {0, 0, 0}},
/* VK_FORMAT_A2B10G10R10_SINT_PACK32 */ {FormatID::R16G16_USCALED, {0, 0, 0}}};
{0, 0, 0},
/* VK_FORMAT_R16_UNORM */
{0, 0, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT},
/* VK_FORMAT_R16_SNORM */
{0, 0, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT},
/* VK_FORMAT_R16_USCALED */
{0, 0, 0},
/* VK_FORMAT_R16_SSCALED */
{0, 0, 0},
/* VK_FORMAT_R16_UINT */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
/* VK_FORMAT_R16_SINT */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
/* VK_FORMAT_R16_SFLOAT */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT |
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT |
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
/* VK_FORMAT_R16G16_UNORM */
{0, 0, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT},
/* VK_FORMAT_R16G16_SNORM */
{0, 0, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT},
/* VK_FORMAT_R16G16_USCALED */
{0, 0, 0},
/* VK_FORMAT_R16G16_SSCALED */
{0, 0, 0},
/* VK_FORMAT_R16G16_UINT */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
/* VK_FORMAT_R16G16_SINT */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
/* VK_FORMAT_R16G16_SFLOAT */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT |
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT |
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
/* VK_FORMAT_R16G16B16_UNORM */
{0, 0, 0},
/* VK_FORMAT_R16G16B16_SNORM */
{0, 0, 0},
/* VK_FORMAT_R16G16B16_USCALED */
{0, 0, 0},
/* VK_FORMAT_R16G16B16_SSCALED */
{0, 0, 0},
/* VK_FORMAT_R16G16B16_UINT */
{0, 0, 0},
/* VK_FORMAT_R16G16B16_SINT */
{0, 0, 0},
/* VK_FORMAT_R16G16B16_SFLOAT */
{0, 0, 0},
/* VK_FORMAT_R16G16B16A16_UNORM */
{0, 0, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT},
/* VK_FORMAT_R16G16B16A16_SNORM */
{0, 0, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT},
/* VK_FORMAT_R16G16B16A16_USCALED */
{0, 0, 0},
/* VK_FORMAT_R16G16B16A16_SSCALED */
{0, 0, 0},
/* VK_FORMAT_R16G16B16A16_UINT */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
VK_FORMAT_FEATURE_BLIT_DST_BIT,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
/* VK_FORMAT_R16G16B16A16_SINT */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
VK_FORMAT_FEATURE_BLIT_DST_BIT,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
/* VK_FORMAT_R16G16B16A16_SFLOAT */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT | VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT |
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT |
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
/* VK_FORMAT_R32_UINT */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT |
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT |
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT},
/* VK_FORMAT_R32_SINT */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT |
VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT | VK_FORMAT_FEATURE_BLIT_DST_BIT,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT |
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT},
/* VK_FORMAT_R32_SFLOAT */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
VK_FORMAT_FEATURE_BLIT_DST_BIT,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
/* VK_FORMAT_R32G32_UINT */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
VK_FORMAT_FEATURE_BLIT_DST_BIT,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
/* VK_FORMAT_R32G32_SINT */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
VK_FORMAT_FEATURE_BLIT_DST_BIT,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
/* VK_FORMAT_R32G32_SFLOAT */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
VK_FORMAT_FEATURE_BLIT_DST_BIT,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
/* VK_FORMAT_R32G32B32_UINT */
{0, 0, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT},
/* VK_FORMAT_R32G32B32_SINT */
{0, 0, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT},
/* VK_FORMAT_R32G32B32_SFLOAT */
{0, 0, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT},
/* VK_FORMAT_R32G32B32A32_UINT */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
VK_FORMAT_FEATURE_BLIT_DST_BIT,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
/* VK_FORMAT_R32G32B32A32_SINT */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
VK_FORMAT_FEATURE_BLIT_DST_BIT,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
/* VK_FORMAT_R32G32B32A32_SFLOAT */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT |
VK_FORMAT_FEATURE_BLIT_DST_BIT,
VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT |
VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT},
/* VK_FORMAT_R64_UINT */
{0, 0, 0},
/* VK_FORMAT_R64_SINT */
{0, 0, 0},
/* VK_FORMAT_R64_SFLOAT */
{0, 0, 0},
/* VK_FORMAT_R64G64_UINT */
{0, 0, 0},
/* VK_FORMAT_R64G64_SINT */
{0, 0, 0},
/* VK_FORMAT_R64G64_SFLOAT */
{0, 0, 0},
/* VK_FORMAT_R64G64B64_UINT */
{0, 0, 0},
/* VK_FORMAT_R64G64B64_SINT */
{0, 0, 0},
/* VK_FORMAT_R64G64B64_SFLOAT */
{0, 0, 0},
/* VK_FORMAT_R64G64B64A64_UINT */
{0, 0, 0},
/* VK_FORMAT_R64G64B64A64_SINT */
{0, 0, 0},
/* VK_FORMAT_R64G64B64A64_SFLOAT */
{0, 0, 0},
/* VK_FORMAT_B10G11R11_UFLOAT_PACK32 */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT},
/* VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
0},
/* VK_FORMAT_D16_UNORM */
{0,
VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT | VK_FORMAT_FEATURE_BLIT_SRC_BIT |
VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
0},
/* VK_FORMAT_X8_D24_UNORM_PACK32 */
{0, 0, 0},
/* VK_FORMAT_D32_SFLOAT */
{0, 0, 0},
/* VK_FORMAT_S8_UINT */
{0, 0, 0},
/* VK_FORMAT_D16_UNORM_S8_UINT */
{0, 0, 0},
/* VK_FORMAT_D24_UNORM_S8_UINT */
{0, 0, 0},
/* VK_FORMAT_D32_SFLOAT_S8_UINT */
{0, 0, 0},
/* VK_FORMAT_BC1_RGB_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_BC1_RGB_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_BC1_RGBA_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_BC1_RGBA_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_BC2_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_BC2_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_BC3_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_BC3_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_BC4_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_BC4_SNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_BC5_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_BC5_SNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_BC6H_UFLOAT_BLOCK */
{0, 0, 0},
/* VK_FORMAT_BC6H_SFLOAT_BLOCK */
{0, 0, 0},
/* VK_FORMAT_BC7_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_BC7_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_EAC_R11_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_EAC_R11_SNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_EAC_R11G11_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_EAC_R11G11_SNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_4x4_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_4x4_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_5x4_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_5x4_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_5x5_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_5x5_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_6x5_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_6x5_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_6x6_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_6x6_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_8x5_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_8x5_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_8x6_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_8x6_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_8x8_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_8x8_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_10x5_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_10x5_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_10x6_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_10x6_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_10x8_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_10x8_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_10x10_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_10x10_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_12x10_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_12x10_SRGB_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_12x12_UNORM_BLOCK */
{0, 0, 0},
/* VK_FORMAT_ASTC_12x12_SRGB_BLOCK */
{0, 0, 0}}};
} // anonymous namespace } // anonymous namespace
const VkFormatProperties &GetMandatoryFormatSupport(VkFormat vkFormat) const VkFormatProperties &GetMandatoryFormatSupport(FormatID formatID)
{ {
ASSERT(static_cast<uint64_t>(vkFormat) < sizeof(kFormatProperties)); return kFormatProperties[formatID];
return kFormatProperties[vkFormat];
} }
} // namespace vk } // namespace vk
} // namespace rx } // namespace rx
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment