From 26f773684a1f761df898c006153645ed5b2edeae Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 16 Sep 2015 11:13:51 +0200 Subject: [PATCH] Track enough while READING to set drawcall topology/index width --- renderdoc/driver/vulkan/vk_common.cpp | 696 +++++++++++++++++++++++ renderdoc/driver/vulkan/vk_common.h | 5 + renderdoc/driver/vulkan/vk_core.cpp | 18 +- renderdoc/driver/vulkan/vk_resources.cpp | 652 --------------------- renderdoc/driver/vulkan/vk_resources.h | 2 - 5 files changed, 717 insertions(+), 656 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_common.cpp b/renderdoc/driver/vulkan/vk_common.cpp index df26131d9..f41339a7f 100644 --- a/renderdoc/driver/vulkan/vk_common.cpp +++ b/renderdoc/driver/vulkan/vk_common.cpp @@ -26,6 +26,702 @@ #include "vk_manager.h" #include "vk_resources.h" +ResourceFormat MakeResourceFormat(VkFormat fmt) +{ + ResourceFormat ret; + + ret.rawType = (uint32_t)fmt; + ret.special = false; + ret.specialFormat = eSpecial_Unknown; + ret.strname = ToStr::Get(fmt).substr(10); // 3 == strlen("VK_FORMAT_") + ret.compByteWidth = 0; + ret.compCount = 0; + ret.compType = eCompType_None; + ret.srgbCorrected = false; + + if(fmt == VK_FORMAT_UNDEFINED) + { + 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; + default: + 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; + default: + 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; + default: + 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; + default: + 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; + default: + break; + } + + return ret; +} + +PrimitiveTopology MakePrimitiveTopology(VkPrimitiveTopology Topo, uint32_t patchControlPoints) +{ + switch(Topo) + { + default: + break; + case VK_PRIMITIVE_TOPOLOGY_POINT_LIST: + return eTopology_PointList; + break; + case VK_PRIMITIVE_TOPOLOGY_LINE_LIST: + return eTopology_LineList; + break; + case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP: + return eTopology_LineStrip; + break; + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST: + return eTopology_TriangleList; + break; + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP: + return eTopology_TriangleStrip; + break; + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN: + return eTopology_TriangleFan; + break; + case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_ADJ: + return eTopology_LineList_Adj; + break; + case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_ADJ: + return eTopology_LineStrip_Adj; + break; + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_ADJ: + return eTopology_TriangleList_Adj; + break; + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_ADJ: + return eTopology_TriangleStrip_Adj; + break; + case VK_PRIMITIVE_TOPOLOGY_PATCH: + return PrimitiveTopology(eTopology_PatchList_1CPs + patchControlPoints); + break; + } + + return eTopology_Unknown; +} + // VKTODOMED need a Deserialise or otherwise deallocate function to release buffers or new'd memory VulkanResourceManager *manager = NULL; diff --git a/renderdoc/driver/vulkan/vk_common.h b/renderdoc/driver/vulkan/vk_common.h index e67f45838..5b2d17f15 100644 --- a/renderdoc/driver/vulkan/vk_common.h +++ b/renderdoc/driver/vulkan/vk_common.h @@ -60,6 +60,11 @@ #include #include +#include "api/replay/renderdoc_replay.h" + +ResourceFormat MakeResourceFormat(VkFormat fmt); +PrimitiveTopology MakePrimitiveTopology(VkPrimitiveTopology Topo, uint32_t patchControlPoints); + // structure for casting to easily iterate and template specialising Serialise struct VkGenericStruct { diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index d83528f78..147a536b9 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -3937,6 +3937,12 @@ bool WrappedVulkan::Serialise_vkCmdBindPipeline( VkCmdBuffer cmd = (VkCmdBuffer)GetResourceManager()->GetLiveResource(cmdid).handle; pipeline = (VkPipeline)GetResourceManager()->GetLiveResource(pipeid).handle; + // track this while reading, as we need to bind current topology & index byte width to draws + if(bind == VK_PIPELINE_BIND_POINT_GRAPHICS) + m_PartialReplayData.state.graphics.pipeline = pipeid; + else + m_PartialReplayData.state.compute.pipeline = pipeid; + device_dispatch_table(cmdBuffer)->CmdBindPipeline(cmd, bind, pipeline); } @@ -4437,6 +4443,9 @@ bool WrappedVulkan::Serialise_vkCmdBindIndexBuffer( { VkCmdBuffer cmd = (VkCmdBuffer)GetResourceManager()->GetLiveResource(cmdid).handle; buffer = (VkBuffer)GetResourceManager()->GetLiveResource(bufid).handle; + + // track this while reading, as we need to bind current topology & index byte width to draws + m_PartialReplayData.state.ibuffer.bytewidth = idxType == VK_INDEX_TYPE_UINT32 ? 4 : 2; device_dispatch_table(cmdBuffer)->CmdBindIndexBuffer(cmd, buffer, offs, idxType); } @@ -7329,8 +7338,13 @@ void WrappedVulkan::AddDrawcall(FetchDrawcall d, bool hasEvents) draw.depthOut = ResourceId(); - // VKTODOHIGH set index byte width here - // VKTODOHIGH set topology here + ResourceId pipe = m_PartialReplayData.state.graphics.pipeline; + if(pipe != ResourceId()) + draw.topology = MakePrimitiveTopology(m_CreationInfo.m_Pipeline[pipe].topology, m_CreationInfo.m_Pipeline[pipe].patchControlPoints); + else + draw.topology = eTopology_Unknown; + + draw.indexByteWidth = m_PartialReplayData.state.ibuffer.bytewidth; m_CurDrawcallID++; if(hasEvents) diff --git a/renderdoc/driver/vulkan/vk_resources.cpp b/renderdoc/driver/vulkan/vk_resources.cpp index 27d054f06..66de7d995 100644 --- a/renderdoc/driver/vulkan/vk_resources.cpp +++ b/renderdoc/driver/vulkan/vk_resources.cpp @@ -108,655 +108,3 @@ bool IsDepthStencilFormat(VkFormat f) return false; } - -ResourceFormat MakeResourceFormat(VkFormat fmt) -{ - ResourceFormat ret; - - ret.rawType = (uint32_t)fmt; - ret.special = false; - ret.specialFormat = eSpecial_Unknown; - ret.strname = ToStr::Get(fmt).substr(10); // 3 == strlen("VK_FORMAT_") - ret.compByteWidth = 0; - ret.compCount = 0; - ret.compType = eCompType_None; - ret.srgbCorrected = false; - - if(fmt == VK_FORMAT_UNDEFINED) - { - 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; - default: - 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; - default: - 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; - default: - 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; - default: - 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; - default: - break; - } - - return ret; -} diff --git a/renderdoc/driver/vulkan/vk_resources.h b/renderdoc/driver/vulkan/vk_resources.h index cd13f362d..1e150d2a3 100644 --- a/renderdoc/driver/vulkan/vk_resources.h +++ b/renderdoc/driver/vulkan/vk_resources.h @@ -251,5 +251,3 @@ enum DescriptorSlotType bool IsBlockFormat(VkFormat f); bool IsDepthStencilFormat(VkFormat f); - -ResourceFormat MakeResourceFormat(VkFormat fmt);