From 7545d1902fb7ba28f7fdc98566767d15d55510d4 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 10 Dec 2015 01:04:59 +0100 Subject: [PATCH] Fix resource utility functions --- renderdoc/driver/vulkan/vk_resources.cpp | 313 +++++++++++------------ 1 file changed, 154 insertions(+), 159 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_resources.cpp b/renderdoc/driver/vulkan/vk_resources.cpp index 074f0c9bb..105efdc75 100644 --- a/renderdoc/driver/vulkan/vk_resources.cpp +++ b/renderdoc/driver/vulkan/vk_resources.cpp @@ -104,60 +104,60 @@ bool IsBlockFormat(VkFormat f) { switch(f) { - 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_BC4_SNORM: - case VK_FORMAT_BC5_UNORM: - case VK_FORMAT_BC5_SNORM: - case VK_FORMAT_BC6H_UFLOAT: - case VK_FORMAT_BC6H_SFLOAT: - case VK_FORMAT_BC7_UNORM: - case VK_FORMAT_BC7_SRGB: - 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_R11_SNORM: - case VK_FORMAT_EAC_R11G11_UNORM: - case VK_FORMAT_EAC_R11G11_SNORM: - 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_BC1_RGB_UNORM_BLOCK: + case VK_FORMAT_BC1_RGB_SRGB_BLOCK: + case VK_FORMAT_BC1_RGBA_UNORM_BLOCK: + case VK_FORMAT_BC1_RGBA_SRGB_BLOCK: + case VK_FORMAT_BC2_UNORM_BLOCK: + case VK_FORMAT_BC2_SRGB_BLOCK: + case VK_FORMAT_BC3_UNORM_BLOCK: + case VK_FORMAT_BC3_SRGB_BLOCK: + case VK_FORMAT_BC4_UNORM_BLOCK: + case VK_FORMAT_BC4_SNORM_BLOCK: + case VK_FORMAT_BC5_UNORM_BLOCK: + case VK_FORMAT_BC5_SNORM_BLOCK: + case VK_FORMAT_BC6H_UFLOAT_BLOCK: + case VK_FORMAT_BC6H_SFLOAT_BLOCK: + case VK_FORMAT_BC7_UNORM_BLOCK: + case VK_FORMAT_BC7_SRGB_BLOCK: + case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK: + case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK: + case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK: + case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK: + case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK: + case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK: + case VK_FORMAT_EAC_R11_UNORM_BLOCK: + case VK_FORMAT_EAC_R11_SNORM_BLOCK: + case VK_FORMAT_EAC_R11G11_UNORM_BLOCK: + case VK_FORMAT_EAC_R11G11_SNORM_BLOCK: + case VK_FORMAT_ASTC_4x4_UNORM_BLOCK: + case VK_FORMAT_ASTC_4x4_SRGB_BLOCK: + case VK_FORMAT_ASTC_5x4_UNORM_BLOCK: + case VK_FORMAT_ASTC_5x4_SRGB_BLOCK: + case VK_FORMAT_ASTC_5x5_UNORM_BLOCK: + case VK_FORMAT_ASTC_5x5_SRGB_BLOCK: + case VK_FORMAT_ASTC_6x5_UNORM_BLOCK: + case VK_FORMAT_ASTC_6x5_SRGB_BLOCK: + case VK_FORMAT_ASTC_6x6_UNORM_BLOCK: + case VK_FORMAT_ASTC_6x6_SRGB_BLOCK: + case VK_FORMAT_ASTC_8x5_UNORM_BLOCK: + case VK_FORMAT_ASTC_8x5_SRGB_BLOCK: + case VK_FORMAT_ASTC_8x6_UNORM_BLOCK: + case VK_FORMAT_ASTC_8x6_SRGB_BLOCK: + case VK_FORMAT_ASTC_8x8_UNORM_BLOCK: + case VK_FORMAT_ASTC_8x8_SRGB_BLOCK: + case VK_FORMAT_ASTC_10x5_UNORM_BLOCK: + case VK_FORMAT_ASTC_10x5_SRGB_BLOCK: + case VK_FORMAT_ASTC_10x6_UNORM_BLOCK: + case VK_FORMAT_ASTC_10x6_SRGB_BLOCK: + case VK_FORMAT_ASTC_10x8_UNORM_BLOCK: + case VK_FORMAT_ASTC_10x8_SRGB_BLOCK: + case VK_FORMAT_ASTC_10x10_UNORM_BLOCK: + case VK_FORMAT_ASTC_10x10_SRGB_BLOCK: + case VK_FORMAT_ASTC_12x10_UNORM_BLOCK: + case VK_FORMAT_ASTC_12x10_SRGB_BLOCK: + case VK_FORMAT_ASTC_12x12_UNORM_BLOCK: + case VK_FORMAT_ASTC_12x12_SRGB_BLOCK: return true; default: break; @@ -171,7 +171,7 @@ bool IsDepthStencilFormat(VkFormat f) switch(f) { case VK_FORMAT_D16_UNORM: - case VK_FORMAT_D24_UNORM_X8: + case VK_FORMAT_X8_D24_UNORM_PACK32: case VK_FORMAT_D32_SFLOAT: case VK_FORMAT_S8_UINT: case VK_FORMAT_D16_UNORM_S8_UINT: @@ -190,7 +190,7 @@ bool IsDepthOnlyFormat(VkFormat f) switch(f) { case VK_FORMAT_D16_UNORM: - case VK_FORMAT_D24_UNORM_X8: + case VK_FORMAT_X8_D24_UNORM_PACK32: case VK_FORMAT_D32_SFLOAT: return true; default: @@ -208,28 +208,28 @@ bool IsSRGBFormat(VkFormat f) 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_BC1_RGB_SRGB_BLOCK: + case VK_FORMAT_BC1_RGBA_SRGB_BLOCK: + case VK_FORMAT_BC2_SRGB_BLOCK: + case VK_FORMAT_BC3_SRGB_BLOCK: + case VK_FORMAT_BC7_SRGB_BLOCK: + case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK: + case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK: + case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK: + case VK_FORMAT_ASTC_4x4_SRGB_BLOCK: + case VK_FORMAT_ASTC_5x4_SRGB_BLOCK: + case VK_FORMAT_ASTC_5x5_SRGB_BLOCK: + case VK_FORMAT_ASTC_6x5_SRGB_BLOCK: + case VK_FORMAT_ASTC_6x6_SRGB_BLOCK: + case VK_FORMAT_ASTC_8x5_SRGB_BLOCK: + case VK_FORMAT_ASTC_8x6_SRGB_BLOCK: + case VK_FORMAT_ASTC_8x8_SRGB_BLOCK: + case VK_FORMAT_ASTC_10x5_SRGB_BLOCK: + case VK_FORMAT_ASTC_10x6_SRGB_BLOCK: + case VK_FORMAT_ASTC_10x8_SRGB_BLOCK: + case VK_FORMAT_ASTC_10x10_SRGB_BLOCK: + case VK_FORMAT_ASTC_12x10_SRGB_BLOCK: + case VK_FORMAT_ASTC_12x12_SRGB_BLOCK: case VK_FORMAT_B8G8R8_SRGB: case VK_FORMAT_B8G8R8A8_SRGB: return true; @@ -308,19 +308,19 @@ uint32_t GetByteSize(uint32_t Width, uint32_t Height, uint32_t Depth, VkFormat F case VK_FORMAT_B8G8R8_SRGB: ret *= 3; break; - 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: - 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_R11G11B10_UFLOAT: + case VK_FORMAT_A2B10G10R10_UNORM_PACK32: + case VK_FORMAT_A2B10G10R10_SNORM_PACK32: + case VK_FORMAT_A2B10G10R10_USCALED_PACK32: + case VK_FORMAT_A2B10G10R10_SSCALED_PACK32: + case VK_FORMAT_A2B10G10R10_UINT_PACK32: + case VK_FORMAT_A2B10G10R10_SINT_PACK32: + case VK_FORMAT_A2R10G10B10_UNORM_PACK32: + case VK_FORMAT_A2R10G10B10_SNORM_PACK32: + case VK_FORMAT_A2R10G10B10_USCALED_PACK32: + case VK_FORMAT_A2R10G10B10_SSCALED_PACK32: + case VK_FORMAT_A2R10G10B10_UINT_PACK32: + case VK_FORMAT_A2R10G10B10_SINT_PACK32: + case VK_FORMAT_B10G11R11_UFLOAT_PACK32: case VK_FORMAT_R8G8B8A8_UNORM: case VK_FORMAT_R8G8B8A8_SNORM: case VK_FORMAT_R8G8B8A8_USCALED: @@ -345,10 +345,10 @@ uint32_t GetByteSize(uint32_t Width, uint32_t Height, uint32_t Depth, VkFormat F case VK_FORMAT_R32_UINT: case VK_FORMAT_R32_SINT: case VK_FORMAT_R32_SFLOAT: - case VK_FORMAT_D24_UNORM_X8: + case VK_FORMAT_X8_D24_UNORM_PACK32: case VK_FORMAT_D24_UNORM_S8_UINT: case VK_FORMAT_D32_SFLOAT: - case VK_FORMAT_R9G9B9E5_UFLOAT: + case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32: case VK_FORMAT_D16_UNORM_S8_UINT: ret *= 4; break; @@ -367,20 +367,15 @@ uint32_t GetByteSize(uint32_t Width, uint32_t Height, uint32_t Depth, VkFormat F case VK_FORMAT_R16_SINT: case VK_FORMAT_R16_SFLOAT: case VK_FORMAT_D16_UNORM: - case VK_FORMAT_R5G6B5_UNORM: - case VK_FORMAT_R5G6B5_USCALED: - case VK_FORMAT_R5G5B5A1_UNORM: - case VK_FORMAT_R5G5B5A1_USCALED: - case VK_FORMAT_B5G5R5A1_UNORM: - case VK_FORMAT_B5G6R5_UNORM: - case VK_FORMAT_B5G6R5_USCALED: - case VK_FORMAT_R4G4B4A4_UNORM: - case VK_FORMAT_R4G4B4A4_USCALED: - case VK_FORMAT_B4G4R4A4_UNORM: + case VK_FORMAT_R5G6B5_UNORM_PACK16: + case VK_FORMAT_R5G5B5A1_UNORM_PACK16: + case VK_FORMAT_B5G5R5A1_UNORM_PACK16: + case VK_FORMAT_B5G6R5_UNORM_PACK16: + case VK_FORMAT_R4G4B4A4_UNORM_PACK16: + case VK_FORMAT_B4G4R4A4_UNORM_PACK16: ret *= 2; break; - case VK_FORMAT_R4G4_UNORM: - case VK_FORMAT_R4G4_USCALED: + case VK_FORMAT_R4G4_UNORM_PACK8: case VK_FORMAT_R8_UNORM: case VK_FORMAT_R8_SNORM: case VK_FORMAT_R8_USCALED: @@ -391,92 +386,92 @@ uint32_t GetByteSize(uint32_t Width, uint32_t Height, uint32_t Depth, VkFormat F case VK_FORMAT_S8_UINT: ret *= 1; 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: - case VK_FORMAT_BC4_UNORM: - case VK_FORMAT_BC4_SNORM: - 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_R11_SNORM: + case VK_FORMAT_BC1_RGB_UNORM_BLOCK: + case VK_FORMAT_BC1_RGB_SRGB_BLOCK: + case VK_FORMAT_BC1_RGBA_UNORM_BLOCK: + case VK_FORMAT_BC1_RGBA_SRGB_BLOCK: + case VK_FORMAT_BC4_UNORM_BLOCK: + case VK_FORMAT_BC4_SNORM_BLOCK: + case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK: + case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK: + case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK: + case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK: + case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK: + case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK: + case VK_FORMAT_EAC_R11_UNORM_BLOCK: + case VK_FORMAT_EAC_R11_SNORM_BLOCK: ret = AlignUp4(w)*AlignUp4(h)*d; ret /= 2; break; - case VK_FORMAT_BC2_UNORM: - case VK_FORMAT_BC2_SRGB: - case VK_FORMAT_BC3_UNORM: - case VK_FORMAT_BC3_SRGB: - case VK_FORMAT_BC5_UNORM: - case VK_FORMAT_BC5_SNORM: - case VK_FORMAT_BC6H_UFLOAT: - case VK_FORMAT_BC6H_SFLOAT: - case VK_FORMAT_BC7_UNORM: - case VK_FORMAT_BC7_SRGB: - case VK_FORMAT_EAC_R11G11_UNORM: - case VK_FORMAT_EAC_R11G11_SNORM: + case VK_FORMAT_BC2_UNORM_BLOCK: + case VK_FORMAT_BC2_SRGB_BLOCK: + case VK_FORMAT_BC3_UNORM_BLOCK: + case VK_FORMAT_BC3_SRGB_BLOCK: + case VK_FORMAT_BC5_UNORM_BLOCK: + case VK_FORMAT_BC5_SNORM_BLOCK: + case VK_FORMAT_BC6H_UFLOAT_BLOCK: + case VK_FORMAT_BC6H_SFLOAT_BLOCK: + case VK_FORMAT_BC7_UNORM_BLOCK: + case VK_FORMAT_BC7_SRGB_BLOCK: + case VK_FORMAT_EAC_R11G11_UNORM_BLOCK: + case VK_FORMAT_EAC_R11G11_SNORM_BLOCK: ret = AlignUp4(w)*AlignUp4(h)*d; ret *= 1; break; - case VK_FORMAT_ASTC_4x4_UNORM: - case VK_FORMAT_ASTC_4x4_SRGB: + case VK_FORMAT_ASTC_4x4_UNORM_BLOCK: + case VK_FORMAT_ASTC_4x4_SRGB_BLOCK: astc[0] = 4; astc[1] = 4; break; - case VK_FORMAT_ASTC_5x4_UNORM: - case VK_FORMAT_ASTC_5x4_SRGB: + case VK_FORMAT_ASTC_5x4_UNORM_BLOCK: + case VK_FORMAT_ASTC_5x4_SRGB_BLOCK: astc[0] = 5; astc[1] = 4; break; - case VK_FORMAT_ASTC_5x5_UNORM: - case VK_FORMAT_ASTC_5x5_SRGB: + case VK_FORMAT_ASTC_5x5_UNORM_BLOCK: + case VK_FORMAT_ASTC_5x5_SRGB_BLOCK: astc[0] = 5; astc[1] = 5; break; - case VK_FORMAT_ASTC_6x5_UNORM: - case VK_FORMAT_ASTC_6x5_SRGB: + case VK_FORMAT_ASTC_6x5_UNORM_BLOCK: + case VK_FORMAT_ASTC_6x5_SRGB_BLOCK: astc[0] = 6; astc[1] = 5; break; - case VK_FORMAT_ASTC_6x6_UNORM: - case VK_FORMAT_ASTC_6x6_SRGB: + case VK_FORMAT_ASTC_6x6_UNORM_BLOCK: + case VK_FORMAT_ASTC_6x6_SRGB_BLOCK: astc[0] = 6; astc[1] = 6; break; - case VK_FORMAT_ASTC_8x5_UNORM: - case VK_FORMAT_ASTC_8x5_SRGB: + case VK_FORMAT_ASTC_8x5_UNORM_BLOCK: + case VK_FORMAT_ASTC_8x5_SRGB_BLOCK: astc[0] = 8; astc[1] = 5; break; - case VK_FORMAT_ASTC_8x6_UNORM: - case VK_FORMAT_ASTC_8x6_SRGB: + case VK_FORMAT_ASTC_8x6_UNORM_BLOCK: + case VK_FORMAT_ASTC_8x6_SRGB_BLOCK: astc[0] = 8; astc[1] = 6; break; - case VK_FORMAT_ASTC_8x8_UNORM: - case VK_FORMAT_ASTC_8x8_SRGB: + case VK_FORMAT_ASTC_8x8_UNORM_BLOCK: + case VK_FORMAT_ASTC_8x8_SRGB_BLOCK: astc[0] = 8; astc[1] = 8; break; - case VK_FORMAT_ASTC_10x5_UNORM: - case VK_FORMAT_ASTC_10x5_SRGB: + case VK_FORMAT_ASTC_10x5_UNORM_BLOCK: + case VK_FORMAT_ASTC_10x5_SRGB_BLOCK: astc[0] = 10; astc[1] = 5; break; - case VK_FORMAT_ASTC_10x6_UNORM: - case VK_FORMAT_ASTC_10x6_SRGB: + case VK_FORMAT_ASTC_10x6_UNORM_BLOCK: + case VK_FORMAT_ASTC_10x6_SRGB_BLOCK: astc[0] = 10; astc[1] = 6; break; - case VK_FORMAT_ASTC_10x8_UNORM: - case VK_FORMAT_ASTC_10x8_SRGB: + case VK_FORMAT_ASTC_10x8_UNORM_BLOCK: + case VK_FORMAT_ASTC_10x8_SRGB_BLOCK: astc[0] = 10; astc[1] = 8; break; - case VK_FORMAT_ASTC_10x10_UNORM: - case VK_FORMAT_ASTC_10x10_SRGB: + case VK_FORMAT_ASTC_10x10_UNORM_BLOCK: + case VK_FORMAT_ASTC_10x10_SRGB_BLOCK: astc[0] = 10; astc[1] = 10; break; - case VK_FORMAT_ASTC_12x10_UNORM: - case VK_FORMAT_ASTC_12x10_SRGB: + case VK_FORMAT_ASTC_12x10_UNORM_BLOCK: + case VK_FORMAT_ASTC_12x10_SRGB_BLOCK: astc[0] = 12; astc[1] = 10; break; - case VK_FORMAT_ASTC_12x12_UNORM: - case VK_FORMAT_ASTC_12x12_SRGB: + case VK_FORMAT_ASTC_12x12_UNORM_BLOCK: + case VK_FORMAT_ASTC_12x12_SRGB_BLOCK: astc[0] = 12; astc[1] = 12; break; default: