mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-07-25 11:34:55 +00:00
host_compatibilty: Cleanup and support uncompressed views of compressed formats
This commit is contained in:
parent
b60f821d8d
commit
70c7fd4fab
220
src/video_core/texture_cache/host_compatibility.cpp
Normal file
220
src/video_core/texture_cache/host_compatibility.cpp
Normal file
@ -0,0 +1,220 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
// Copyright © 2023 Skyline Team and Contributors (https://github.com/skyline-emu/)
|
||||
// Copyright © 2015-2023 The Khronos Group Inc.
|
||||
// Copyright © 2015-2023 Valve Corporation
|
||||
// Copyright © 2015-2023 LunarG, Inc.
|
||||
|
||||
#include <unordered_map>
|
||||
#include "common/enum.h"
|
||||
#include "video_core/texture_cache/host_compatibility.h"
|
||||
|
||||
namespace VideoCore {
|
||||
|
||||
/**
|
||||
* @brief All classes of format compatibility according to the Vulkan specification
|
||||
* @url
|
||||
* https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/d37c676f/layers/generated/vk_format_utils.h#L47-L131
|
||||
*/
|
||||
enum class CompatibilityClass {
|
||||
NONE = 0,
|
||||
_128BIT = 1 << 0,
|
||||
_16BIT = 1 << 1,
|
||||
_192BIT = 1 << 2,
|
||||
_24BIT = 1 << 3,
|
||||
_256BIT = 1 << 4,
|
||||
_32BIT = 1 << 5,
|
||||
_48BIT = 1 << 6,
|
||||
_64BIT = 1 << 7,
|
||||
_8BIT = 1 << 8,
|
||||
_96BIT = 1 << 9,
|
||||
BC1_RGB = 1 << 10,
|
||||
BC1_RGBA = 1 << 11,
|
||||
BC2 = 1 << 12,
|
||||
BC3 = 1 << 13,
|
||||
BC4 = 1 << 14,
|
||||
BC5 = 1 << 15,
|
||||
BC6H = 1 << 16,
|
||||
BC7 = 1 << 17,
|
||||
D16 = 1 << 18,
|
||||
D16S8 = 1 << 19,
|
||||
D24 = 1 << 20,
|
||||
D24S8 = 1 << 21,
|
||||
D32 = 1 << 22,
|
||||
D32S8 = 1 << 23,
|
||||
S8 = 1 << 24,
|
||||
};
|
||||
DECLARE_ENUM_FLAG_OPERATORS(CompatibilityClass)
|
||||
|
||||
/**
|
||||
* @brief The format compatibility class according to the Vulkan specification
|
||||
* @url
|
||||
* https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility-classes
|
||||
* @url
|
||||
* https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/d37c676f/layers/generated/vk_format_utils.cpp#L70-L812
|
||||
*/
|
||||
static const std::unordered_map<vk::Format, CompatibilityClass> FORMAT_TABLE = {
|
||||
{vk::Format::eA1R5G5B5UnormPack16, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eA2B10G10R10SintPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eA2B10G10R10SnormPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eA2B10G10R10SscaledPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eA2B10G10R10UintPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eA2B10G10R10UnormPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eA2B10G10R10UscaledPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eA2R10G10B10SintPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eA2R10G10B10SnormPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eA2R10G10B10SscaledPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eA2R10G10B10UintPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eA2R10G10B10UnormPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eA2R10G10B10UscaledPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eA4B4G4R4UnormPack16, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eA4R4G4B4UnormPack16, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eA8B8G8R8SintPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eA8B8G8R8SnormPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eA8B8G8R8SrgbPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eA8B8G8R8SscaledPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eA8B8G8R8UintPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eA8B8G8R8UnormPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eA8B8G8R8UscaledPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eB10G11R11UfloatPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eB4G4R4A4UnormPack16, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eB5G5R5A1UnormPack16, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eB5G6R5UnormPack16, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eB8G8R8A8Sint, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eB8G8R8A8Snorm, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eB8G8R8A8Srgb, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eB8G8R8A8Sscaled, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eB8G8R8A8Uint, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eB8G8R8A8Unorm, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eB8G8R8A8Uscaled, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eB8G8R8Sint, CompatibilityClass::_24BIT},
|
||||
{vk::Format::eB8G8R8Snorm, CompatibilityClass::_24BIT},
|
||||
{vk::Format::eB8G8R8Srgb, CompatibilityClass::_24BIT},
|
||||
{vk::Format::eB8G8R8Sscaled, CompatibilityClass::_24BIT},
|
||||
{vk::Format::eB8G8R8Uint, CompatibilityClass::_24BIT},
|
||||
{vk::Format::eB8G8R8Unorm, CompatibilityClass::_24BIT},
|
||||
{vk::Format::eB8G8R8Uscaled, CompatibilityClass::_24BIT},
|
||||
{vk::Format::eBc1RgbaSrgbBlock, CompatibilityClass::BC1_RGBA | CompatibilityClass::_64BIT},
|
||||
{vk::Format::eBc1RgbaUnormBlock, CompatibilityClass::BC1_RGBA | CompatibilityClass::_64BIT},
|
||||
{vk::Format::eBc1RgbSrgbBlock, CompatibilityClass::BC1_RGB | CompatibilityClass::_64BIT},
|
||||
{vk::Format::eBc1RgbUnormBlock, CompatibilityClass::BC1_RGB | CompatibilityClass::_64BIT},
|
||||
{vk::Format::eBc2SrgbBlock, CompatibilityClass::BC2 | CompatibilityClass::_128BIT},
|
||||
{vk::Format::eBc2UnormBlock, CompatibilityClass::BC2 | CompatibilityClass::_128BIT},
|
||||
{vk::Format::eBc3SrgbBlock, CompatibilityClass::BC3 | CompatibilityClass::_128BIT},
|
||||
{vk::Format::eBc3UnormBlock, CompatibilityClass::BC3 | CompatibilityClass::_128BIT},
|
||||
{vk::Format::eBc4SnormBlock, CompatibilityClass::BC4 | CompatibilityClass::_64BIT},
|
||||
{vk::Format::eBc4UnormBlock, CompatibilityClass::BC4 | CompatibilityClass::_64BIT},
|
||||
{vk::Format::eBc5SnormBlock, CompatibilityClass::BC5 | CompatibilityClass::_128BIT},
|
||||
{vk::Format::eBc5UnormBlock, CompatibilityClass::BC5 | CompatibilityClass::_128BIT},
|
||||
{vk::Format::eBc6HSfloatBlock, CompatibilityClass::BC6H | CompatibilityClass::_128BIT},
|
||||
{vk::Format::eBc6HUfloatBlock, CompatibilityClass::BC6H | CompatibilityClass::_128BIT},
|
||||
{vk::Format::eBc7SrgbBlock, CompatibilityClass::BC7 | CompatibilityClass::_128BIT},
|
||||
{vk::Format::eBc7UnormBlock, CompatibilityClass::BC7 | CompatibilityClass::_128BIT},
|
||||
{vk::Format::eD16Unorm, CompatibilityClass::D16},
|
||||
{vk::Format::eD16UnormS8Uint, CompatibilityClass::D16S8},
|
||||
{vk::Format::eD24UnormS8Uint, CompatibilityClass::D24S8},
|
||||
{vk::Format::eD32Sfloat, CompatibilityClass::D32},
|
||||
{vk::Format::eD32SfloatS8Uint, CompatibilityClass::D32S8},
|
||||
{vk::Format::eE5B9G9R9UfloatPack32, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eR10X6G10X6Unorm2Pack16, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eR10X6UnormPack16, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eR12X4G12X4Unorm2Pack16, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eR12X4UnormPack16, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eR16G16B16A16Sfloat, CompatibilityClass::_64BIT},
|
||||
{vk::Format::eR16G16B16A16Sint, CompatibilityClass::_64BIT},
|
||||
{vk::Format::eR16G16B16A16Snorm, CompatibilityClass::_64BIT},
|
||||
{vk::Format::eR16G16B16A16Sscaled, CompatibilityClass::_64BIT},
|
||||
{vk::Format::eR16G16B16A16Uint, CompatibilityClass::_64BIT},
|
||||
{vk::Format::eR16G16B16A16Unorm, CompatibilityClass::_64BIT},
|
||||
{vk::Format::eR16G16B16A16Uscaled, CompatibilityClass::_64BIT},
|
||||
{vk::Format::eR16G16B16Sfloat, CompatibilityClass::_48BIT},
|
||||
{vk::Format::eR16G16B16Sint, CompatibilityClass::_48BIT},
|
||||
{vk::Format::eR16G16B16Snorm, CompatibilityClass::_48BIT},
|
||||
{vk::Format::eR16G16B16Sscaled, CompatibilityClass::_48BIT},
|
||||
{vk::Format::eR16G16B16Uint, CompatibilityClass::_48BIT},
|
||||
{vk::Format::eR16G16B16Unorm, CompatibilityClass::_48BIT},
|
||||
{vk::Format::eR16G16B16Uscaled, CompatibilityClass::_48BIT},
|
||||
{vk::Format::eR16G16Sfloat, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eR16G16Sint, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eR16G16Snorm, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eR16G16Sscaled, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eR16G16Uint, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eR16G16Unorm, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eR16G16Uscaled, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eR16Sfloat, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eR16Sint, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eR16Snorm, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eR16Sscaled, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eR16Uint, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eR16Unorm, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eR16Uscaled, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eR32G32B32A32Sfloat, CompatibilityClass::_128BIT},
|
||||
{vk::Format::eR32G32B32A32Sint, CompatibilityClass::_128BIT},
|
||||
{vk::Format::eR32G32B32A32Uint, CompatibilityClass::_128BIT},
|
||||
{vk::Format::eR32G32B32Sfloat, CompatibilityClass::_96BIT},
|
||||
{vk::Format::eR32G32B32Sint, CompatibilityClass::_96BIT},
|
||||
{vk::Format::eR32G32B32Uint, CompatibilityClass::_96BIT},
|
||||
{vk::Format::eR32G32Sfloat, CompatibilityClass::_64BIT},
|
||||
{vk::Format::eR32G32Sint, CompatibilityClass::_64BIT},
|
||||
{vk::Format::eR32G32Uint, CompatibilityClass::_64BIT},
|
||||
{vk::Format::eR32Sfloat, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eR32Sint, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eR32Uint, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eR4G4B4A4UnormPack16, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eR4G4UnormPack8, CompatibilityClass::_8BIT},
|
||||
{vk::Format::eR5G5B5A1UnormPack16, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eR5G6B5UnormPack16, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eR64G64B64A64Sfloat, CompatibilityClass::_256BIT},
|
||||
{vk::Format::eR64G64B64A64Sint, CompatibilityClass::_256BIT},
|
||||
{vk::Format::eR64G64B64A64Uint, CompatibilityClass::_256BIT},
|
||||
{vk::Format::eR64G64B64Sfloat, CompatibilityClass::_192BIT},
|
||||
{vk::Format::eR64G64B64Sint, CompatibilityClass::_192BIT},
|
||||
{vk::Format::eR64G64B64Uint, CompatibilityClass::_192BIT},
|
||||
{vk::Format::eR64G64Sfloat, CompatibilityClass::_128BIT},
|
||||
{vk::Format::eR64G64Sint, CompatibilityClass::_128BIT},
|
||||
{vk::Format::eR64G64Uint, CompatibilityClass::_128BIT},
|
||||
{vk::Format::eR64Sfloat, CompatibilityClass::_64BIT},
|
||||
{vk::Format::eR64Sint, CompatibilityClass::_64BIT},
|
||||
{vk::Format::eR64Uint, CompatibilityClass::_64BIT},
|
||||
{vk::Format::eR8G8B8A8Sint, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eR8G8B8A8Snorm, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eR8G8B8A8Srgb, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eR8G8B8A8Sscaled, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eR8G8B8A8Uint, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eR8G8B8A8Unorm, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eR8G8B8A8Uscaled, CompatibilityClass::_32BIT},
|
||||
{vk::Format::eR8G8B8Sint, CompatibilityClass::_24BIT},
|
||||
{vk::Format::eR8G8B8Snorm, CompatibilityClass::_24BIT},
|
||||
{vk::Format::eR8G8B8Srgb, CompatibilityClass::_24BIT},
|
||||
{vk::Format::eR8G8B8Sscaled, CompatibilityClass::_24BIT},
|
||||
{vk::Format::eR8G8B8Uint, CompatibilityClass::_24BIT},
|
||||
{vk::Format::eR8G8B8Unorm, CompatibilityClass::_24BIT},
|
||||
{vk::Format::eR8G8B8Uscaled, CompatibilityClass::_24BIT},
|
||||
{vk::Format::eR8G8Sint, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eR8G8Snorm, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eR8G8Srgb, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eR8G8Sscaled, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eR8G8Uint, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eR8G8Unorm, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eR8G8Uscaled, CompatibilityClass::_16BIT},
|
||||
{vk::Format::eR8Sint, CompatibilityClass::_8BIT},
|
||||
{vk::Format::eR8Snorm, CompatibilityClass::_8BIT},
|
||||
{vk::Format::eR8Srgb, CompatibilityClass::_8BIT},
|
||||
{vk::Format::eR8Sscaled, CompatibilityClass::_8BIT},
|
||||
{vk::Format::eR8Uint, CompatibilityClass::_8BIT},
|
||||
{vk::Format::eR8Unorm, CompatibilityClass::_8BIT},
|
||||
{vk::Format::eR8Uscaled, CompatibilityClass::_8BIT},
|
||||
{vk::Format::eS8Uint, CompatibilityClass::S8},
|
||||
{vk::Format::eX8D24UnormPack32, CompatibilityClass::D24},
|
||||
{vk::Format::eUndefined, CompatibilityClass::NONE},
|
||||
};
|
||||
|
||||
bool IsVulkanFormatCompatible(vk::Format base, vk::Format view) {
|
||||
if (base == view) {
|
||||
return true;
|
||||
}
|
||||
const auto base_comp = FORMAT_TABLE.at(base);
|
||||
const auto view_comp = FORMAT_TABLE.at(view);
|
||||
return (base_comp & view_comp) == view_comp;
|
||||
}
|
||||
|
||||
} // namespace VideoCore
|
@ -6,387 +6,11 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <unordered_map>
|
||||
#include "video_core/renderer_vulkan/vk_common.h"
|
||||
|
||||
namespace VideoCore {
|
||||
/**
|
||||
* @brief All classes of format compatibility according to the Vulkan specification
|
||||
* @url
|
||||
* https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/d37c676f75f545a3e5a98d7dfb89864391a1db1e/layers/generated/vk_format_utils.h#L47-L131
|
||||
* @note This is copied directly from Vulkan Validation Layers and doesn't follow the Skyline naming
|
||||
* conventions
|
||||
*/
|
||||
enum class FORMAT_COMPATIBILITY_CLASS {
|
||||
NONE = 0,
|
||||
_10BIT_2PLANE_420,
|
||||
_10BIT_2PLANE_422,
|
||||
_10BIT_2PLANE_444,
|
||||
_10BIT_3PLANE_420,
|
||||
_10BIT_3PLANE_422,
|
||||
_10BIT_3PLANE_444,
|
||||
_12BIT_2PLANE_420,
|
||||
_12BIT_2PLANE_422,
|
||||
_12BIT_2PLANE_444,
|
||||
_12BIT_3PLANE_420,
|
||||
_12BIT_3PLANE_422,
|
||||
_12BIT_3PLANE_444,
|
||||
_128BIT,
|
||||
_16BIT,
|
||||
_16BIT_2PLANE_420,
|
||||
_16BIT_2PLANE_422,
|
||||
_16BIT_2PLANE_444,
|
||||
_16BIT_3PLANE_420,
|
||||
_16BIT_3PLANE_422,
|
||||
_16BIT_3PLANE_444,
|
||||
_192BIT,
|
||||
_24BIT,
|
||||
_256BIT,
|
||||
_32BIT,
|
||||
_32BIT_B8G8R8G8,
|
||||
_32BIT_G8B8G8R8,
|
||||
_48BIT,
|
||||
_64BIT,
|
||||
_64BIT_B10G10R10G10,
|
||||
_64BIT_B12G12R12G12,
|
||||
_64BIT_B16G16R16G16,
|
||||
_64BIT_G10B10G10R10,
|
||||
_64BIT_G12B12G12R12,
|
||||
_64BIT_G16B16G16R16,
|
||||
_64BIT_R10G10B10A10,
|
||||
_64BIT_R12G12B12A12,
|
||||
_8BIT,
|
||||
_8BIT_2PLANE_420,
|
||||
_8BIT_2PLANE_422,
|
||||
_8BIT_2PLANE_444,
|
||||
_8BIT_3PLANE_420,
|
||||
_8BIT_3PLANE_422,
|
||||
_8BIT_3PLANE_444,
|
||||
_96BIT,
|
||||
ASTC_10X10,
|
||||
ASTC_10X5,
|
||||
ASTC_10X6,
|
||||
ASTC_10X8,
|
||||
ASTC_12X10,
|
||||
ASTC_12X12,
|
||||
ASTC_4X4,
|
||||
ASTC_5X4,
|
||||
ASTC_5X5,
|
||||
ASTC_6X5,
|
||||
ASTC_6X6,
|
||||
ASTC_8X5,
|
||||
ASTC_8X6,
|
||||
ASTC_8X8,
|
||||
BC1_RGB,
|
||||
BC1_RGBA,
|
||||
BC2,
|
||||
BC3,
|
||||
BC4,
|
||||
BC5,
|
||||
BC6H,
|
||||
BC7,
|
||||
D16,
|
||||
D16S8,
|
||||
D24,
|
||||
D24S8,
|
||||
D32,
|
||||
D32S8,
|
||||
EAC_R,
|
||||
EAC_RG,
|
||||
ETC2_EAC_RGBA,
|
||||
ETC2_RGB,
|
||||
ETC2_RGBA,
|
||||
PVRTC1_2BPP,
|
||||
PVRTC1_4BPP,
|
||||
PVRTC2_2BPP,
|
||||
PVRTC2_4BPP,
|
||||
S8
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief The format compatibility class according to the Vulkan specification
|
||||
* @url
|
||||
* https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility-classes
|
||||
* @url
|
||||
* https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/d37c676f75f545a3e5a98d7dfb89864391a1db1e/layers/generated/vk_format_utils.cpp#L70-L812
|
||||
* @note This is copied directly from Vulkan Validation Layers and doesn't follow the Skyline naming
|
||||
* conventions
|
||||
*/
|
||||
static const std::unordered_map<VkFormat, FORMAT_COMPATIBILITY_CLASS> vkFormatClassTable{
|
||||
{VK_FORMAT_A1R5G5B5_UNORM_PACK16, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_A2B10G10R10_SINT_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_A2B10G10R10_SNORM_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_A2B10G10R10_SSCALED_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_A2B10G10R10_UINT_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_A2B10G10R10_UNORM_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_A2B10G10R10_USCALED_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_A2R10G10B10_SINT_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_A2R10G10B10_SNORM_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_A2R10G10B10_SSCALED_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_A2R10G10B10_UINT_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_A2R10G10B10_UNORM_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_A2R10G10B10_USCALED_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_A8B8G8R8_SINT_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_A8B8G8R8_SNORM_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_A8B8G8R8_SRGB_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_A8B8G8R8_SSCALED_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_A8B8G8R8_UINT_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_A8B8G8R8_UNORM_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_A8B8G8R8_USCALED_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_10X10},
|
||||
{VK_FORMAT_ASTC_10x10_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_10X10},
|
||||
{VK_FORMAT_ASTC_10x10_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_10X10},
|
||||
{VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_10X5},
|
||||
{VK_FORMAT_ASTC_10x5_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_10X5},
|
||||
{VK_FORMAT_ASTC_10x5_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_10X5},
|
||||
{VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_10X6},
|
||||
{VK_FORMAT_ASTC_10x6_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_10X6},
|
||||
{VK_FORMAT_ASTC_10x6_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_10X6},
|
||||
{VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_10X8},
|
||||
{VK_FORMAT_ASTC_10x8_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_10X8},
|
||||
{VK_FORMAT_ASTC_10x8_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_10X8},
|
||||
{VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_12X10},
|
||||
{VK_FORMAT_ASTC_12x10_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_12X10},
|
||||
{VK_FORMAT_ASTC_12x10_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_12X10},
|
||||
{VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_12X12},
|
||||
{VK_FORMAT_ASTC_12x12_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_12X12},
|
||||
{VK_FORMAT_ASTC_12x12_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_12X12},
|
||||
{VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_4X4},
|
||||
{VK_FORMAT_ASTC_4x4_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_4X4},
|
||||
{VK_FORMAT_ASTC_4x4_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_4X4},
|
||||
{VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_5X4},
|
||||
{VK_FORMAT_ASTC_5x4_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_5X4},
|
||||
{VK_FORMAT_ASTC_5x4_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_5X4},
|
||||
{VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_5X5},
|
||||
{VK_FORMAT_ASTC_5x5_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_5X5},
|
||||
{VK_FORMAT_ASTC_5x5_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_5X5},
|
||||
{VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_6X5},
|
||||
{VK_FORMAT_ASTC_6x5_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_6X5},
|
||||
{VK_FORMAT_ASTC_6x5_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_6X5},
|
||||
{VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_6X6},
|
||||
{VK_FORMAT_ASTC_6x6_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_6X6},
|
||||
{VK_FORMAT_ASTC_6x6_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_6X6},
|
||||
{VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_8X5},
|
||||
{VK_FORMAT_ASTC_8x5_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_8X5},
|
||||
{VK_FORMAT_ASTC_8x5_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_8X5},
|
||||
{VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_8X6},
|
||||
{VK_FORMAT_ASTC_8x6_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_8X6},
|
||||
{VK_FORMAT_ASTC_8x6_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_8X6},
|
||||
{VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT, FORMAT_COMPATIBILITY_CLASS::ASTC_8X8},
|
||||
{VK_FORMAT_ASTC_8x8_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_8X8},
|
||||
{VK_FORMAT_ASTC_8x8_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ASTC_8X8},
|
||||
{VK_FORMAT_B10G11R11_UFLOAT_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,
|
||||
FORMAT_COMPATIBILITY_CLASS::_64BIT_B10G10R10G10},
|
||||
{VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,
|
||||
FORMAT_COMPATIBILITY_CLASS::_64BIT_B12G12R12G12},
|
||||
{VK_FORMAT_B16G16R16G16_422_UNORM, FORMAT_COMPATIBILITY_CLASS::_64BIT_B16G16R16G16},
|
||||
{VK_FORMAT_B4G4R4A4_UNORM_PACK16, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_B5G5R5A1_UNORM_PACK16, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_B5G6R5_UNORM_PACK16, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_B8G8R8A8_SINT, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_B8G8R8A8_SNORM, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_B8G8R8A8_SRGB, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_B8G8R8A8_SSCALED, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_B8G8R8A8_UINT, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_B8G8R8A8_UNORM, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_B8G8R8A8_USCALED, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_B8G8R8G8_422_UNORM, FORMAT_COMPATIBILITY_CLASS::_32BIT_B8G8R8G8},
|
||||
{VK_FORMAT_B8G8R8_SINT, FORMAT_COMPATIBILITY_CLASS::_24BIT},
|
||||
{VK_FORMAT_B8G8R8_SNORM, FORMAT_COMPATIBILITY_CLASS::_24BIT},
|
||||
{VK_FORMAT_B8G8R8_SRGB, FORMAT_COMPATIBILITY_CLASS::_24BIT},
|
||||
{VK_FORMAT_B8G8R8_SSCALED, FORMAT_COMPATIBILITY_CLASS::_24BIT},
|
||||
{VK_FORMAT_B8G8R8_UINT, FORMAT_COMPATIBILITY_CLASS::_24BIT},
|
||||
{VK_FORMAT_B8G8R8_UNORM, FORMAT_COMPATIBILITY_CLASS::_24BIT},
|
||||
{VK_FORMAT_B8G8R8_USCALED, FORMAT_COMPATIBILITY_CLASS::_24BIT},
|
||||
{VK_FORMAT_BC1_RGBA_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC1_RGBA},
|
||||
{VK_FORMAT_BC1_RGBA_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC1_RGBA},
|
||||
{VK_FORMAT_BC1_RGB_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC1_RGB},
|
||||
{VK_FORMAT_BC1_RGB_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC1_RGB},
|
||||
{VK_FORMAT_BC2_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC2},
|
||||
{VK_FORMAT_BC2_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC2},
|
||||
{VK_FORMAT_BC3_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC3},
|
||||
{VK_FORMAT_BC3_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC3},
|
||||
{VK_FORMAT_BC4_SNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC4},
|
||||
{VK_FORMAT_BC4_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC4},
|
||||
{VK_FORMAT_BC5_SNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC5},
|
||||
{VK_FORMAT_BC5_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC5},
|
||||
{VK_FORMAT_BC6H_SFLOAT_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC6H},
|
||||
{VK_FORMAT_BC6H_UFLOAT_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC6H},
|
||||
{VK_FORMAT_BC7_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC7},
|
||||
{VK_FORMAT_BC7_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::BC7},
|
||||
{VK_FORMAT_D16_UNORM, FORMAT_COMPATIBILITY_CLASS::D16},
|
||||
{VK_FORMAT_D16_UNORM_S8_UINT, FORMAT_COMPATIBILITY_CLASS::D16S8},
|
||||
{VK_FORMAT_D24_UNORM_S8_UINT, FORMAT_COMPATIBILITY_CLASS::D24S8},
|
||||
{VK_FORMAT_D32_SFLOAT, FORMAT_COMPATIBILITY_CLASS::D32},
|
||||
{VK_FORMAT_D32_SFLOAT_S8_UINT, FORMAT_COMPATIBILITY_CLASS::D32S8},
|
||||
{VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_EAC_R11G11_SNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::EAC_RG},
|
||||
{VK_FORMAT_EAC_R11G11_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::EAC_RG},
|
||||
{VK_FORMAT_EAC_R11_SNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::EAC_R},
|
||||
{VK_FORMAT_EAC_R11_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::EAC_R},
|
||||
{VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ETC2_RGBA},
|
||||
{VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ETC2_RGBA},
|
||||
{VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ETC2_EAC_RGBA},
|
||||
{VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ETC2_EAC_RGBA},
|
||||
{VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, FORMAT_COMPATIBILITY_CLASS::ETC2_RGB},
|
||||
{VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, FORMAT_COMPATIBILITY_CLASS::ETC2_RGB},
|
||||
{VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,
|
||||
FORMAT_COMPATIBILITY_CLASS::_64BIT_G10B10G10R10},
|
||||
{VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,
|
||||
FORMAT_COMPATIBILITY_CLASS::_10BIT_2PLANE_420},
|
||||
{VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,
|
||||
FORMAT_COMPATIBILITY_CLASS::_10BIT_2PLANE_422},
|
||||
{VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT,
|
||||
FORMAT_COMPATIBILITY_CLASS::_10BIT_2PLANE_444},
|
||||
{VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,
|
||||
FORMAT_COMPATIBILITY_CLASS::_10BIT_3PLANE_420},
|
||||
{VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,
|
||||
FORMAT_COMPATIBILITY_CLASS::_10BIT_3PLANE_422},
|
||||
{VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,
|
||||
FORMAT_COMPATIBILITY_CLASS::_10BIT_3PLANE_444},
|
||||
{VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,
|
||||
FORMAT_COMPATIBILITY_CLASS::_64BIT_G12B12G12R12},
|
||||
{VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,
|
||||
FORMAT_COMPATIBILITY_CLASS::_12BIT_2PLANE_420},
|
||||
{VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,
|
||||
FORMAT_COMPATIBILITY_CLASS::_12BIT_2PLANE_422},
|
||||
{VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT,
|
||||
FORMAT_COMPATIBILITY_CLASS::_12BIT_2PLANE_444},
|
||||
{VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,
|
||||
FORMAT_COMPATIBILITY_CLASS::_12BIT_3PLANE_420},
|
||||
{VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,
|
||||
FORMAT_COMPATIBILITY_CLASS::_12BIT_3PLANE_422},
|
||||
{VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,
|
||||
FORMAT_COMPATIBILITY_CLASS::_12BIT_3PLANE_444},
|
||||
{VK_FORMAT_G16B16G16R16_422_UNORM, FORMAT_COMPATIBILITY_CLASS::_64BIT_G16B16G16R16},
|
||||
{VK_FORMAT_G16_B16R16_2PLANE_420_UNORM, FORMAT_COMPATIBILITY_CLASS::_16BIT_2PLANE_420},
|
||||
{VK_FORMAT_G16_B16R16_2PLANE_422_UNORM, FORMAT_COMPATIBILITY_CLASS::_16BIT_2PLANE_422},
|
||||
{VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT, FORMAT_COMPATIBILITY_CLASS::_16BIT_2PLANE_444},
|
||||
{VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM, FORMAT_COMPATIBILITY_CLASS::_16BIT_3PLANE_420},
|
||||
{VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, FORMAT_COMPATIBILITY_CLASS::_16BIT_3PLANE_422},
|
||||
{VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, FORMAT_COMPATIBILITY_CLASS::_16BIT_3PLANE_444},
|
||||
{VK_FORMAT_G8B8G8R8_422_UNORM, FORMAT_COMPATIBILITY_CLASS::_32BIT_G8B8G8R8},
|
||||
{VK_FORMAT_G8_B8R8_2PLANE_420_UNORM, FORMAT_COMPATIBILITY_CLASS::_8BIT_2PLANE_420},
|
||||
{VK_FORMAT_G8_B8R8_2PLANE_422_UNORM, FORMAT_COMPATIBILITY_CLASS::_8BIT_2PLANE_422},
|
||||
{VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT, FORMAT_COMPATIBILITY_CLASS::_8BIT_2PLANE_444},
|
||||
{VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, FORMAT_COMPATIBILITY_CLASS::_8BIT_3PLANE_420},
|
||||
{VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM, FORMAT_COMPATIBILITY_CLASS::_8BIT_3PLANE_422},
|
||||
{VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM, FORMAT_COMPATIBILITY_CLASS::_8BIT_3PLANE_444},
|
||||
{VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG, FORMAT_COMPATIBILITY_CLASS::PVRTC1_2BPP},
|
||||
{VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG, FORMAT_COMPATIBILITY_CLASS::PVRTC1_2BPP},
|
||||
{VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG, FORMAT_COMPATIBILITY_CLASS::PVRTC1_4BPP},
|
||||
{VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG, FORMAT_COMPATIBILITY_CLASS::PVRTC1_4BPP},
|
||||
{VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG, FORMAT_COMPATIBILITY_CLASS::PVRTC2_2BPP},
|
||||
{VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG, FORMAT_COMPATIBILITY_CLASS::PVRTC2_2BPP},
|
||||
{VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG, FORMAT_COMPATIBILITY_CLASS::PVRTC2_4BPP},
|
||||
{VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG, FORMAT_COMPATIBILITY_CLASS::PVRTC2_4BPP},
|
||||
{VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16, FORMAT_COMPATIBILITY_CLASS::_64BIT_R10G10B10A10},
|
||||
{VK_FORMAT_R10X6G10X6_UNORM_2PACK16, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_R10X6_UNORM_PACK16, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16, FORMAT_COMPATIBILITY_CLASS::_64BIT_R12G12B12A12},
|
||||
{VK_FORMAT_R12X4G12X4_UNORM_2PACK16, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_R12X4_UNORM_PACK16, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_R16G16B16A16_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_64BIT},
|
||||
{VK_FORMAT_R16G16B16A16_SINT, FORMAT_COMPATIBILITY_CLASS::_64BIT},
|
||||
{VK_FORMAT_R16G16B16A16_SNORM, FORMAT_COMPATIBILITY_CLASS::_64BIT},
|
||||
{VK_FORMAT_R16G16B16A16_SSCALED, FORMAT_COMPATIBILITY_CLASS::_64BIT},
|
||||
{VK_FORMAT_R16G16B16A16_UINT, FORMAT_COMPATIBILITY_CLASS::_64BIT},
|
||||
{VK_FORMAT_R16G16B16A16_UNORM, FORMAT_COMPATIBILITY_CLASS::_64BIT},
|
||||
{VK_FORMAT_R16G16B16A16_USCALED, FORMAT_COMPATIBILITY_CLASS::_64BIT},
|
||||
{VK_FORMAT_R16G16B16_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_48BIT},
|
||||
{VK_FORMAT_R16G16B16_SINT, FORMAT_COMPATIBILITY_CLASS::_48BIT},
|
||||
{VK_FORMAT_R16G16B16_SNORM, FORMAT_COMPATIBILITY_CLASS::_48BIT},
|
||||
{VK_FORMAT_R16G16B16_SSCALED, FORMAT_COMPATIBILITY_CLASS::_48BIT},
|
||||
{VK_FORMAT_R16G16B16_UINT, FORMAT_COMPATIBILITY_CLASS::_48BIT},
|
||||
{VK_FORMAT_R16G16B16_UNORM, FORMAT_COMPATIBILITY_CLASS::_48BIT},
|
||||
{VK_FORMAT_R16G16B16_USCALED, FORMAT_COMPATIBILITY_CLASS::_48BIT},
|
||||
{VK_FORMAT_R16G16_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_R16G16_SINT, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_R16G16_SNORM, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_R16G16_SSCALED, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_R16G16_UINT, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_R16G16_UNORM, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_R16G16_USCALED, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_R16_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_R16_SINT, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_R16_SNORM, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_R16_SSCALED, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_R16_UINT, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_R16_UNORM, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_R16_USCALED, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_R32G32B32A32_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_128BIT},
|
||||
{VK_FORMAT_R32G32B32A32_SINT, FORMAT_COMPATIBILITY_CLASS::_128BIT},
|
||||
{VK_FORMAT_R32G32B32A32_UINT, FORMAT_COMPATIBILITY_CLASS::_128BIT},
|
||||
{VK_FORMAT_R32G32B32_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_96BIT},
|
||||
{VK_FORMAT_R32G32B32_SINT, FORMAT_COMPATIBILITY_CLASS::_96BIT},
|
||||
{VK_FORMAT_R32G32B32_UINT, FORMAT_COMPATIBILITY_CLASS::_96BIT},
|
||||
{VK_FORMAT_R32G32_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_64BIT},
|
||||
{VK_FORMAT_R32G32_SINT, FORMAT_COMPATIBILITY_CLASS::_64BIT},
|
||||
{VK_FORMAT_R32G32_UINT, FORMAT_COMPATIBILITY_CLASS::_64BIT},
|
||||
{VK_FORMAT_R32_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_R32_SINT, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_R32_UINT, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_R4G4B4A4_UNORM_PACK16, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_R4G4_UNORM_PACK8, FORMAT_COMPATIBILITY_CLASS::_8BIT},
|
||||
{VK_FORMAT_R5G5B5A1_UNORM_PACK16, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_R5G6B5_UNORM_PACK16, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_R64G64B64A64_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_256BIT},
|
||||
{VK_FORMAT_R64G64B64A64_SINT, FORMAT_COMPATIBILITY_CLASS::_256BIT},
|
||||
{VK_FORMAT_R64G64B64A64_UINT, FORMAT_COMPATIBILITY_CLASS::_256BIT},
|
||||
{VK_FORMAT_R64G64B64_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_192BIT},
|
||||
{VK_FORMAT_R64G64B64_SINT, FORMAT_COMPATIBILITY_CLASS::_192BIT},
|
||||
{VK_FORMAT_R64G64B64_UINT, FORMAT_COMPATIBILITY_CLASS::_192BIT},
|
||||
{VK_FORMAT_R64G64_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_128BIT},
|
||||
{VK_FORMAT_R64G64_SINT, FORMAT_COMPATIBILITY_CLASS::_128BIT},
|
||||
{VK_FORMAT_R64G64_UINT, FORMAT_COMPATIBILITY_CLASS::_128BIT},
|
||||
{VK_FORMAT_R64_SFLOAT, FORMAT_COMPATIBILITY_CLASS::_64BIT},
|
||||
{VK_FORMAT_R64_SINT, FORMAT_COMPATIBILITY_CLASS::_64BIT},
|
||||
{VK_FORMAT_R64_UINT, FORMAT_COMPATIBILITY_CLASS::_64BIT},
|
||||
{VK_FORMAT_R8G8B8A8_SINT, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_R8G8B8A8_SNORM, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_R8G8B8A8_SRGB, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_R8G8B8A8_SSCALED, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_R8G8B8A8_UINT, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_R8G8B8A8_UNORM, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_R8G8B8A8_USCALED, FORMAT_COMPATIBILITY_CLASS::_32BIT},
|
||||
{VK_FORMAT_R8G8B8_SINT, FORMAT_COMPATIBILITY_CLASS::_24BIT},
|
||||
{VK_FORMAT_R8G8B8_SNORM, FORMAT_COMPATIBILITY_CLASS::_24BIT},
|
||||
{VK_FORMAT_R8G8B8_SRGB, FORMAT_COMPATIBILITY_CLASS::_24BIT},
|
||||
{VK_FORMAT_R8G8B8_SSCALED, FORMAT_COMPATIBILITY_CLASS::_24BIT},
|
||||
{VK_FORMAT_R8G8B8_UINT, FORMAT_COMPATIBILITY_CLASS::_24BIT},
|
||||
{VK_FORMAT_R8G8B8_UNORM, FORMAT_COMPATIBILITY_CLASS::_24BIT},
|
||||
{VK_FORMAT_R8G8B8_USCALED, FORMAT_COMPATIBILITY_CLASS::_24BIT},
|
||||
{VK_FORMAT_R8G8_SINT, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_R8G8_SNORM, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_R8G8_SRGB, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_R8G8_SSCALED, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_R8G8_UINT, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_R8G8_UNORM, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_R8G8_USCALED, FORMAT_COMPATIBILITY_CLASS::_16BIT},
|
||||
{VK_FORMAT_R8_SINT, FORMAT_COMPATIBILITY_CLASS::_8BIT},
|
||||
{VK_FORMAT_R8_SNORM, FORMAT_COMPATIBILITY_CLASS::_8BIT},
|
||||
{VK_FORMAT_R8_SRGB, FORMAT_COMPATIBILITY_CLASS::_8BIT},
|
||||
{VK_FORMAT_R8_SSCALED, FORMAT_COMPATIBILITY_CLASS::_8BIT},
|
||||
{VK_FORMAT_R8_UINT, FORMAT_COMPATIBILITY_CLASS::_8BIT},
|
||||
{VK_FORMAT_R8_UNORM, FORMAT_COMPATIBILITY_CLASS::_8BIT},
|
||||
{VK_FORMAT_R8_USCALED, FORMAT_COMPATIBILITY_CLASS::_8BIT},
|
||||
{VK_FORMAT_S8_UINT, FORMAT_COMPATIBILITY_CLASS::S8},
|
||||
{VK_FORMAT_X8_D24_UNORM_PACK32, FORMAT_COMPATIBILITY_CLASS::D24},
|
||||
{VK_FORMAT_UNDEFINED, FORMAT_COMPATIBILITY_CLASS::NONE},
|
||||
};
|
||||
/// Returns true if the two formats are compatible according to Vulkan's format compatibility rules
|
||||
bool IsVulkanFormatCompatible(vk::Format base, vk::Format view);
|
||||
|
||||
/**
|
||||
* @return If the two formats are compatible according to Vulkan's format compatibility rules
|
||||
* @url
|
||||
* https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility
|
||||
*/
|
||||
static bool IsVulkanFormatCompatible(vk::Format lhs, vk::Format rhs) {
|
||||
if (lhs == rhs) {
|
||||
return true;
|
||||
}
|
||||
return vkFormatClassTable.at(VkFormat(lhs)) == vkFormatClassTable.at(VkFormat(rhs));
|
||||
}
|
||||
} // namespace VideoCore
|
||||
|
Loading…
Reference in New Issue
Block a user