diff --git a/renderdoc/api/replay/replay_enums.h b/renderdoc/api/replay/replay_enums.h index 6d0ac388a..4d537bf9c 100644 --- a/renderdoc/api/replay/replay_enums.h +++ b/renderdoc/api/replay/replay_enums.h @@ -42,6 +42,8 @@ enum FormatComponentType eCompType_SNorm, eCompType_UInt, eCompType_SInt, + eCompType_UScaled, + eCompType_SScaled, eCompType_Depth, eCompType_Double, }; diff --git a/renderdoc/driver/vulkan/vk_resources.cpp b/renderdoc/driver/vulkan/vk_resources.cpp index 56f83502e..134aaeb34 100644 --- a/renderdoc/driver/vulkan/vk_resources.cpp +++ b/renderdoc/driver/vulkan/vk_resources.cpp @@ -118,11 +118,635 @@ ResourceFormat MakeResourceFormat(VkFormat fmt) ret.specialFormat = eSpecial_Unknown; ret.strname = ToStr::Get(fmt).substr(10); // 3 == strlen("VK_FORMAT_") - - // VKTODOHIGH generate resource format - ret.compByteWidth = 1; - ret.compCount = 4; - ret.compType = eCompType_UNorm; - ret.srgbCorrected = false; + if(fmt == VK_FORMAT_UNDEFINED) + { + ret.compCount = 0; + ret.compByteWidth = 0; + ret.compType = eCompType_None; + ret.srgbCorrected = false; + return ret; + } + + // VKTODOMED R4G4, R4G4B4A4, and refactor BGRA formats + + switch(fmt) + { + case VK_FORMAT_B4G4R4A4_UNORM: + ret.special = true; + ret.specialFormat = eSpecial_B4G4R4A4; + break; + case VK_FORMAT_R10G10B10A2_UNORM: + case VK_FORMAT_R10G10B10A2_SNORM: + case VK_FORMAT_R10G10B10A2_USCALED: + case VK_FORMAT_R10G10B10A2_SSCALED: + case VK_FORMAT_R10G10B10A2_UINT: + case VK_FORMAT_R10G10B10A2_SINT: + ret.special = true; + ret.specialFormat = eSpecial_R10G10B10A2; + break; + case VK_FORMAT_R11G11B10_UFLOAT: + ret.special = true; + ret.specialFormat = eSpecial_R11G11B10; + break; + case VK_FORMAT_R9G9B9E5_UFLOAT: + ret.special = true; + ret.specialFormat = eSpecial_R9G9B9E5; + break; + case VK_FORMAT_D16_UNORM_S8_UINT: + ret.special = true; + ret.specialFormat = eSpecial_D16S8; + break; + case VK_FORMAT_D24_UNORM_S8_UINT: + ret.special = true; + ret.specialFormat = eSpecial_D24S8; + break; + case VK_FORMAT_D32_SFLOAT_S8_UINT: + ret.special = true; + ret.specialFormat = eSpecial_D32S8; + break; + case VK_FORMAT_BC1_RGB_UNORM: + case VK_FORMAT_BC1_RGB_SRGB: + case VK_FORMAT_BC1_RGBA_UNORM: + case VK_FORMAT_BC1_RGBA_SRGB: + ret.special = true; + ret.specialFormat = eSpecial_BC1; + break; + case VK_FORMAT_BC2_UNORM: + case VK_FORMAT_BC2_SRGB: + ret.special = true; + ret.specialFormat = eSpecial_BC2; + break; + case VK_FORMAT_BC3_UNORM: + case VK_FORMAT_BC3_SRGB: + ret.special = true; + ret.specialFormat = eSpecial_BC3; + break; + case VK_FORMAT_BC4_UNORM: + case VK_FORMAT_BC4_SNORM: + ret.special = true; + ret.specialFormat = eSpecial_BC4; + break; + case VK_FORMAT_BC5_UNORM: + case VK_FORMAT_BC5_SNORM: + ret.special = true; + ret.specialFormat = eSpecial_BC5; + break; + case VK_FORMAT_BC6H_UFLOAT: + case VK_FORMAT_BC6H_SFLOAT: + ret.special = true; + ret.specialFormat = eSpecial_BC6; + break; + case VK_FORMAT_BC7_UNORM: + case VK_FORMAT_BC7_SRGB: + ret.special = true; + ret.specialFormat = eSpecial_BC7; + break; + case VK_FORMAT_ETC2_R8G8B8_UNORM: + case VK_FORMAT_ETC2_R8G8B8_SRGB: + case VK_FORMAT_ETC2_R8G8B8A1_UNORM: + case VK_FORMAT_ETC2_R8G8B8A1_SRGB: + case VK_FORMAT_ETC2_R8G8B8A8_UNORM: + case VK_FORMAT_ETC2_R8G8B8A8_SRGB: + ret.special = true; + ret.specialFormat = eSpecial_ETC2; + break; + case VK_FORMAT_EAC_R11_UNORM: + case VK_FORMAT_EAC_R11_SNORM: + case VK_FORMAT_EAC_R11G11_UNORM: + case VK_FORMAT_EAC_R11G11_SNORM: + ret.special = true; + ret.specialFormat = eSpecial_EAC; + break; + case VK_FORMAT_ASTC_4x4_UNORM: + case VK_FORMAT_ASTC_4x4_SRGB: + case VK_FORMAT_ASTC_5x4_UNORM: + case VK_FORMAT_ASTC_5x4_SRGB: + case VK_FORMAT_ASTC_5x5_UNORM: + case VK_FORMAT_ASTC_5x5_SRGB: + case VK_FORMAT_ASTC_6x5_UNORM: + case VK_FORMAT_ASTC_6x5_SRGB: + case VK_FORMAT_ASTC_6x6_UNORM: + case VK_FORMAT_ASTC_6x6_SRGB: + case VK_FORMAT_ASTC_8x5_UNORM: + case VK_FORMAT_ASTC_8x5_SRGB: + case VK_FORMAT_ASTC_8x6_UNORM: + case VK_FORMAT_ASTC_8x6_SRGB: + case VK_FORMAT_ASTC_8x8_UNORM: + case VK_FORMAT_ASTC_8x8_SRGB: + case VK_FORMAT_ASTC_10x5_UNORM: + case VK_FORMAT_ASTC_10x5_SRGB: + case VK_FORMAT_ASTC_10x6_UNORM: + case VK_FORMAT_ASTC_10x6_SRGB: + case VK_FORMAT_ASTC_10x8_UNORM: + case VK_FORMAT_ASTC_10x8_SRGB: + case VK_FORMAT_ASTC_10x10_UNORM: + case VK_FORMAT_ASTC_10x10_SRGB: + case VK_FORMAT_ASTC_12x10_UNORM: + case VK_FORMAT_ASTC_12x10_SRGB: + case VK_FORMAT_ASTC_12x12_UNORM: + case VK_FORMAT_ASTC_12x12_SRGB: + ret.special = true; + ret.specialFormat = eSpecial_ASTC; + break; + case VK_FORMAT_B8G8R8A8_UNORM: + case VK_FORMAT_B8G8R8A8_SNORM: + case VK_FORMAT_B8G8R8A8_USCALED: + case VK_FORMAT_B8G8R8A8_SSCALED: + case VK_FORMAT_B8G8R8A8_UINT: + case VK_FORMAT_B8G8R8A8_SINT: + case VK_FORMAT_B8G8R8A8_SRGB: + ret.special = true; + ret.specialFormat = eSpecial_B8G8R8A8; + break; + } + + switch(fmt) + { + case VK_FORMAT_R8_UNORM: + case VK_FORMAT_R8_SNORM: + case VK_FORMAT_R8_USCALED: + case VK_FORMAT_R8_SSCALED: + case VK_FORMAT_R8_UINT: + case VK_FORMAT_R8_SINT: + case VK_FORMAT_R8_SRGB: + case VK_FORMAT_R16_UNORM: + case VK_FORMAT_R16_SNORM: + case VK_FORMAT_R16_USCALED: + case VK_FORMAT_R16_SSCALED: + case VK_FORMAT_R16_UINT: + case VK_FORMAT_R16_SINT: + case VK_FORMAT_R16_SFLOAT: + case VK_FORMAT_R32_UINT: + case VK_FORMAT_R32_SINT: + case VK_FORMAT_R32_SFLOAT: + case VK_FORMAT_R64_SFLOAT: + case VK_FORMAT_D16_UNORM: + case VK_FORMAT_D24_UNORM: + case VK_FORMAT_D32_SFLOAT: + case VK_FORMAT_S8_UINT: + case VK_FORMAT_BC4_UNORM: + case VK_FORMAT_BC4_SNORM: + case VK_FORMAT_EAC_R11_UNORM: + case VK_FORMAT_EAC_R11_SNORM: + ret.compCount = 1; + break; + case VK_FORMAT_R4G4_UNORM: + case VK_FORMAT_R4G4_USCALED: + case VK_FORMAT_R8G8_UNORM: + case VK_FORMAT_R8G8_SNORM: + case VK_FORMAT_R8G8_USCALED: + case VK_FORMAT_R8G8_SSCALED: + case VK_FORMAT_R8G8_UINT: + case VK_FORMAT_R8G8_SINT: + case VK_FORMAT_R8G8_SRGB: + case VK_FORMAT_R16G16_UNORM: + case VK_FORMAT_R16G16_SNORM: + case VK_FORMAT_R16G16_USCALED: + case VK_FORMAT_R16G16_SSCALED: + case VK_FORMAT_R16G16_UINT: + case VK_FORMAT_R16G16_SINT: + case VK_FORMAT_R16G16_SFLOAT: + case VK_FORMAT_R32G32_UINT: + case VK_FORMAT_R32G32_SINT: + case VK_FORMAT_R32G32_SFLOAT: + case VK_FORMAT_R64G64_SFLOAT: + case VK_FORMAT_D16_UNORM_S8_UINT: + case VK_FORMAT_D24_UNORM_S8_UINT: + case VK_FORMAT_D32_SFLOAT_S8_UINT: + case VK_FORMAT_BC5_UNORM: + case VK_FORMAT_BC5_SNORM: + case VK_FORMAT_EAC_R11G11_UNORM: + case VK_FORMAT_EAC_R11G11_SNORM: + ret.compCount = 2; + break; + case VK_FORMAT_R5G6B5_UNORM: + case VK_FORMAT_R5G6B5_USCALED: + case VK_FORMAT_R8G8B8_UNORM: + case VK_FORMAT_R8G8B8_SNORM: + case VK_FORMAT_R8G8B8_USCALED: + case VK_FORMAT_R8G8B8_SSCALED: + case VK_FORMAT_R8G8B8_UINT: + case VK_FORMAT_R8G8B8_SINT: + case VK_FORMAT_R8G8B8_SRGB: + case VK_FORMAT_R16G16B16_UNORM: + case VK_FORMAT_R16G16B16_SNORM: + case VK_FORMAT_R16G16B16_USCALED: + case VK_FORMAT_R16G16B16_SSCALED: + case VK_FORMAT_R16G16B16_UINT: + case VK_FORMAT_R16G16B16_SINT: + case VK_FORMAT_R16G16B16_SFLOAT: + case VK_FORMAT_R64G64B64_SFLOAT: + case VK_FORMAT_R11G11B10_UFLOAT: + case VK_FORMAT_R9G9B9E5_UFLOAT: + case VK_FORMAT_BC1_RGB_UNORM: + case VK_FORMAT_BC1_RGB_SRGB: + case VK_FORMAT_BC6H_UFLOAT: + case VK_FORMAT_BC6H_SFLOAT: + case VK_FORMAT_ETC2_R8G8B8_UNORM: + case VK_FORMAT_ETC2_R8G8B8_SRGB: + case VK_FORMAT_B5G6R5_UNORM: + case VK_FORMAT_B5G6R5_USCALED: + case VK_FORMAT_B8G8R8_UNORM: + case VK_FORMAT_B8G8R8_SNORM: + case VK_FORMAT_B8G8R8_USCALED: + case VK_FORMAT_B8G8R8_SSCALED: + case VK_FORMAT_B8G8R8_UINT: + case VK_FORMAT_B8G8R8_SINT: + case VK_FORMAT_B8G8R8_SRGB: + ret.compCount = 3; + break; + case VK_FORMAT_R4G4B4A4_UNORM: + case VK_FORMAT_R4G4B4A4_USCALED: + case VK_FORMAT_R5G5B5A1_UNORM: + case VK_FORMAT_R5G5B5A1_USCALED: + case VK_FORMAT_R8G8B8A8_UNORM: + case VK_FORMAT_R8G8B8A8_SNORM: + case VK_FORMAT_R8G8B8A8_USCALED: + case VK_FORMAT_R8G8B8A8_SSCALED: + case VK_FORMAT_R8G8B8A8_UINT: + case VK_FORMAT_R8G8B8A8_SINT: + case VK_FORMAT_R8G8B8A8_SRGB: + case VK_FORMAT_R32G32B32_UINT: + case VK_FORMAT_R32G32B32_SINT: + case VK_FORMAT_R32G32B32_SFLOAT: + case VK_FORMAT_R10G10B10A2_UNORM: + case VK_FORMAT_R10G10B10A2_SNORM: + case VK_FORMAT_R10G10B10A2_USCALED: + case VK_FORMAT_R10G10B10A2_SSCALED: + case VK_FORMAT_R10G10B10A2_UINT: + case VK_FORMAT_R10G10B10A2_SINT: + case VK_FORMAT_R16G16B16A16_UNORM: + case VK_FORMAT_R16G16B16A16_SNORM: + case VK_FORMAT_R16G16B16A16_USCALED: + case VK_FORMAT_R16G16B16A16_SSCALED: + case VK_FORMAT_R16G16B16A16_UINT: + case VK_FORMAT_R16G16B16A16_SINT: + case VK_FORMAT_R16G16B16A16_SFLOAT: + case VK_FORMAT_R32G32B32A32_UINT: + case VK_FORMAT_R32G32B32A32_SINT: + case VK_FORMAT_R32G32B32A32_SFLOAT: + case VK_FORMAT_R64G64B64A64_SFLOAT: + case VK_FORMAT_BC1_RGBA_UNORM: + case VK_FORMAT_BC1_RGBA_SRGB: + case VK_FORMAT_BC2_UNORM: + case VK_FORMAT_BC2_SRGB: + case VK_FORMAT_BC3_UNORM: + case VK_FORMAT_BC3_SRGB: + case VK_FORMAT_BC7_UNORM: + case VK_FORMAT_BC7_SRGB: + case VK_FORMAT_ETC2_R8G8B8A1_UNORM: + case VK_FORMAT_ETC2_R8G8B8A1_SRGB: + case VK_FORMAT_ETC2_R8G8B8A8_UNORM: + case VK_FORMAT_ETC2_R8G8B8A8_SRGB: + case VK_FORMAT_B4G4R4A4_UNORM: + case VK_FORMAT_B5G5R5A1_UNORM: + case VK_FORMAT_B8G8R8A8_UNORM: + case VK_FORMAT_B8G8R8A8_SNORM: + case VK_FORMAT_B8G8R8A8_USCALED: + case VK_FORMAT_B8G8R8A8_SSCALED: + case VK_FORMAT_B8G8R8A8_UINT: + case VK_FORMAT_B8G8R8A8_SINT: + case VK_FORMAT_B8G8R8A8_SRGB: + case VK_FORMAT_B10G10R10A2_UNORM: + case VK_FORMAT_B10G10R10A2_SNORM: + case VK_FORMAT_B10G10R10A2_USCALED: + case VK_FORMAT_B10G10R10A2_SSCALED: + case VK_FORMAT_B10G10R10A2_UINT: + case VK_FORMAT_B10G10R10A2_SINT: + ret.compCount = 4; + break; + } + + switch(fmt) + { + case VK_FORMAT_R8_SRGB: + case VK_FORMAT_R8G8_SRGB: + case VK_FORMAT_R8G8B8_SRGB: + case VK_FORMAT_R8G8B8A8_SRGB: + case VK_FORMAT_BC1_RGB_SRGB: + case VK_FORMAT_BC1_RGBA_SRGB: + case VK_FORMAT_BC2_SRGB: + case VK_FORMAT_BC3_SRGB: + case VK_FORMAT_BC7_SRGB: + case VK_FORMAT_ETC2_R8G8B8_SRGB: + case VK_FORMAT_ETC2_R8G8B8A1_SRGB: + case VK_FORMAT_ETC2_R8G8B8A8_SRGB: + case VK_FORMAT_ASTC_4x4_SRGB: + case VK_FORMAT_ASTC_5x4_SRGB: + case VK_FORMAT_ASTC_5x5_SRGB: + case VK_FORMAT_ASTC_6x5_SRGB: + case VK_FORMAT_ASTC_6x6_SRGB: + case VK_FORMAT_ASTC_8x5_SRGB: + case VK_FORMAT_ASTC_8x6_SRGB: + case VK_FORMAT_ASTC_8x8_SRGB: + case VK_FORMAT_ASTC_10x5_SRGB: + case VK_FORMAT_ASTC_10x6_SRGB: + case VK_FORMAT_ASTC_10x8_SRGB: + case VK_FORMAT_ASTC_10x10_SRGB: + case VK_FORMAT_ASTC_12x10_SRGB: + case VK_FORMAT_ASTC_12x12_SRGB: + case VK_FORMAT_B8G8R8_SRGB: + case VK_FORMAT_B8G8R8A8_SRGB: + ret.srgbCorrected = true; + break; + } + + switch(fmt) + { + case VK_FORMAT_R4G4_UNORM: + case VK_FORMAT_R4G4B4A4_UNORM: + case VK_FORMAT_R5G6B5_UNORM: + case VK_FORMAT_R5G5B5A1_UNORM: + case VK_FORMAT_R8_UNORM: + case VK_FORMAT_R8_SRGB: + case VK_FORMAT_R8G8_UNORM: + case VK_FORMAT_R8G8_SRGB: + case VK_FORMAT_R8G8B8_UNORM: + case VK_FORMAT_R8G8B8_SRGB: + case VK_FORMAT_R8G8B8A8_UNORM: + case VK_FORMAT_R8G8B8A8_SRGB: + case VK_FORMAT_R10G10B10A2_UNORM: + case VK_FORMAT_R16_UNORM: + case VK_FORMAT_R16G16_UNORM: + case VK_FORMAT_R16G16B16_UNORM: + case VK_FORMAT_R16G16B16A16_UNORM: + case VK_FORMAT_BC1_RGB_UNORM: + case VK_FORMAT_BC1_RGB_SRGB: + case VK_FORMAT_BC1_RGBA_UNORM: + case VK_FORMAT_BC1_RGBA_SRGB: + case VK_FORMAT_BC2_UNORM: + case VK_FORMAT_BC2_SRGB: + case VK_FORMAT_BC3_UNORM: + case VK_FORMAT_BC3_SRGB: + case VK_FORMAT_BC4_UNORM: + case VK_FORMAT_BC5_UNORM: + case VK_FORMAT_BC7_UNORM: + case VK_FORMAT_BC7_SRGB: + case VK_FORMAT_BC6H_UFLOAT: + case VK_FORMAT_ETC2_R8G8B8_UNORM: + case VK_FORMAT_ETC2_R8G8B8_SRGB: + case VK_FORMAT_ETC2_R8G8B8A1_UNORM: + case VK_FORMAT_ETC2_R8G8B8A1_SRGB: + case VK_FORMAT_ETC2_R8G8B8A8_UNORM: + case VK_FORMAT_ETC2_R8G8B8A8_SRGB: + case VK_FORMAT_EAC_R11_UNORM: + case VK_FORMAT_EAC_R11G11_UNORM: + case VK_FORMAT_ASTC_4x4_UNORM: + case VK_FORMAT_ASTC_4x4_SRGB: + case VK_FORMAT_ASTC_5x4_UNORM: + case VK_FORMAT_ASTC_5x4_SRGB: + case VK_FORMAT_ASTC_5x5_UNORM: + case VK_FORMAT_ASTC_5x5_SRGB: + case VK_FORMAT_ASTC_6x5_UNORM: + case VK_FORMAT_ASTC_6x5_SRGB: + case VK_FORMAT_ASTC_6x6_UNORM: + case VK_FORMAT_ASTC_6x6_SRGB: + case VK_FORMAT_ASTC_8x5_UNORM: + case VK_FORMAT_ASTC_8x5_SRGB: + case VK_FORMAT_ASTC_8x6_UNORM: + case VK_FORMAT_ASTC_8x6_SRGB: + case VK_FORMAT_ASTC_8x8_UNORM: + case VK_FORMAT_ASTC_8x8_SRGB: + case VK_FORMAT_ASTC_10x5_UNORM: + case VK_FORMAT_ASTC_10x5_SRGB: + case VK_FORMAT_ASTC_10x6_UNORM: + case VK_FORMAT_ASTC_10x6_SRGB: + case VK_FORMAT_ASTC_10x8_UNORM: + case VK_FORMAT_ASTC_10x8_SRGB: + case VK_FORMAT_ASTC_10x10_UNORM: + case VK_FORMAT_ASTC_10x10_SRGB: + case VK_FORMAT_ASTC_12x10_UNORM: + case VK_FORMAT_ASTC_12x10_SRGB: + case VK_FORMAT_ASTC_12x12_UNORM: + case VK_FORMAT_ASTC_12x12_SRGB: + case VK_FORMAT_B4G4R4A4_UNORM: + case VK_FORMAT_B5G5R5A1_UNORM: + case VK_FORMAT_B5G6R5_UNORM: + case VK_FORMAT_B8G8R8_UNORM: + case VK_FORMAT_B8G8R8_SRGB: + case VK_FORMAT_B8G8R8A8_UNORM: + case VK_FORMAT_B8G8R8A8_SRGB: + case VK_FORMAT_B10G10R10A2_UNORM: + ret.compType = eCompType_UNorm; + break; + case VK_FORMAT_R8_SNORM: + case VK_FORMAT_R8G8_SNORM: + case VK_FORMAT_R8G8B8_SNORM: + case VK_FORMAT_R8G8B8A8_SNORM: + case VK_FORMAT_R10G10B10A2_SNORM: + case VK_FORMAT_R16_SNORM: + case VK_FORMAT_R16G16_SNORM: + case VK_FORMAT_R16G16B16_SNORM: + case VK_FORMAT_R16G16B16A16_SNORM: + case VK_FORMAT_BC4_SNORM: + case VK_FORMAT_BC5_SNORM: + case VK_FORMAT_BC6H_SFLOAT: + case VK_FORMAT_EAC_R11_SNORM: + case VK_FORMAT_EAC_R11G11_SNORM: + case VK_FORMAT_B8G8R8_SNORM: + case VK_FORMAT_B8G8R8A8_SNORM: + case VK_FORMAT_B10G10R10A2_SNORM: + ret.compType = eCompType_SNorm; + break; + case VK_FORMAT_R4G4_USCALED: + case VK_FORMAT_R4G4B4A4_USCALED: + case VK_FORMAT_R5G6B5_USCALED: + case VK_FORMAT_R5G5B5A1_USCALED: + case VK_FORMAT_R8_USCALED: + case VK_FORMAT_R8G8_USCALED: + case VK_FORMAT_R8G8B8_USCALED: + case VK_FORMAT_R8G8B8A8_USCALED: + case VK_FORMAT_R16_USCALED: + case VK_FORMAT_R16G16_USCALED: + case VK_FORMAT_R16G16B16_USCALED: + case VK_FORMAT_R16G16B16A16_USCALED: + case VK_FORMAT_R10G10B10A2_USCALED: + case VK_FORMAT_B5G6R5_USCALED: + case VK_FORMAT_B8G8R8_USCALED: + case VK_FORMAT_B8G8R8A8_USCALED: + case VK_FORMAT_B10G10R10A2_USCALED: + ret.compType = eCompType_UScaled; + break; + case VK_FORMAT_R8_SSCALED: + case VK_FORMAT_R8G8_SSCALED: + case VK_FORMAT_R8G8B8_SSCALED: + case VK_FORMAT_R8G8B8A8_SSCALED: + case VK_FORMAT_R10G10B10A2_SSCALED: + case VK_FORMAT_R16_SSCALED: + case VK_FORMAT_R16G16_SSCALED: + case VK_FORMAT_R16G16B16_SSCALED: + case VK_FORMAT_R16G16B16A16_SSCALED: + case VK_FORMAT_B8G8R8_SSCALED: + case VK_FORMAT_B8G8R8A8_SSCALED: + case VK_FORMAT_B10G10R10A2_SSCALED: + ret.compType = eCompType_SScaled; + break; + case VK_FORMAT_R8_UINT: + case VK_FORMAT_R8G8_UINT: + case VK_FORMAT_R8G8B8_UINT: + case VK_FORMAT_R8G8B8A8_UINT: + case VK_FORMAT_R8G8B8A8_SINT: + case VK_FORMAT_R10G10B10A2_UINT: + case VK_FORMAT_R16_UINT: + case VK_FORMAT_R16G16_UINT: + case VK_FORMAT_R16G16B16_UINT: + case VK_FORMAT_R16G16B16A16_UINT: + case VK_FORMAT_R32_UINT: + case VK_FORMAT_R32G32_UINT: + case VK_FORMAT_R32G32B32_UINT: + case VK_FORMAT_R32G32B32A32_UINT: + // Maybe S8 should be identified by something else? + case VK_FORMAT_S8_UINT: + case VK_FORMAT_B8G8R8_UINT: + case VK_FORMAT_B8G8R8A8_UINT: + case VK_FORMAT_B10G10R10A2_UINT: + ret.compType = eCompType_UInt; + break; + case VK_FORMAT_R8_SINT: + case VK_FORMAT_R8G8_SINT: + case VK_FORMAT_R8G8B8_SINT: + case VK_FORMAT_R10G10B10A2_SINT: + case VK_FORMAT_R16_SINT: + case VK_FORMAT_R16G16_SINT: + case VK_FORMAT_R16G16B16_SINT: + case VK_FORMAT_R16G16B16A16_SINT: + case VK_FORMAT_R32_SINT: + case VK_FORMAT_R32G32_SINT: + case VK_FORMAT_R32G32B32_SINT: + case VK_FORMAT_R32G32B32A32_SINT: + case VK_FORMAT_B8G8R8_SINT: + case VK_FORMAT_B8G8R8A8_SINT: + case VK_FORMAT_B10G10R10A2_SINT: + ret.compType = eCompType_SInt; + break; + case VK_FORMAT_R16_SFLOAT: + case VK_FORMAT_R16G16_SFLOAT: + case VK_FORMAT_R16G16B16_SFLOAT: + case VK_FORMAT_R16G16B16A16_SFLOAT: + case VK_FORMAT_R32_SFLOAT: + case VK_FORMAT_R32G32_SFLOAT: + case VK_FORMAT_R32G32B32_SFLOAT: + case VK_FORMAT_R32G32B32A32_SFLOAT: + case VK_FORMAT_R11G11B10_UFLOAT: + case VK_FORMAT_R9G9B9E5_UFLOAT: + ret.compType = eCompType_Float; + break; + case VK_FORMAT_R64_SFLOAT: + case VK_FORMAT_R64G64_SFLOAT: + case VK_FORMAT_R64G64B64_SFLOAT: + case VK_FORMAT_R64G64B64A64_SFLOAT: + ret.compType = eCompType_Double; + break; + case VK_FORMAT_D16_UNORM: + case VK_FORMAT_D24_UNORM: + case VK_FORMAT_D32_SFLOAT: + ret.compType = eCompType_Depth; + break; + } + + switch(fmt) + { + case VK_FORMAT_R8_UNORM: + case VK_FORMAT_R8_SNORM: + case VK_FORMAT_R8_USCALED: + case VK_FORMAT_R8_SSCALED: + case VK_FORMAT_R8_UINT: + case VK_FORMAT_R8_SINT: + case VK_FORMAT_R8_SRGB: + case VK_FORMAT_R8G8_UNORM: + case VK_FORMAT_R8G8_SNORM: + case VK_FORMAT_R8G8_USCALED: + case VK_FORMAT_R8G8_SSCALED: + case VK_FORMAT_R8G8_UINT: + case VK_FORMAT_R8G8_SINT: + case VK_FORMAT_R8G8_SRGB: + case VK_FORMAT_R8G8B8_UNORM: + case VK_FORMAT_R8G8B8_SNORM: + case VK_FORMAT_R8G8B8_USCALED: + case VK_FORMAT_R8G8B8_SSCALED: + case VK_FORMAT_R8G8B8_UINT: + case VK_FORMAT_R8G8B8_SINT: + case VK_FORMAT_R8G8B8_SRGB: + case VK_FORMAT_R8G8B8A8_UNORM: + case VK_FORMAT_R8G8B8A8_SNORM: + case VK_FORMAT_R8G8B8A8_USCALED: + case VK_FORMAT_R8G8B8A8_SSCALED: + case VK_FORMAT_R8G8B8A8_UINT: + case VK_FORMAT_R8G8B8A8_SINT: + case VK_FORMAT_R8G8B8A8_SRGB: + case VK_FORMAT_S8_UINT: + case VK_FORMAT_B8G8R8_UNORM: + case VK_FORMAT_B8G8R8_SNORM: + case VK_FORMAT_B8G8R8_USCALED: + case VK_FORMAT_B8G8R8_SSCALED: + case VK_FORMAT_B8G8R8_UINT: + case VK_FORMAT_B8G8R8_SINT: + case VK_FORMAT_B8G8R8_SRGB: + case VK_FORMAT_B8G8R8A8_UNORM: + case VK_FORMAT_B8G8R8A8_SNORM: + case VK_FORMAT_B8G8R8A8_USCALED: + case VK_FORMAT_B8G8R8A8_SSCALED: + case VK_FORMAT_B8G8R8A8_UINT: + case VK_FORMAT_B8G8R8A8_SINT: + case VK_FORMAT_B8G8R8A8_SRGB: + ret.compByteWidth = 1; + break; + case VK_FORMAT_R16_UNORM: + case VK_FORMAT_R16_SNORM: + case VK_FORMAT_R16_USCALED: + case VK_FORMAT_R16_SSCALED: + case VK_FORMAT_R16_UINT: + case VK_FORMAT_R16_SINT: + case VK_FORMAT_R16_SFLOAT: + case VK_FORMAT_R16G16_UNORM: + case VK_FORMAT_R16G16_SNORM: + case VK_FORMAT_R16G16_USCALED: + case VK_FORMAT_R16G16_SSCALED: + case VK_FORMAT_R16G16_UINT: + case VK_FORMAT_R16G16_SINT: + case VK_FORMAT_R16G16_SFLOAT: + case VK_FORMAT_R16G16B16_UNORM: + case VK_FORMAT_R16G16B16_SNORM: + case VK_FORMAT_R16G16B16_USCALED: + case VK_FORMAT_R16G16B16_SSCALED: + case VK_FORMAT_R16G16B16_UINT: + case VK_FORMAT_R16G16B16_SINT: + case VK_FORMAT_R16G16B16_SFLOAT: + case VK_FORMAT_R16G16B16A16_UNORM: + case VK_FORMAT_R16G16B16A16_SNORM: + case VK_FORMAT_R16G16B16A16_USCALED: + case VK_FORMAT_R16G16B16A16_SSCALED: + case VK_FORMAT_R16G16B16A16_UINT: + case VK_FORMAT_R16G16B16A16_SINT: + case VK_FORMAT_R16G16B16A16_SFLOAT: + case VK_FORMAT_D16_UNORM: + ret.compByteWidth = 2; + break; + case VK_FORMAT_D24_UNORM: + ret.compByteWidth = 3; + break; + case VK_FORMAT_R32_UINT: + case VK_FORMAT_R32_SINT: + case VK_FORMAT_R32_SFLOAT: + case VK_FORMAT_R32G32_UINT: + case VK_FORMAT_R32G32_SINT: + case VK_FORMAT_R32G32_SFLOAT: + case VK_FORMAT_R32G32B32_UINT: + case VK_FORMAT_R32G32B32_SINT: + case VK_FORMAT_R32G32B32_SFLOAT: + case VK_FORMAT_R32G32B32A32_UINT: + case VK_FORMAT_R32G32B32A32_SINT: + case VK_FORMAT_R32G32B32A32_SFLOAT: + case VK_FORMAT_D32_SFLOAT: + ret.compByteWidth = 4; + break; + case VK_FORMAT_R64_SFLOAT: + case VK_FORMAT_R64G64_SFLOAT: + case VK_FORMAT_R64G64B64_SFLOAT: + case VK_FORMAT_R64G64B64A64_SFLOAT: + ret.compByteWidth = 8; + break; + } + return ret; }