diff --git a/hw/amdgpu/bridge/src/bridge.cpp b/hw/amdgpu/bridge/src/bridge.cpp index fbcd35c8a..e221f5760 100644 --- a/hw/amdgpu/bridge/src/bridge.cpp +++ b/hw/amdgpu/bridge/src/bridge.cpp @@ -7,7 +7,7 @@ static int gShmFd = -1; static constexpr std::size_t kShmSize = sizeof(amdgpu::bridge::BridgeHeader) + - (sizeof(std::uint64_t) * 256); + (sizeof(std::uint64_t) * 1024); amdgpu::bridge::BridgeHeader * amdgpu::bridge::createShmCommandBuffer(const char *name) { if (gShmFd != -1) { diff --git a/rpcsx-gpu2/Device.cpp b/rpcsx-gpu2/Device.cpp index 7d5fee3f1..a55383af7 100644 --- a/rpcsx-gpu2/Device.cpp +++ b/rpcsx-gpu2/Device.cpp @@ -272,19 +272,19 @@ bool Device::flip(std::int64_t pid, int bufferIndex, std::uint64_t arg, case 0x80002200: dfmt = gnm::kDataFormat8_8_8_8; - nfmt = gnm::kNumericFormatUNorm; + nfmt = gnm::kNumericFormatSrgb; flipType = FlipType::Std; break; case 0x88740000: case 0x88060000: dfmt = gnm::kDataFormat2_10_10_10; - nfmt = gnm::kNumericFormatUNorm; + nfmt = gnm::kNumericFormatSNorm; break; case 0xc1060000: dfmt = gnm::kDataFormat16_16_16_16; - nfmt = gnm::kNumericFormatSrgb; + nfmt = gnm::kNumericFormatFloat; break; default: diff --git a/rpcsx-gpu2/Registers.hpp b/rpcsx-gpu2/Registers.hpp index cc829e5e6..5f228dba4 100644 --- a/rpcsx-gpu2/Registers.hpp +++ b/rpcsx-gpu2/Registers.hpp @@ -149,7 +149,7 @@ struct CbColorInfo { std::uint32_t endian : 2; gnm::DataFormat dfmt : 5; std::uint32_t linearGeneral : 1; - gnm::NumericFormat nfmt : 3; + gnm::CbNumericFormat nfmt : 3; CbCompSwap compSwap : 2; std::uint32_t fastClear : 1; std::uint32_t compression : 1; diff --git a/rpcsx-gpu2/Renderer.cpp b/rpcsx-gpu2/Renderer.cpp index d39346291..7dd623718 100644 --- a/rpcsx-gpu2/Renderer.cpp +++ b/rpcsx-gpu2/Renderer.cpp @@ -283,7 +283,7 @@ void amdgpu::draw(GraphicsPipe &pipe, int vmId, std::uint32_t firstVertex, renderTargetInfo.extent.height = vkViewPortScissor.extent.height; renderTargetInfo.extent.depth = 1; renderTargetInfo.dfmt = cbColor.info.dfmt; - renderTargetInfo.nfmt = cbColor.info.nfmt; + renderTargetInfo.nfmt = gnm::toNumericFormat(cbColor.info.nfmt, cbColor.info.dfmt); renderTargetInfo.mipCount = 1; renderTargetInfo.arrayLayerCount = 1; diff --git a/rpcsx-gpu2/lib/gnm/include/gnm/constants.hpp b/rpcsx-gpu2/lib/gnm/include/gnm/constants.hpp index 91b1037fc..5cea1acc2 100644 --- a/rpcsx-gpu2/lib/gnm/include/gnm/constants.hpp +++ b/rpcsx-gpu2/lib/gnm/include/gnm/constants.hpp @@ -71,6 +71,15 @@ enum NumericFormat : unsigned { kNumericFormatUBScaled = 0x0000000D, }; +enum CbNumericFormat : unsigned { + kCbNumericFormatUNorm = 0, + kCbNumericFormatSNorm = 1, + kCbNumericFormatUInt = 4, + kCbNumericFormatSint = 5, + kCbNumericFormatSrgb = 6, + kCbNumericFormatFloat = 7, +}; + enum ZFormat { kZFormatInvalid = 0, kZFormat16 = 1, @@ -286,4 +295,14 @@ enum class AnisoRatio : std::uint8_t { x16, }; +constexpr NumericFormat toNumericFormat(CbNumericFormat cbFmt, + DataFormat dfmt) { + if (cbFmt == kCbNumericFormatSrgb || dfmt == kDataFormat8_8_8_8 || + dfmt == kDataFormat10_10_10_2) { + return kNumericFormatSrgb; + } + + return static_cast(cbFmt); +} + } // namespace gnm diff --git a/rpcsx-gpu2/lib/gnm/lib/gnm-vulkan/src/vulkan.cpp b/rpcsx-gpu2/lib/gnm/lib/gnm-vulkan/src/vulkan.cpp index 23253bad7..cf080daf2 100644 --- a/rpcsx-gpu2/lib/gnm/lib/gnm-vulkan/src/vulkan.cpp +++ b/rpcsx-gpu2/lib/gnm/lib/gnm-vulkan/src/vulkan.cpp @@ -1,319 +1,648 @@ #include "vulkan.hpp" #include "rx/die.hpp" +#include + +using namespace gnm; + +enum class FormatPair : std::uint16_t {}; + +static constexpr auto makeFormatPair(DataFormat dfmt, NumericFormat nfmt) { + return static_cast(static_cast(dfmt) | + (static_cast(nfmt) << 8)); +} +// clang-format off +static std::unordered_map g_toVkFormats = { +{ makeFormatPair(kDataFormat8, kNumericFormatUNorm), VK_FORMAT_R8_UNORM}, +{ makeFormatPair(kDataFormat8, kNumericFormatSNorm), VK_FORMAT_R8_SNORM}, +{ makeFormatPair(kDataFormat8, kNumericFormatUScaled), VK_FORMAT_R8_USCALED}, +{ makeFormatPair(kDataFormat8, kNumericFormatSScaled), VK_FORMAT_R8_SSCALED}, +{ makeFormatPair(kDataFormat8, kNumericFormatUInt), VK_FORMAT_R8_UINT}, +{ makeFormatPair(kDataFormat8, kNumericFormatSInt), VK_FORMAT_R8_SINT}, +// { makeFormatPair(kDataFormat8, kNumericFormatSNormNoZero), VK_FORMAT_R8_SNORM}, +// { makeFormatPair(kDataFormat8, kNumericFormatFloat), VK_FORMAT_R8_SFLOAT}, +{ makeFormatPair(kDataFormat8, kNumericFormatSrgb), VK_FORMAT_R8_SRGB}, +// { makeFormatPair(kDataFormat8, kNumericFormatUBNorm), VK_FORMAT_R8_UNORM}, +// { makeFormatPair(kDataFormat8, kNumericFormatUBNormNoZero), VK_FORMAT_R8_UNORM}, +// { makeFormatPair(kDataFormat8, kNumericFormatUBInt), VK_FORMAT_R8_UINT}, +// { makeFormatPair(kDataFormat8, kNumericFormatUBScaled), VK_FORMAT_R8_USCALED}, +{ makeFormatPair(kDataFormat16, kNumericFormatUNorm), VK_FORMAT_R16_UNORM}, +{ makeFormatPair(kDataFormat16, kNumericFormatSNorm), VK_FORMAT_R16_SNORM}, +{ makeFormatPair(kDataFormat16, kNumericFormatUScaled), VK_FORMAT_R16_USCALED}, +{ makeFormatPair(kDataFormat16, kNumericFormatSScaled), VK_FORMAT_R16_SSCALED}, +{ makeFormatPair(kDataFormat16, kNumericFormatUInt), VK_FORMAT_R16_UINT}, +{ makeFormatPair(kDataFormat16, kNumericFormatSInt), VK_FORMAT_R16_SINT}, +// { makeFormatPair(kDataFormat16, kNumericFormatSNormNoZero), VK_FORMAT_R16_SNORM}, +{ makeFormatPair(kDataFormat16, kNumericFormatFloat), VK_FORMAT_R16_SFLOAT}, +// { makeFormatPair(kDataFormat16, kNumericFormatSrgb), VK_FORMAT_R16_SRGB}, +// { makeFormatPair(kDataFormat16, kNumericFormatUBNorm), VK_FORMAT_R16_UNORM}, +// { makeFormatPair(kDataFormat16, kNumericFormatUBNormNoZero), VK_FORMAT_R16_UNORM}, +// { makeFormatPair(kDataFormat16, kNumericFormatUBInt), VK_FORMAT_R16_UINT}, +// { makeFormatPair(kDataFormat16, kNumericFormatUBScaled), VK_FORMAT_R16_USCALED}, +{ makeFormatPair(kDataFormat8_8, kNumericFormatUNorm), VK_FORMAT_R8G8_UNORM}, +{ makeFormatPair(kDataFormat8_8, kNumericFormatSNorm), VK_FORMAT_R8G8_SNORM}, +{ makeFormatPair(kDataFormat8_8, kNumericFormatUScaled), VK_FORMAT_R8G8_USCALED}, +{ makeFormatPair(kDataFormat8_8, kNumericFormatSScaled), VK_FORMAT_R8G8_SSCALED}, +{ makeFormatPair(kDataFormat8_8, kNumericFormatUInt), VK_FORMAT_R8G8_UINT}, +{ makeFormatPair(kDataFormat8_8, kNumericFormatSInt), VK_FORMAT_R8G8_SINT}, +// { makeFormatPair(kDataFormat8_8, kNumericFormatSNormNoZero), VK_FORMAT_R8G8_SNORM}, +// { makeFormatPair(kDataFormat8_8, kNumericFormatFloat), VK_FORMAT_R8G8_SFLOAT}, +{ makeFormatPair(kDataFormat8_8, kNumericFormatSrgb), VK_FORMAT_R8G8_SRGB}, +// { makeFormatPair(kDataFormat8_8, kNumericFormatUBNorm), VK_FORMAT_R8G8_UNORM}, +// { makeFormatPair(kDataFormat8_8, kNumericFormatUBNormNoZero), VK_FORMAT_R8G8_UNORM }, +// { makeFormatPair(kDataFormat8_8, kNumericFormatUBInt), VK_FORMAT_R8G8_UINT}, +// { makeFormatPair(kDataFormat8_8, kNumericFormatUBScaled), VK_FORMAT_R8G8_USCALED}, +// { makeFormatPair(kDataFormat32, kNumericFormatUNorm), VK_FORMAT_R32_UNORM }, +// { makeFormatPair(kDataFormat32, kNumericFormatSNorm), VK_FORMAT_R32_SNORM }, +// { makeFormatPair(kDataFormat32, kNumericFormatUScaled), VK_FORMAT_R32_USCALED }, +// { makeFormatPair(kDataFormat32, kNumericFormatSScaled), VK_FORMAT_R32_SSCALED }, +{ makeFormatPair(kDataFormat32, kNumericFormatUInt), VK_FORMAT_R32_UINT }, +{ makeFormatPair(kDataFormat32, kNumericFormatSInt), VK_FORMAT_R32_SINT }, +// { makeFormatPair(kDataFormat32, kNumericFormatSNormNoZero), VK_FORMAT_R32_SNORM }, +{ makeFormatPair(kDataFormat32, kNumericFormatFloat), VK_FORMAT_R32_SFLOAT }, +// { makeFormatPair(kDataFormat32, kNumericFormatSrgb), VK_FORMAT_R32_SRGB }, +// { makeFormatPair(kDataFormat32, kNumericFormatUBNorm), VK_FORMAT_R32_UNORM }, +// { makeFormatPair(kDataFormat32, kNumericFormatUBNormNoZero), VK_FORMAT_R32_UNORM }, +{ makeFormatPair(kDataFormat32, kNumericFormatUBInt), VK_FORMAT_R32_UINT }, +// { makeFormatPair(kDataFormat32, kNumericFormatUBScaled), VK_FORMAT_R32_USCALED }, +{ makeFormatPair(kDataFormat16_16, kNumericFormatUNorm), VK_FORMAT_R16G16_UNORM }, +{ makeFormatPair(kDataFormat16_16, kNumericFormatSNorm), VK_FORMAT_R16G16_SNORM }, +{ makeFormatPair(kDataFormat16_16, kNumericFormatUScaled), VK_FORMAT_R16G16_USCALED }, +{ makeFormatPair(kDataFormat16_16, kNumericFormatSScaled), VK_FORMAT_R16G16_SSCALED }, +{ makeFormatPair(kDataFormat16_16, kNumericFormatUInt), VK_FORMAT_R16G16_UINT }, +{ makeFormatPair(kDataFormat16_16, kNumericFormatSInt), VK_FORMAT_R16G16_SINT }, +// { makeFormatPair(kDataFormat16_16, kNumericFormatSNormNoZero), VK_FORMAT_R16G16_SNORM }, +{ makeFormatPair(kDataFormat16_16, kNumericFormatFloat), VK_FORMAT_R16G16_SFLOAT }, +// { makeFormatPair(kDataFormat16_16, kNumericFormatSrgb), VK_FORMAT_R16G16_SRGB }, +// { makeFormatPair(kDataFormat16_16, kNumericFormatUBNorm), VK_FORMAT_R16G16_UNORM }, +// { makeFormatPair(kDataFormat16_16, kNumericFormatUBNormNoZero), VK_FORMAT_R16G16_UNORM }, +// { makeFormatPair(kDataFormat16_16, kNumericFormatUBInt), VK_FORMAT_R16G16_UINT }, +// { makeFormatPair(kDataFormat16_16, kNumericFormatUBScaled), VK_FORMAT_R16G16_USCALED }, +// { makeFormatPair(kDataFormat10_11_11, kNumericFormatUNorm), VK_FORMAT_B10G11R11_UNORM_PACK32}, +// { makeFormatPair(kDataFormat10_11_11, kNumericFormatSNorm), VK_FORMAT_B10G11R11_SNORM_PACK32}, +// { makeFormatPair(kDataFormat10_11_11, kNumericFormatUScaled), VK_FORMAT_B10G11R11_USCALED_PACK32}, +// { makeFormatPair(kDataFormat10_11_11, kNumericFormatSScaled), VK_FORMAT_B10G11R11_SSCALED_PACK32}, +// { makeFormatPair(kDataFormat10_11_11, kNumericFormatUInt), VK_FORMAT_B10G11R11_UINT_PACK32}, +// { makeFormatPair(kDataFormat10_11_11, kNumericFormatSInt), VK_FORMAT_B10G11R11_SINT_PACK32}, +// { makeFormatPair(kDataFormat10_11_11, kNumericFormatSNormNoZero), VK_FORMAT_B10G11R11_SNORM_PACK32}, +{ makeFormatPair(kDataFormat10_11_11, kNumericFormatFloat), VK_FORMAT_B10G11R11_UFLOAT_PACK32}, +// { makeFormatPair(kDataFormat10_11_11, kNumericFormatSrgb), VK_FORMAT_B10G11R11_SRGB_PACK32}, +// { makeFormatPair(kDataFormat10_11_11, kNumericFormatUBNorm), VK_FORMAT_B10G11R11_UNORM_PACK32}, +// { makeFormatPair(kDataFormat10_11_11, kNumericFormatUBNormNoZero), VK_FORMAT_B10G11R11_UNORM_PACK32 }, +// { makeFormatPair(kDataFormat10_11_11, kNumericFormatUBInt), VK_FORMAT_B10G11R11_UINT_PACK32}, +// { makeFormatPair(kDataFormat10_11_11, kNumericFormatUBScaled), VK_FORMAT_B10G11R11_USCALED_PACK32}, +// { makeFormatPair(kDataFormat11_11_10, kNumericFormatUNorm), VK_FORMAT_B10G11R11_UNORM_PACK32 }, +// { makeFormatPair(kDataFormat11_11_10, kNumericFormatSNorm), VK_FORMAT_B10G11R11_SNORM_PACK32 }, +// { makeFormatPair(kDataFormat11_11_10, kNumericFormatUScaled), VK_FORMAT_B10G11R11_USCALED_PACK32 }, +// { makeFormatPair(kDataFormat11_11_10, kNumericFormatSScaled), VK_FORMAT_B10G11R11_SSCALED_PACK32 }, +// { makeFormatPair(kDataFormat11_11_10, kNumericFormatUInt), VK_FORMAT_B10G11R11_UINT_PACK32 }, +// { makeFormatPair(kDataFormat11_11_10, kNumericFormatSInt), VK_FORMAT_B10G11R11_SINT_PACK32 }, +// { makeFormatPair(kDataFormat11_11_10, kNumericFormatSNormNoZero), VK_FORMAT_B10G11R11_SNORM_PACK32 }, +{ makeFormatPair(kDataFormat11_11_10, kNumericFormatFloat), VK_FORMAT_B10G11R11_UFLOAT_PACK32 }, +// { makeFormatPair(kDataFormat11_11_10, kNumericFormatSrgb), VK_FORMAT_B10G11R11_SRGB_PACK32 }, +// { makeFormatPair(kDataFormat11_11_10, kNumericFormatUBNorm), VK_FORMAT_B10G11R11_UNORM_PACK32 }, +// { makeFormatPair(kDataFormat11_11_10, kNumericFormatUBNormNoZero), VK_FORMAT_B10G11R11_UNORM_PACK32 }, +// { makeFormatPair(kDataFormat11_11_10, kNumericFormatUBInt), VK_FORMAT_B10G11R11_UINT_PACK32 }, +// { makeFormatPair(kDataFormat11_11_10, kNumericFormatUBScaled), VK_FORMAT_B10G11R11_USCALED_PACK32 }, +{ makeFormatPair(kDataFormat10_10_10_2, kNumericFormatUNorm), VK_FORMAT_A2R10G10B10_UNORM_PACK32}, +{ makeFormatPair(kDataFormat10_10_10_2, kNumericFormatSNorm), VK_FORMAT_A2R10G10B10_SNORM_PACK32}, +{ makeFormatPair(kDataFormat10_10_10_2, kNumericFormatUScaled), VK_FORMAT_A2R10G10B10_USCALED_PACK32}, +{ makeFormatPair(kDataFormat10_10_10_2, kNumericFormatSScaled), VK_FORMAT_A2R10G10B10_SSCALED_PACK32}, +{ makeFormatPair(kDataFormat10_10_10_2, kNumericFormatUInt), VK_FORMAT_A2R10G10B10_UINT_PACK32}, +{ makeFormatPair(kDataFormat10_10_10_2, kNumericFormatSInt), VK_FORMAT_A2R10G10B10_SINT_PACK32}, +// { makeFormatPair(kDataFormat10_10_10_2, kNumericFormatSNormNoZero), VK_FORMAT_A2R10G10B10_SNORM_PACK32}, +// { makeFormatPair(kDataFormat10_10_10_2, kNumericFormatFloat), VK_FORMAT_A2R10G10B10_UFLOAT_PACK32}, +// { makeFormatPair(kDataFormat10_10_10_2, kNumericFormatSrgb), VK_FORMAT_A2R10G10B10_SRGB_PACK32}, +// { makeFormatPair(kDataFormat10_10_10_2, kNumericFormatUBNorm), VK_FORMAT_A2R10G10B10_UNORM_PACK32}, +// { makeFormatPair(kDataFormat10_10_10_2, kNumericFormatUBNormNoZero), VK_FORMAT_A2R10G10B10_UNORM_PACK32}, +// { makeFormatPair(kDataFormat10_10_10_2, kNumericFormatUBInt), VK_FORMAT_A2R10G10B10_UINT_PACK32}, +// { makeFormatPair(kDataFormat10_10_10_2, kNumericFormatUBScaled), VK_FORMAT_A2R10G10B10_USCALED_PACK32}, +{ makeFormatPair(kDataFormat2_10_10_10, kNumericFormatUNorm), VK_FORMAT_A2R10G10B10_UNORM_PACK32}, +{ makeFormatPair(kDataFormat2_10_10_10, kNumericFormatSNorm), VK_FORMAT_A2R10G10B10_SNORM_PACK32}, +{ makeFormatPair(kDataFormat2_10_10_10, kNumericFormatUScaled), VK_FORMAT_A2R10G10B10_USCALED_PACK32}, +{ makeFormatPair(kDataFormat2_10_10_10, kNumericFormatSScaled), VK_FORMAT_A2R10G10B10_SSCALED_PACK32}, +{ makeFormatPair(kDataFormat2_10_10_10, kNumericFormatUInt), VK_FORMAT_A2R10G10B10_UINT_PACK32}, +{ makeFormatPair(kDataFormat2_10_10_10, kNumericFormatSInt), VK_FORMAT_A2R10G10B10_SINT_PACK32}, +// { makeFormatPair(kDataFormat2_10_10_10, kNumericFormatSNormNoZero), VK_FORMAT_A2R10G10B10_SNORM_PACK32}, +// { makeFormatPair(kDataFormat2_10_10_10, kNumericFormatFloat), VK_FORMAT_A2R10G10B10_UFLOAT_PACK32}, +// { makeFormatPair(kDataFormat2_10_10_10, kNumericFormatSrgb), VK_FORMAT_A2R10G10B10_SRGB_PACK32}, +// { makeFormatPair(kDataFormat2_10_10_10, kNumericFormatUBNorm), VK_FORMAT_A2R10G10B10_UNORM_PACK32}, +// { makeFormatPair(kDataFormat2_10_10_10, kNumericFormatUBNormNoZero), VK_FORMAT_A2R10G10B10_UNORM_PACK32}, +// { makeFormatPair(kDataFormat2_10_10_10, kNumericFormatUBInt), VK_FORMAT_A2R10G10B10_UINT_PACK32}, +// { makeFormatPair(kDataFormat2_10_10_10, kNumericFormatUBScaled), VK_FORMAT_A2R10G10B10_USCALED_PACK32}, +{ makeFormatPair(kDataFormat8_8_8_8, kNumericFormatUNorm), VK_FORMAT_R8G8B8A8_UNORM }, +{ makeFormatPair(kDataFormat8_8_8_8, kNumericFormatSNorm), VK_FORMAT_R8G8B8A8_SNORM }, +{ makeFormatPair(kDataFormat8_8_8_8, kNumericFormatUScaled), VK_FORMAT_R8G8B8A8_USCALED }, +{ makeFormatPair(kDataFormat8_8_8_8, kNumericFormatSScaled), VK_FORMAT_R8G8B8A8_SSCALED }, +{ makeFormatPair(kDataFormat8_8_8_8, kNumericFormatUInt), VK_FORMAT_R8G8B8A8_UINT }, +{ makeFormatPair(kDataFormat8_8_8_8, kNumericFormatSInt), VK_FORMAT_R8G8B8A8_SINT }, +// { makeFormatPair(kDataFormat8_8_8_8, kNumericFormatSNormNoZero), VK_FORMAT_R8G8B8A8_SNORM }, +// { makeFormatPair(kDataFormat8_8_8_8, kNumericFormatFloat), VK_FORMAT_R8G8B8A8_SFLOAT }, +{ makeFormatPair(kDataFormat8_8_8_8, kNumericFormatSrgb), VK_FORMAT_R8G8B8A8_SRGB }, +// { makeFormatPair(kDataFormat8_8_8_8, kNumericFormatUBNorm), VK_FORMAT_R8G8B8A8_UNORM }, +// { makeFormatPair(kDataFormat8_8_8_8, kNumericFormatUBNormNoZero), VK_FORMAT_R8G8B8A8_UNORM }, +// { makeFormatPair(kDataFormat8_8_8_8, kNumericFormatUBInt), VK_FORMAT_R8G8B8A8_UINT }, +// { makeFormatPair(kDataFormat8_8_8_8, kNumericFormatUBScaled), VK_FORMAT_R8G8B8A8_USCALED }, +// { makeFormatPair(kDataFormat32_32, kNumericFormatUNorm), VK_FORMAT_R32G32_UNORM }, +// { makeFormatPair(kDataFormat32_32, kNumericFormatSNorm), VK_FORMAT_R32G32_SNORM }, +// { makeFormatPair(kDataFormat32_32, kNumericFormatUScaled), VK_FORMAT_R32G32_USCALED }, +// { makeFormatPair(kDataFormat32_32, kNumericFormatSScaled), VK_FORMAT_R32G32_SSCALED }, +{ makeFormatPair(kDataFormat32_32, kNumericFormatUInt), VK_FORMAT_R32G32_UINT }, +{ makeFormatPair(kDataFormat32_32, kNumericFormatSInt), VK_FORMAT_R32G32_SINT }, +// { makeFormatPair(kDataFormat32_32, kNumericFormatSNormNoZero), VK_FORMAT_R32G32_SNORM }, +{ makeFormatPair(kDataFormat32_32, kNumericFormatFloat), VK_FORMAT_R32G32_SFLOAT }, +// { makeFormatPair(kDataFormat32_32, kNumericFormatSrgb), VK_FORMAT_R32G32_SRGB }, +// { makeFormatPair(kDataFormat32_32, kNumericFormatUBNorm), VK_FORMAT_R32G32_UNORM }, +// { makeFormatPair(kDataFormat32_32, kNumericFormatUBNormNoZero), VK_FORMAT_R32G32_UNORM }, +// { makeFormatPair(kDataFormat32_32, kNumericFormatUBInt), VK_FORMAT_R32G32_UINT }, +// { makeFormatPair(kDataFormat32_32, kNumericFormatUBScaled), VK_FORMAT_R32G32_USCALED }, +{ makeFormatPair(kDataFormat16_16_16_16, kNumericFormatUNorm), VK_FORMAT_R16G16B16A16_UNORM }, +{ makeFormatPair(kDataFormat16_16_16_16, kNumericFormatSNorm), VK_FORMAT_R16G16B16A16_SNORM }, +{ makeFormatPair(kDataFormat16_16_16_16, kNumericFormatUScaled), VK_FORMAT_R16G16B16A16_USCALED }, +{ makeFormatPair(kDataFormat16_16_16_16, kNumericFormatSScaled), VK_FORMAT_R16G16B16A16_SSCALED }, +{ makeFormatPair(kDataFormat16_16_16_16, kNumericFormatUInt), VK_FORMAT_R16G16B16A16_UINT }, +{ makeFormatPair(kDataFormat16_16_16_16, kNumericFormatSInt), VK_FORMAT_R16G16B16A16_SINT }, +// { makeFormatPair(kDataFormat16_16_16_16, kNumericFormatSNormNoZero), VK_FORMAT_R16G16B16A16_SNORM }, +{ makeFormatPair(kDataFormat16_16_16_16, kNumericFormatFloat), VK_FORMAT_R16G16B16A16_SFLOAT }, +// { makeFormatPair(kDataFormat16_16_16_16, kNumericFormatSrgb), VK_FORMAT_R16G16B16A16_SRGB }, +// { makeFormatPair(kDataFormat16_16_16_16, kNumericFormatUBNorm), VK_FORMAT_R16G16B16A16_UNORM }, +// { makeFormatPair(kDataFormat16_16_16_16, kNumericFormatUBNormNoZero), VK_FORMAT_R16G16B16A16_UNORM }, +// { makeFormatPair(kDataFormat16_16_16_16, kNumericFormatUBInt), VK_FORMAT_R16G16B16A16_UINT }, +// { makeFormatPair(kDataFormat16_16_16_16, kNumericFormatUBScaled), VK_FORMAT_R16G16B16A16_USCALED }, +// { makeFormatPair(kDataFormat32_32_32, kNumericFormatUNorm), VK_FORMAT_R32G32B32_UNORM }, +// { makeFormatPair(kDataFormat32_32_32, kNumericFormatSNorm), VK_FORMAT_R32G32B32_SNORM }, +// { makeFormatPair(kDataFormat32_32_32, kNumericFormatUScaled), VK_FORMAT_R32G32B32_USCALED }, +// { makeFormatPair(kDataFormat32_32_32, kNumericFormatSScaled), VK_FORMAT_R32G32B32_SSCALED }, +{ makeFormatPair(kDataFormat32_32_32, kNumericFormatUInt), VK_FORMAT_R32G32B32_UINT }, +{ makeFormatPair(kDataFormat32_32_32, kNumericFormatSInt), VK_FORMAT_R32G32B32_SINT }, +// { makeFormatPair(kDataFormat32_32_32, kNumericFormatSNormNoZero), VK_FORMAT_R32G32B32_SNORM }, +{ makeFormatPair(kDataFormat32_32_32, kNumericFormatFloat), VK_FORMAT_R32G32B32_SFLOAT }, +// { makeFormatPair(kDataFormat32_32_32, kNumericFormatSrgb), VK_FORMAT_R32G32B32_SRGB }, +// { makeFormatPair(kDataFormat32_32_32, kNumericFormatUBNorm), VK_FORMAT_R32G32B32_UNORM }, +// { makeFormatPair(kDataFormat32_32_32, kNumericFormatUBNormNoZero), VK_FORMAT_R32G32B32_UNORM }, +// { makeFormatPair(kDataFormat32_32_32, kNumericFormatUBInt), VK_FORMAT_R32G32B32_UINT }, +// { makeFormatPair(kDataFormat32_32_32, kNumericFormatUBScaled), VK_FORMAT_R32G32B32_USCALED }, +// { makeFormatPair(kDataFormat32_32_32_32, kNumericFormatUNorm), VK_FORMAT_R32G32B32A32_UNORM }, +// { makeFormatPair(kDataFormat32_32_32_32, kNumericFormatSNorm), VK_FORMAT_R32G32B32A32_SNORM }, +// { makeFormatPair(kDataFormat32_32_32_32, kNumericFormatUScaled), VK_FORMAT_R32G32B32A32_USCALED }, +// { makeFormatPair(kDataFormat32_32_32_32, kNumericFormatSScaled), VK_FORMAT_R32G32B32A32_SSCALED }, +{ makeFormatPair(kDataFormat32_32_32_32, kNumericFormatUInt), VK_FORMAT_R32G32B32A32_UINT }, +{ makeFormatPair(kDataFormat32_32_32_32, kNumericFormatSInt), VK_FORMAT_R32G32B32A32_SINT }, +// { makeFormatPair(kDataFormat32_32_32_32, kNumericFormatSNormNoZero), VK_FORMAT_R32G32B32A32_SNORM }, +{ makeFormatPair(kDataFormat32_32_32_32, kNumericFormatFloat), VK_FORMAT_R32G32B32A32_SFLOAT }, +// { makeFormatPair(kDataFormat32_32_32_32, kNumericFormatSrgb), VK_FORMAT_R32G32B32A32_SRGB }, +// { makeFormatPair(kDataFormat32_32_32_32, kNumericFormatUBNorm), VK_FORMAT_R32G32B32A32_UNORM }, +// { makeFormatPair(kDataFormat32_32_32_32, kNumericFormatUBNormNoZero), VK_FORMAT_R32G32B32A32_UNORM }, +{ makeFormatPair(kDataFormat32_32_32_32, kNumericFormatUBInt), VK_FORMAT_R32G32B32A32_UINT }, +// { makeFormatPair(kDataFormat32_32_32_32, kNumericFormatUBScaled), VK_FORMAT_R32G32B32A32_USCALED }, +{ makeFormatPair(kDataFormat5_6_5, kNumericFormatUNorm), VK_FORMAT_B5G6R5_UNORM_PACK16 }, +// { makeFormatPair(kDataFormat5_6_5, kNumericFormatSNorm), VK_FORMAT_B5G6R5_SNORM_PACK16 }, +// { makeFormatPair(kDataFormat5_6_5, kNumericFormatUScaled), VK_FORMAT_B5G6R5_USCALED_PACK16 }, +// { makeFormatPair(kDataFormat5_6_5, kNumericFormatSScaled), VK_FORMAT_B5G6R5_SSCALED_PACK16 }, +// { makeFormatPair(kDataFormat5_6_5, kNumericFormatUInt), VK_FORMAT_B5G6R5_UINT_PACK16 }, +// { makeFormatPair(kDataFormat5_6_5, kNumericFormatSInt), VK_FORMAT_B5G6R5_SINT_PACK16 }, +// { makeFormatPair(kDataFormat5_6_5, kNumericFormatSNormNoZero), VK_FORMAT_B5G6R5_SNORM_PACK16 }, +// { makeFormatPair(kDataFormat5_6_5, kNumericFormatFloat), VK_FORMAT_B5G6R5_SFLOAT_PACK16 }, +// { makeFormatPair(kDataFormat5_6_5, kNumericFormatSrgb), VK_FORMAT_B5G6R5_SRGB_PACK16 }, +// { makeFormatPair(kDataFormat5_6_5, kNumericFormatUBNorm), VK_FORMAT_B5G6R5_UNORM_PACK16 }, +// { makeFormatPair(kDataFormat5_6_5, kNumericFormatUBNormNoZero), VK_FORMAT_B5G6R5_UNORM_PACK16 }, +// { makeFormatPair(kDataFormat5_6_5, kNumericFormatUBInt), VK_FORMAT_B5G6R5_UINT_PACK16 }, +// { makeFormatPair(kDataFormat5_6_5, kNumericFormatUBScaled), VK_FORMAT_B5G6R5_USCALED_PACK16 }, +{ makeFormatPair(kDataFormat1_5_5_5, kNumericFormatUNorm), VK_FORMAT_A1R5G5B5_UNORM_PACK16 }, +// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatSNorm), VK_FORMAT_A1R5G5B5_SNORM_PACK16 }, +// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatUScaled), VK_FORMAT_A1R5G5B5_USCALED_PACK16 }, +// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatSScaled), VK_FORMAT_A1R5G5B5_SSCALED_PACK16 }, +// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatUInt), VK_FORMAT_A1R5G5B5_UINT_PACK16 }, +// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatSInt), VK_FORMAT_A1R5G5B5_SINT_PACK16 }, +// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatSNormNoZero), VK_FORMAT_A1R5G5B5_SNORM_PACK16 }, +// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatFloat), VK_FORMAT_A1R5G5B5_SFLOAT_PACK16 }, +// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatSrgb), VK_FORMAT_A1R5G5B5_SRGB_PACK16 }, +// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatUBNorm), VK_FORMAT_A1R5G5B5_UNORM_PACK16 }, +// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatUBNormNoZero), VK_FORMAT_A1R5G5B5_UNORM_PACK16 }, +// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatUBInt), VK_FORMAT_A1R5G5B5_UINT_PACK16 }, +// { makeFormatPair(kDataFormat1_5_5_5, kNumericFormatUBScaled), VK_FORMAT_A1R5G5B5_USCALED_PACK16 }, +{ makeFormatPair(kDataFormat5_5_5_1, kNumericFormatUNorm), VK_FORMAT_A1R5G5B5_UNORM_PACK16 }, +// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatSNorm), VK_FORMAT_A1R5G5B5_SNORM_PACK16 }, +// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatUScaled), VK_FORMAT_A1R5G5B5_USCALED_PACK16 }, +// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatSScaled), VK_FORMAT_A1R5G5B5_SSCALED_PACK16 }, +// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatUInt), VK_FORMAT_A1R5G5B5_UINT_PACK16 }, +// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatSInt), VK_FORMAT_A1R5G5B5_SINT_PACK16 }, +// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatSNormNoZero), VK_FORMAT_A1R5G5B5_SNORM_PACK16 }, +// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatFloat), VK_FORMAT_A1R5G5B5_SFLOAT_PACK16 }, +// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatSrgb), VK_FORMAT_A1R5G5B5_SRGB_PACK16 }, +// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatUBNorm), VK_FORMAT_A1R5G5B5_UNORM_PACK16 }, +// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatUBNormNoZero), VK_FORMAT_A1R5G5B5_UNORM_PACK16 }, +// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatUBInt), VK_FORMAT_A1R5G5B5_UINT_PACK16 }, +// { makeFormatPair(kDataFormat5_5_5_1, kNumericFormatUBScaled), VK_FORMAT_A1R5G5B5_USCALED_PACK16 }, +{ makeFormatPair(kDataFormat4_4_4_4, kNumericFormatUNorm), VK_FORMAT_R4G4B4A4_UNORM_PACK16 }, +// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatSNorm), VK_FORMAT_R4G4B4A4_SNORM_PACK16 }, +// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatUScaled), VK_FORMAT_R4G4B4A4_USCALED_PACK16 }, +// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatSScaled), VK_FORMAT_R4G4B4A4_SSCALED_PACK16 }, +// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatUInt), VK_FORMAT_R4G4B4A4_UINT_PACK16 }, +// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatSInt), VK_FORMAT_R4G4B4A4_SINT_PACK16 }, +// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatSNormNoZero), VK_FORMAT_R4G4B4A4_SNORM_PACK16 }, +// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatFloat), VK_FORMAT_R4G4B4A4_SFLOAT_PACK16 }, +// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatSrgb), VK_FORMAT_R4G4B4A4_SRGB_PACK16 }, +// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatUBNorm), VK_FORMAT_R4G4B4A4_UNORM_PACK16 }, +// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatUBNormNoZero), VK_FORMAT_R4G4B4A4_UNORM_PACK16 }, +// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatUBInt), VK_FORMAT_R4G4B4A4_UINT_PACK16 }, +// { makeFormatPair(kDataFormat4_4_4_4, kNumericFormatUBScaled), VK_FORMAT_R4G4B4A4_USCALED_PACK16 }, +// { makeFormatPair(kDataFormat8_24, kNumericFormatUNorm), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat8_24, kNumericFormatSNorm), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat8_24, kNumericFormatUScaled), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat8_24, kNumericFormatSScaled), VK_FORMAT_D24_UNORM_S8_UINT }, +{ makeFormatPair(kDataFormat8_24, kNumericFormatUInt), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat8_24, kNumericFormatSInt), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat8_24, kNumericFormatSNormNoZero), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat8_24, kNumericFormatFloat), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat8_24, kNumericFormatSrgb), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat8_24, kNumericFormatUBNorm), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat8_24, kNumericFormatUBNormNoZero), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat8_24, kNumericFormatUBInt), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat8_24, kNumericFormatUBScaled), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat24_8, kNumericFormatUNorm), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat24_8, kNumericFormatSNorm), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat24_8, kNumericFormatUScaled), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat24_8, kNumericFormatSScaled), VK_FORMAT_D24_UNORM_S8_UINT }, +{ makeFormatPair(kDataFormat24_8, kNumericFormatUInt), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat24_8, kNumericFormatSInt), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat24_8, kNumericFormatSNormNoZero), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat24_8, kNumericFormatFloat), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat24_8, kNumericFormatSrgb), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat24_8, kNumericFormatUBNorm), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat24_8, kNumericFormatUBNormNoZero), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat24_8, kNumericFormatUBInt), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormat24_8, kNumericFormatUBScaled), VK_FORMAT_D24_UNORM_S8_UINT }, +// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatUNorm), }, +// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatSNorm), }, +// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatUScaled), }, +// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatSScaled), }, +// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatUInt), }, +// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatSInt), }, +// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatSNormNoZero), }, +// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatFloat), }, +// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatSrgb), }, +// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatUBNorm), }, +// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatUBNormNoZero), }, +// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatUBInt), }, +// { makeFormatPair(kDataFormatX24_8_32, kNumericFormatUBScaled), }, +// { makeFormatPair(kDataFormatGB_GR, kNumericFormatUNorm), }, +// { makeFormatPair(kDataFormatGB_GR, kNumericFormatSNorm), }, +// { makeFormatPair(kDataFormatGB_GR, kNumericFormatUScaled), }, +// { makeFormatPair(kDataFormatGB_GR, kNumericFormatSScaled), }, +// { makeFormatPair(kDataFormatGB_GR, kNumericFormatUInt), }, +// { makeFormatPair(kDataFormatGB_GR, kNumericFormatSInt), }, +// { makeFormatPair(kDataFormatGB_GR, kNumericFormatSNormNoZero), }, +// { makeFormatPair(kDataFormatGB_GR, kNumericFormatFloat), }, +// { makeFormatPair(kDataFormatGB_GR, kNumericFormatSrgb), }, +// { makeFormatPair(kDataFormatGB_GR, kNumericFormatUBNorm), }, +// { makeFormatPair(kDataFormatGB_GR, kNumericFormatUBNormNoZero), }, +// { makeFormatPair(kDataFormatGB_GR, kNumericFormatUBInt), }, +// { makeFormatPair(kDataFormatGB_GR, kNumericFormatUBScaled), }, +// { makeFormatPair(kDataFormatBG_RG, kNumericFormatUNorm), }, +// { makeFormatPair(kDataFormatBG_RG, kNumericFormatSNorm), }, +// { makeFormatPair(kDataFormatBG_RG, kNumericFormatUScaled), }, +// { makeFormatPair(kDataFormatBG_RG, kNumericFormatSScaled), }, +// { makeFormatPair(kDataFormatBG_RG, kNumericFormatUInt), }, +// { makeFormatPair(kDataFormatBG_RG, kNumericFormatSInt), }, +// { makeFormatPair(kDataFormatBG_RG, kNumericFormatSNormNoZero), }, +// { makeFormatPair(kDataFormatBG_RG, kNumericFormatFloat), }, +// { makeFormatPair(kDataFormatBG_RG, kNumericFormatSrgb), }, +// { makeFormatPair(kDataFormatBG_RG, kNumericFormatUBNorm), }, +// { makeFormatPair(kDataFormatBG_RG, kNumericFormatUBNormNoZero), }, +// { makeFormatPair(kDataFormatBG_RG, kNumericFormatUBInt), }, +// { makeFormatPair(kDataFormatBG_RG, kNumericFormatUBScaled), }, +// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatUNorm), VK_FORMAT_E5B9G9R9_UNORM_PACK32 }, +// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatSNorm), VK_FORMAT_E5B9G9R9_SNORM_PACK32 }, +// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatUScaled), VK_FORMAT_E5B9G9R9_USCALED_PACK32 }, +// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatSScaled), VK_FORMAT_E5B9G9R9_SSCALED_PACK32 }, +// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatUInt), VK_FORMAT_E5B9G9R9_UINT_PACK32 }, +// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatSInt), VK_FORMAT_E5B9G9R9_SINT_PACK32 }, +// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatSNormNoZero), VK_FORMAT_E5B9G9R9_SNORM_PACK32 }, +{ makeFormatPair(kDataFormat5_9_9_9, kNumericFormatFloat), VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 }, +// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatSrgb), VK_FORMAT_E5B9G9R9_SRGB_PACK32 }, +// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatUBNorm), VK_FORMAT_E5B9G9R9_UNORM_PACK32 }, +// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatUBNormNoZero), VK_FORMAT_E5B9G9R9_UNORM_PACK32 }, +// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatUBInt), VK_FORMAT_E5B9G9R9_UINT_PACK32 }, +// { makeFormatPair(kDataFormat5_9_9_9, kNumericFormatUBScaled), VK_FORMAT_E5B9G9R9_USCALED_PACK32 }, +{ makeFormatPair(kDataFormatBc1, kNumericFormatUNorm), VK_FORMAT_BC1_RGBA_UNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc1, kNumericFormatSNorm), VK_FORMAT_BC1_RGBA_SNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc1, kNumericFormatUScaled), VK_FORMAT_BC1_RGBA_USCALED_BLOCK }, +// { makeFormatPair(kDataFormatBc1, kNumericFormatSScaled), VK_FORMAT_BC1_RGBA_SSCALED_BLOCK }, +// { makeFormatPair(kDataFormatBc1, kNumericFormatUInt), VK_FORMAT_BC1_RGBA_UINT_BLOCK }, +// { makeFormatPair(kDataFormatBc1, kNumericFormatSInt), VK_FORMAT_BC1_RGBA_SINT_BLOCK }, +// { makeFormatPair(kDataFormatBc1, kNumericFormatSNormNoZero), VK_FORMAT_BC1_RGBA_SNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc1, kNumericFormatFloat), VK_FORMAT_BC1_RGBA_SFLOAT_BLOCK }, +{ makeFormatPair(kDataFormatBc1, kNumericFormatSrgb), VK_FORMAT_BC1_RGBA_SRGB_BLOCK }, +// { makeFormatPair(kDataFormatBc1, kNumericFormatUBNorm), VK_FORMAT_BC1_RGBA_UNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc1, kNumericFormatUBNormNoZero), VK_FORMAT_BC1_RGBA_UNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc1, kNumericFormatUBInt), VK_FORMAT_BC1_RGBA_UINT_BLOCK }, +// { makeFormatPair(kDataFormatBc1, kNumericFormatUBScaled), VK_FORMAT_BC1_RGBA_USCALED_BLOCK }, +{ makeFormatPair(kDataFormatBc2, kNumericFormatUNorm), VK_FORMAT_BC2_UNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc2, kNumericFormatSNorm), VK_FORMAT_BC2_SNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc2, kNumericFormatUScaled), VK_FORMAT_BC2_USCALED_BLOCK }, +// { makeFormatPair(kDataFormatBc2, kNumericFormatSScaled), VK_FORMAT_BC2_SSCALED_BLOCK }, +// { makeFormatPair(kDataFormatBc2, kNumericFormatUInt), VK_FORMAT_BC2_UINT_BLOCK }, +// { makeFormatPair(kDataFormatBc2, kNumericFormatSInt), VK_FORMAT_BC2_SINT_BLOCK }, +// { makeFormatPair(kDataFormatBc2, kNumericFormatSNormNoZero), VK_FORMAT_BC2_SNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc2, kNumericFormatFloat), VK_FORMAT_BC2_SFLOAT_BLOCK }, +{ makeFormatPair(kDataFormatBc2, kNumericFormatSrgb), VK_FORMAT_BC2_SRGB_BLOCK }, +// { makeFormatPair(kDataFormatBc2, kNumericFormatUBNorm), VK_FORMAT_BC2_UNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc2, kNumericFormatUBNormNoZero), VK_FORMAT_BC2_UNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc2, kNumericFormatUBInt), VK_FORMAT_BC2_UINT_BLOCK }, +// { makeFormatPair(kDataFormatBc2, kNumericFormatUBScaled), VK_FORMAT_BC2_USCALED_BLOCK }, +{ makeFormatPair(kDataFormatBc3, kNumericFormatUNorm), VK_FORMAT_BC3_UNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc3, kNumericFormatSNorm), VK_FORMAT_BC3_SNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc3, kNumericFormatUScaled), VK_FORMAT_BC3_USCALED_BLOCK }, +// { makeFormatPair(kDataFormatBc3, kNumericFormatSScaled), VK_FORMAT_BC3_SSCALED_BLOCK }, +// { makeFormatPair(kDataFormatBc3, kNumericFormatUInt), VK_FORMAT_BC3_UINT_BLOCK }, +// { makeFormatPair(kDataFormatBc3, kNumericFormatSInt), VK_FORMAT_BC3_SINT_BLOCK }, +// { makeFormatPair(kDataFormatBc3, kNumericFormatSNormNoZero), VK_FORMAT_BC3_SNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc3, kNumericFormatFloat), VK_FORMAT_BC3_SFLOAT_BLOCK }, +{ makeFormatPair(kDataFormatBc3, kNumericFormatSrgb), VK_FORMAT_BC3_SRGB_BLOCK }, +// { makeFormatPair(kDataFormatBc3, kNumericFormatUBNorm), VK_FORMAT_BC3_UNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc3, kNumericFormatUBNormNoZero), VK_FORMAT_BC3_UNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc3, kNumericFormatUBInt), VK_FORMAT_BC3_UINT_BLOCK }, +// { makeFormatPair(kDataFormatBc3, kNumericFormatUBScaled), VK_FORMAT_BC3_USCALED_BLOCK }, +{ makeFormatPair(kDataFormatBc4, kNumericFormatUNorm), VK_FORMAT_BC4_UNORM_BLOCK}, +{ makeFormatPair(kDataFormatBc4, kNumericFormatSNorm), VK_FORMAT_BC4_SNORM_BLOCK}, +// { makeFormatPair(kDataFormatBc4, kNumericFormatUScaled), VK_FORMAT_BC4_USCALED_BLOCK}, +// { makeFormatPair(kDataFormatBc4, kNumericFormatSScaled), VK_FORMAT_BC4_SSCALED_BLOCK}, +// { makeFormatPair(kDataFormatBc4, kNumericFormatUInt), VK_FORMAT_BC4_UINT_BLOCK}, +// { makeFormatPair(kDataFormatBc4, kNumericFormatSInt), VK_FORMAT_BC4_SINT_BLOCK}, +// { makeFormatPair(kDataFormatBc4, kNumericFormatSNormNoZero), VK_FORMAT_BC4_SNORM_BLOCK}, +// { makeFormatPair(kDataFormatBc4, kNumericFormatFloat), VK_FORMAT_BC4_SFLOAT_BLOCK}, +// { makeFormatPair(kDataFormatBc4, kNumericFormatSrgb), VK_FORMAT_BC4_SRGB_BLOCK}, +// { makeFormatPair(kDataFormatBc4, kNumericFormatUBNorm), VK_FORMAT_BC4_UNORM_BLOCK}, +// { makeFormatPair(kDataFormatBc4, kNumericFormatUBNormNoZero), VK_FORMAT_BC4_UNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc4, kNumericFormatUBInt), VK_FORMAT_BC4_UINT_BLOCK}, +// { makeFormatPair(kDataFormatBc4, kNumericFormatUBScaled), VK_FORMAT_BC4_USCALED_BLOCK}, +{ makeFormatPair(kDataFormatBc5, kNumericFormatUNorm), VK_FORMAT_BC5_UNORM_BLOCK }, +{ makeFormatPair(kDataFormatBc5, kNumericFormatSNorm), VK_FORMAT_BC5_SNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc5, kNumericFormatUScaled), VK_FORMAT_BC5_USCALED_BLOCK }, +// { makeFormatPair(kDataFormatBc5, kNumericFormatSScaled), VK_FORMAT_BC5_SSCALED_BLOCK }, +// { makeFormatPair(kDataFormatBc5, kNumericFormatUInt), VK_FORMAT_BC5_UINT_BLOCK }, +// { makeFormatPair(kDataFormatBc5, kNumericFormatSInt), VK_FORMAT_BC5_SINT_BLOCK }, +// { makeFormatPair(kDataFormatBc5, kNumericFormatSNormNoZero), VK_FORMAT_BC5_SNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc5, kNumericFormatFloat), VK_FORMAT_BC5_SFLOAT_BLOCK }, +// { makeFormatPair(kDataFormatBc5, kNumericFormatSrgb), VK_FORMAT_BC5_SRGB_BLOCK }, +// { makeFormatPair(kDataFormatBc5, kNumericFormatUBNorm), VK_FORMAT_BC5_UNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc5, kNumericFormatUBNormNoZero), VK_FORMAT_BC5_UNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc5, kNumericFormatUBInt), VK_FORMAT_BC5_UINT_BLOCK }, +// { makeFormatPair(kDataFormatBc5, kNumericFormatUBScaled), VK_FORMAT_BC5_USCALED_BLOCK }, +// { makeFormatPair(kDataFormatBc6, kNumericFormatUNorm), VK_FORMAT_BC6H_UNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc6, kNumericFormatSNorm), VK_FORMAT_BC6H_SNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc6, kNumericFormatUScaled), VK_FORMAT_BC6H_USCALED_BLOCK }, +// { makeFormatPair(kDataFormatBc6, kNumericFormatSScaled), VK_FORMAT_BC6H_SSCALED_BLOCK }, +// { makeFormatPair(kDataFormatBc6, kNumericFormatUInt), VK_FORMAT_BC6H_UINT_BLOCK }, +// { makeFormatPair(kDataFormatBc6, kNumericFormatSInt), VK_FORMAT_BC6H_SINT_BLOCK }, +// { makeFormatPair(kDataFormatBc6, kNumericFormatSNormNoZero), VK_FORMAT_BC6H_SNORM_BLOCK }, +{ makeFormatPair(kDataFormatBc6, kNumericFormatFloat), VK_FORMAT_BC6H_SFLOAT_BLOCK }, +// { makeFormatPair(kDataFormatBc6, kNumericFormatSrgb), VK_FORMAT_BC6H_SRGB_BLOCK }, +// { makeFormatPair(kDataFormatBc6, kNumericFormatUBNorm), VK_FORMAT_BC6H_UNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc6, kNumericFormatUBNormNoZero), VK_FORMAT_BC6H_UNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc6, kNumericFormatUBInt), VK_FORMAT_BC6H_UINT_BLOCK }, +// { makeFormatPair(kDataFormatBc6, kNumericFormatUBScaled), VK_FORMAT_BC6H_USCALED_BLOCK }, +{ makeFormatPair(kDataFormatBc7, kNumericFormatUNorm), VK_FORMAT_BC7_UNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc7, kNumericFormatSNorm), VK_FORMAT_BC7_SNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc7, kNumericFormatUScaled), VK_FORMAT_BC7_USCALED_BLOCK }, +// { makeFormatPair(kDataFormatBc7, kNumericFormatSScaled), VK_FORMAT_BC7_SSCALED_BLOCK }, +// { makeFormatPair(kDataFormatBc7, kNumericFormatUInt), VK_FORMAT_BC7_UINT_BLOCK }, +// { makeFormatPair(kDataFormatBc7, kNumericFormatSInt), VK_FORMAT_BC7_SINT_BLOCK }, +// { makeFormatPair(kDataFormatBc7, kNumericFormatSNormNoZero), VK_FORMAT_BC7_SNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc7, kNumericFormatFloat), VK_FORMAT_BC7_SFLOAT_BLOCK }, +{ makeFormatPair(kDataFormatBc7, kNumericFormatSrgb), VK_FORMAT_BC7_SRGB_BLOCK }, +// { makeFormatPair(kDataFormatBc7, kNumericFormatUBNorm), VK_FORMAT_BC7_UNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc7, kNumericFormatUBNormNoZero), VK_FORMAT_BC7_UNORM_BLOCK }, +// { makeFormatPair(kDataFormatBc7, kNumericFormatUBInt), VK_FORMAT_BC7_UINT_BLOCK }, +// { makeFormatPair(kDataFormatBc7, kNumericFormatUBScaled), VK_FORMAT_BC7_USCALED_BLOCK }, +// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatUNorm), }, +// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatSNorm), }, +// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatUScaled), }, +// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatSScaled), }, +// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatUInt), }, +// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatSInt), }, +// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatSNormNoZero), }, +// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatFloat), }, +// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatSrgb), }, +// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatUBNorm), }, +// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatUBNormNoZero), }, +// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatUBInt), }, +// { makeFormatPair(kDataFormatFmask8_S2_F1, kNumericFormatUBScaled), }, +// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatUNorm), }, +// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatSNorm), }, +// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatUScaled), }, +// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatSScaled), }, +// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatUInt), }, +// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatSInt), }, +// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatSNormNoZero), }, +// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatFloat), }, +// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatSrgb), }, +// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatUBNorm), }, +// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatUBNormNoZero), }, +// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatUBInt), }, +// { makeFormatPair(kDataFormatFmask8_S4_F1, kNumericFormatUBScaled), }, +// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatUNorm), }, +// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatSNorm), }, +// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatUScaled), }, +// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatSScaled), }, +// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatUInt), }, +// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatSInt), }, +// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatSNormNoZero), }, +// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatFloat), }, +// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatSrgb), }, +// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatUBNorm), }, +// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatUBNormNoZero), }, +// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatUBInt), }, +// { makeFormatPair(kDataFormatFmask8_S8_F1, kNumericFormatUBScaled), }, +// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatUNorm), }, +// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatSNorm), }, +// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatUScaled), }, +// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatSScaled), }, +// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatUInt), }, +// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatSInt), }, +// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatSNormNoZero), }, +// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatFloat), }, +// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatSrgb), }, +// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatUBNorm), }, +// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatUBNormNoZero), }, +// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatUBInt), }, +// { makeFormatPair(kDataFormatFmask8_S2_F2, kNumericFormatUBScaled), }, +// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatUNorm), }, +// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatSNorm), }, +// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatUScaled), }, +// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatSScaled), }, +// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatUInt), }, +// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatSInt), }, +// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatSNormNoZero), }, +// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatFloat), }, +// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatSrgb), }, +// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatUBNorm), }, +// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatUBNormNoZero), }, +// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatUBInt), }, +// { makeFormatPair(kDataFormatFmask8_S4_F2, kNumericFormatUBScaled), }, +// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatUNorm), }, +// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatSNorm), }, +// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatUScaled), }, +// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatSScaled), }, +// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatUInt), }, +// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatSInt), }, +// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatSNormNoZero), }, +// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatFloat), }, +// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatSrgb), }, +// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatUBNorm), }, +// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatUBNormNoZero), }, +// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatUBInt), }, +// { makeFormatPair(kDataFormatFmask8_S4_F4, kNumericFormatUBScaled), }, +// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatUNorm), }, +// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatSNorm), }, +// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatUScaled), }, +// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatSScaled), }, +// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatUInt), }, +// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatSInt), }, +// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatSNormNoZero), }, +// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatFloat), }, +// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatSrgb), }, +// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatUBNorm), }, +// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatUBNormNoZero), }, +// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatUBInt), }, +// { makeFormatPair(kDataFormatFmask16_S16_F1, kNumericFormatUBScaled), }, +// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatUNorm), }, +// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatSNorm), }, +// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatUScaled), }, +// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatSScaled), }, +// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatUInt), }, +// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatSInt), }, +// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatSNormNoZero), }, +// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatFloat), }, +// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatSrgb), }, +// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatUBNorm), }, +// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatUBNormNoZero), }, +// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatUBInt), }, +// { makeFormatPair(kDataFormatFmask16_S8_F2, kNumericFormatUBScaled), }, +// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatUNorm), }, +// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatSNorm), }, +// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatUScaled), }, +// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatSScaled), }, +// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatUInt), }, +// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatSInt), }, +// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatSNormNoZero), }, +// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatFloat), }, +// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatSrgb), }, +// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatUBNorm), }, +// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatUBNormNoZero), }, +// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatUBInt), }, +// { makeFormatPair(kDataFormatFmask32_S16_F2, kNumericFormatUBScaled), }, +// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatUNorm), }, +// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatSNorm), }, +// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatUScaled), }, +// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatSScaled), }, +// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatUInt), }, +// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatSInt), }, +// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatSNormNoZero), }, +// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatFloat), }, +// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatSrgb), }, +// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatUBNorm), }, +// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatUBNormNoZero), }, +// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatUBInt), }, +// { makeFormatPair(kDataFormatFmask32_S8_F4, kNumericFormatUBScaled), }, +// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatUNorm), }, +// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatSNorm), }, +// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatUScaled), }, +// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatSScaled), }, +// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatUInt), }, +// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatSInt), }, +// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatSNormNoZero), }, +// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatFloat), }, +// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatSrgb), }, +// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatUBNorm), }, +// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatUBNormNoZero), }, +// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatUBInt), }, +// { makeFormatPair(kDataFormatFmask32_S8_F8, kNumericFormatUBScaled), }, +// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatUNorm), }, +// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatSNorm), }, +// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatUScaled), }, +// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatSScaled), }, +// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatUInt), }, +// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatSInt), }, +// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatSNormNoZero), }, +// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatFloat), }, +// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatSrgb), }, +// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatUBNorm), }, +// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatUBNormNoZero), }, +// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatUBInt), }, +// { makeFormatPair(kDataFormatFmask64_S16_F4, kNumericFormatUBScaled), }, +// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatUNorm), }, +// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatSNorm), }, +// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatUScaled), }, +// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatSScaled), }, +// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatUInt), }, +// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatSInt), }, +// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatSNormNoZero), }, +// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatFloat), }, +// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatSrgb), }, +// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatUBNorm), }, +// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatUBNormNoZero), }, +// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatUBInt), }, +// { makeFormatPair(kDataFormatFmask64_S16_F8, kNumericFormatUBScaled), }, +{ makeFormatPair(kDataFormat4_4, kNumericFormatUNorm), VK_FORMAT_R4G4_UNORM_PACK8}, +// { makeFormatPair(kDataFormat4_4, kNumericFormatSNorm), VK_FORMAT_R4G4_SNORM_PACK8}, +// { makeFormatPair(kDataFormat4_4, kNumericFormatUScaled), VK_FORMAT_R4G4_USCALED_PACK8}, +// { makeFormatPair(kDataFormat4_4, kNumericFormatSScaled), VK_FORMAT_R4G4_SSCALED_PACK8}, +// { makeFormatPair(kDataFormat4_4, kNumericFormatUInt), VK_FORMAT_R4G4_UINT_PACK8}, +// { makeFormatPair(kDataFormat4_4, kNumericFormatSInt), VK_FORMAT_R4G4_SINT_PACK8}, +// { makeFormatPair(kDataFormat4_4, kNumericFormatSNormNoZero), VK_FORMAT_R4G4_SNORM_PACK8}, +// { makeFormatPair(kDataFormat4_4, kNumericFormatFloat), VK_FORMAT_R4G4_SFLOAT_PACK8}, +// { makeFormatPair(kDataFormat4_4, kNumericFormatSrgb), VK_FORMAT_R4G4_SRGB_PACK8}, +// { makeFormatPair(kDataFormat4_4, kNumericFormatUBNorm), VK_FORMAT_R4G4_UNORM_PACK8}, +// { makeFormatPair(kDataFormat4_4, kNumericFormatUBNormNoZero), VK_FORMAT_R4G4_UNORM_PACK8}, +// { makeFormatPair(kDataFormat4_4, kNumericFormatUBInt), VK_FORMAT_R4G4_UINT_PACK8}, +// { makeFormatPair(kDataFormat4_4, kNumericFormatUBScaled), VK_FORMAT_R4G4_USCALED_PACK8}, +// { makeFormatPair(kDataFormat6_5_5, kNumericFormatUNorm), }, +// { makeFormatPair(kDataFormat6_5_5, kNumericFormatSNorm), }, +// { makeFormatPair(kDataFormat6_5_5, kNumericFormatUScaled), }, +// { makeFormatPair(kDataFormat6_5_5, kNumericFormatSScaled), }, +// { makeFormatPair(kDataFormat6_5_5, kNumericFormatUInt), }, +// { makeFormatPair(kDataFormat6_5_5, kNumericFormatSInt), }, +// { makeFormatPair(kDataFormat6_5_5, kNumericFormatSNormNoZero), }, +// { makeFormatPair(kDataFormat6_5_5, kNumericFormatFloat), }, +// { makeFormatPair(kDataFormat6_5_5, kNumericFormatSrgb), }, +// { makeFormatPair(kDataFormat6_5_5, kNumericFormatUBNorm), }, +// { makeFormatPair(kDataFormat6_5_5, kNumericFormatUBNormNoZero), }, +// { makeFormatPair(kDataFormat6_5_5, kNumericFormatUBInt), }, +// { makeFormatPair(kDataFormat6_5_5, kNumericFormatUBScaled), }, +// { makeFormatPair(kDataFormat1, kNumericFormatUNorm), }, +// { makeFormatPair(kDataFormat1, kNumericFormatSNorm), }, +// { makeFormatPair(kDataFormat1, kNumericFormatUScaled), }, +// { makeFormatPair(kDataFormat1, kNumericFormatSScaled), }, +// { makeFormatPair(kDataFormat1, kNumericFormatUInt), }, +// { makeFormatPair(kDataFormat1, kNumericFormatSInt), }, +// { makeFormatPair(kDataFormat1, kNumericFormatSNormNoZero), }, +// { makeFormatPair(kDataFormat1, kNumericFormatFloat), }, +// { makeFormatPair(kDataFormat1, kNumericFormatSrgb), }, +// { makeFormatPair(kDataFormat1, kNumericFormatUBNorm), }, +// { makeFormatPair(kDataFormat1, kNumericFormatUBNormNoZero), }, +// { makeFormatPair(kDataFormat1, kNumericFormatUBInt), }, +// { makeFormatPair(kDataFormat1, kNumericFormatUBScaled), }, +// { makeFormatPair(kDataFormat1Reversed, kNumericFormatUNorm), }, +// { makeFormatPair(kDataFormat1Reversed, kNumericFormatSNorm), }, +// { makeFormatPair(kDataFormat1Reversed, kNumericFormatUScaled), }, +// { makeFormatPair(kDataFormat1Reversed, kNumericFormatSScaled), }, +// { makeFormatPair(kDataFormat1Reversed, kNumericFormatUInt), }, +// { makeFormatPair(kDataFormat1Reversed, kNumericFormatSInt), }, +// { makeFormatPair(kDataFormat1Reversed, kNumericFormatSNormNoZero), }, +// { makeFormatPair(kDataFormat1Reversed, kNumericFormatFloat), }, +// { makeFormatPair(kDataFormat1Reversed, kNumericFormatSrgb), }, +// { makeFormatPair(kDataFormat1Reversed, kNumericFormatUBNorm), }, +// { makeFormatPair(kDataFormat1Reversed, kNumericFormatUBNormNoZero), }, +// { makeFormatPair(kDataFormat1Reversed, kNumericFormatUBInt), }, +// { makeFormatPair(kDataFormat1Reversed, kNumericFormatUBScaled), }, +}; +// clang-format on VkFormat gnm::toVkFormat(DataFormat dfmt, NumericFormat nfmt) { - switch (dfmt) { - case kDataFormat4_4_4_4: { - switch (nfmt) { - case kNumericFormatUNorm: - return VK_FORMAT_R4G4B4A4_UNORM_PACK16; - default: - break; - } - - break; - } - - case kDataFormat2_10_10_10: - switch (nfmt) { - case kNumericFormatUNorm: - return VK_FORMAT_A2B10G10R10_UNORM_PACK32; - case kNumericFormatSNorm: - return VK_FORMAT_A2B10G10R10_SNORM_PACK32; - case kNumericFormatSInt: - return VK_FORMAT_A2B10G10R10_SINT_PACK32; - case kNumericFormatUInt: - return VK_FORMAT_A2B10G10R10_UINT_PACK32; - case kNumericFormatUScaled: - return VK_FORMAT_A2B10G10R10_USCALED_PACK32; - case kNumericFormatSScaled: - return VK_FORMAT_A2B10G10R10_SSCALED_PACK32; - default: - break; - } - break; - - case kDataFormat10_10_10_2: - switch (nfmt) { - case kNumericFormatUNorm: - return VK_FORMAT_A2R10G10B10_UNORM_PACK32; - case kNumericFormatSNorm: - return VK_FORMAT_A2R10G10B10_SNORM_PACK32; - case kNumericFormatSInt: - return VK_FORMAT_A2R10G10B10_SINT_PACK32; - case kNumericFormatUInt: - return VK_FORMAT_A2R10G10B10_UINT_PACK32; - case kNumericFormatUScaled: - return VK_FORMAT_A2R10G10B10_USCALED_PACK32; - case kNumericFormatSScaled: - return VK_FORMAT_A2R10G10B10_SSCALED_PACK32; - default: - break; - } - break; - - case kDataFormat8: { - switch (nfmt) { - case kNumericFormatUNorm: - return VK_FORMAT_R8_UNORM; - case kNumericFormatSNorm: - return VK_FORMAT_R8_SNORM; - case kNumericFormatUInt: - return VK_FORMAT_R8_UINT; - case kNumericFormatSInt: - return VK_FORMAT_R8_SINT; - case kNumericFormatSrgb: - return VK_FORMAT_R8_SRGB; - default: - break; - } - - break; - } - case kDataFormat32: - switch (nfmt) { - case kNumericFormatUInt: - return VK_FORMAT_R32_UINT; - case kNumericFormatSInt: - return VK_FORMAT_R32_SINT; - case kNumericFormatFloat: - return VK_FORMAT_R32_SFLOAT; - case kNumericFormatSrgb: - return VK_FORMAT_R32_UINT; // FIXME - default: - break; - } - break; - - case kDataFormat8_8: - switch (nfmt) { - case kNumericFormatUNorm: - return VK_FORMAT_R8G8_UNORM; - case kNumericFormatSNorm: - return VK_FORMAT_R8G8_SNORM; - case kNumericFormatUInt: - return VK_FORMAT_R8G8_UINT; - case kNumericFormatSInt: - return VK_FORMAT_R8G8_SINT; - default: - break; - } - break; - - case kDataFormat5_9_9_9: - switch (nfmt) { - case kNumericFormatFloat: - return VK_FORMAT_E5B9G9R9_UFLOAT_PACK32; - default: - break; - } - break; - - case kDataFormat5_6_5: - switch (nfmt) { - case kNumericFormatUNorm: - return VK_FORMAT_B5G6R5_UNORM_PACK16; - - default: - break; - } - break; - - case kDataFormat16_16: - switch (nfmt) { - case kNumericFormatUInt: - return VK_FORMAT_R16G16_UINT; - case kNumericFormatSInt: - return VK_FORMAT_R16G16_SINT; - case kNumericFormatFloat: - return VK_FORMAT_R16G16_SFLOAT; - default: - break; - } - break; - - case kDataFormat32_32: - switch (nfmt) { - case kNumericFormatUInt: - return VK_FORMAT_R32G32_UINT; - case kNumericFormatSInt: - return VK_FORMAT_R32G32_SINT; - case kNumericFormatFloat: - return VK_FORMAT_R32G32_SFLOAT; - default: - break; - } - break; - - case kDataFormat16_16_16_16: - switch (nfmt) { - case kNumericFormatUNorm: - return VK_FORMAT_R16G16B16A16_UNORM; - case kNumericFormatSNorm: - return VK_FORMAT_R16G16B16A16_SNORM; - case kNumericFormatUScaled: - return VK_FORMAT_R16G16B16A16_USCALED; - case kNumericFormatSScaled: - return VK_FORMAT_R16G16B16A16_SSCALED; - case kNumericFormatUInt: - return VK_FORMAT_R16G16B16A16_UINT; - case kNumericFormatSInt: - return VK_FORMAT_R16G16B16A16_SINT; - case kNumericFormatFloat: - return VK_FORMAT_R16G16B16A16_SFLOAT; - case kNumericFormatSrgb: - return VK_FORMAT_R16G16B16A16_UNORM; // FIXME: wrong - - default: - break; - } - break; - - case kDataFormat32_32_32: - switch (nfmt) { - case kNumericFormatUInt: - return VK_FORMAT_R32G32B32_UINT; - case kNumericFormatSInt: - return VK_FORMAT_R32G32B32_SINT; - case kNumericFormatFloat: - return VK_FORMAT_R32G32B32_SFLOAT; - default: - break; - } - break; - case kDataFormat32_32_32_32: - switch (nfmt) { - case kNumericFormatUInt: - return VK_FORMAT_R32G32B32A32_UINT; - case kNumericFormatSInt: - return VK_FORMAT_R32G32B32A32_SINT; - case kNumericFormatFloat: - return VK_FORMAT_R32G32B32A32_SFLOAT; - default: - break; - } - break; - - case kDataFormat24_8: - switch (nfmt) { - case kNumericFormatUNorm: - return VK_FORMAT_D32_SFLOAT_S8_UINT; // HACK for amdgpu - - default: - break; - } - - break; - - case kDataFormat8_8_8_8: - switch (nfmt) { - case kNumericFormatUNorm: - return VK_FORMAT_R8G8B8A8_UNORM; - case kNumericFormatSNorm: - return VK_FORMAT_R8G8B8A8_SNORM; - case kNumericFormatUScaled: - return VK_FORMAT_R8G8B8A8_USCALED; - case kNumericFormatSScaled: - return VK_FORMAT_R8G8B8A8_SSCALED; - case kNumericFormatUInt: - return VK_FORMAT_R8G8B8A8_UINT; - case kNumericFormatSInt: - return VK_FORMAT_R8G8B8A8_SINT; - case kNumericFormatSNormNoZero: - case kNumericFormatSrgb: - return VK_FORMAT_R8G8B8A8_SRGB; - - default: - break; - } - break; - - case kDataFormatBc1: - switch (nfmt) { - case kNumericFormatUNorm: - return VK_FORMAT_BC1_RGBA_UNORM_BLOCK; - case kNumericFormatSrgb: - return VK_FORMAT_BC1_RGBA_SRGB_BLOCK; - default: - break; - } - break; - - case kDataFormatBc2: - switch (nfmt) { - case kNumericFormatUNorm: - return VK_FORMAT_BC2_UNORM_BLOCK; - case kNumericFormatSrgb: - return VK_FORMAT_BC2_SRGB_BLOCK; - default: - break; - } - break; - - case kDataFormatBc3: - switch (nfmt) { - case kNumericFormatUNorm: - return VK_FORMAT_BC3_UNORM_BLOCK; - case kNumericFormatSrgb: - return VK_FORMAT_BC3_SRGB_BLOCK; - default: - break; - } - break; - - case kDataFormatBc4: - switch (nfmt) { - case kNumericFormatUNorm: - return VK_FORMAT_BC4_UNORM_BLOCK; - - case kNumericFormatSNorm: - return VK_FORMAT_BC4_SNORM_BLOCK; - - default: - break; - } - break; - case kDataFormatBc5: - switch (nfmt) { - case kNumericFormatUNorm: - return VK_FORMAT_BC5_UNORM_BLOCK; - - case kNumericFormatSNorm: - return VK_FORMAT_BC5_SNORM_BLOCK; - - default: - break; - } - break; - - case kDataFormatBc6: - switch (nfmt) { - case kNumericFormatUNorm: - return VK_FORMAT_BC6H_UFLOAT_BLOCK; - - case kNumericFormatSNorm: - return VK_FORMAT_BC6H_SFLOAT_BLOCK; - - default: - break; - } - break; - - case kDataFormatBc7: - switch (nfmt) { - case kNumericFormatUNorm: - return VK_FORMAT_BC7_UNORM_BLOCK; - - case kNumericFormatSrgb: - return VK_FORMAT_BC7_SRGB_BLOCK; - - default: - break; - } - break; - - default: - break; + auto it = g_toVkFormats.find(makeFormatPair(dfmt, nfmt)); + if (it != g_toVkFormats.end()) { + return it->second; } rx::die("unimplemented surface format. %x.%x\n", (int)dfmt, (int)nfmt);