mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 05:18:08 +02:00
vulkan/format: map ASTC HDR formats
Because the ASTC HDR formats are extension formats, we need to convert it manually in vk_format_to_pipe_format() instead of using the table. Otherwise, the compiler tries to create a gigantic array and ends up dying. Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34828>
This commit is contained in:
parent
ade742db14
commit
a271b9a9a3
1 changed files with 44 additions and 2 deletions
|
|
@ -254,8 +254,6 @@ const enum pipe_format vk_format_map[] = {
|
|||
|
||||
/* Missing PVRTC */
|
||||
|
||||
/* Missing ASTC SFLOAT */
|
||||
|
||||
/* Missing more planes */
|
||||
};
|
||||
|
||||
|
|
@ -308,6 +306,36 @@ vk_format_to_pipe_format(VkFormat vkformat)
|
|||
return PIPE_FORMAT_A8_UNORM;
|
||||
case VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR:
|
||||
return PIPE_FORMAT_R5G5B5A1_UNORM;
|
||||
|
||||
case VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK:
|
||||
return PIPE_FORMAT_ASTC_4x4_FLOAT;
|
||||
case VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK:
|
||||
return PIPE_FORMAT_ASTC_5x4_FLOAT;
|
||||
case VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK:
|
||||
return PIPE_FORMAT_ASTC_5x5_FLOAT;
|
||||
case VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK:
|
||||
return PIPE_FORMAT_ASTC_6x5_FLOAT;
|
||||
case VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK:
|
||||
return PIPE_FORMAT_ASTC_6x6_FLOAT;
|
||||
case VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK:
|
||||
return PIPE_FORMAT_ASTC_8x5_FLOAT;
|
||||
case VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK:
|
||||
return PIPE_FORMAT_ASTC_8x6_FLOAT;
|
||||
case VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK:
|
||||
return PIPE_FORMAT_ASTC_8x8_FLOAT;
|
||||
case VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK:
|
||||
return PIPE_FORMAT_ASTC_10x5_FLOAT;
|
||||
case VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK:
|
||||
return PIPE_FORMAT_ASTC_10x6_FLOAT;
|
||||
case VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK:
|
||||
return PIPE_FORMAT_ASTC_10x8_FLOAT;
|
||||
case VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK:
|
||||
return PIPE_FORMAT_ASTC_10x10_FLOAT;
|
||||
case VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK:
|
||||
return PIPE_FORMAT_ASTC_12x10_FLOAT;
|
||||
case VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK:
|
||||
return PIPE_FORMAT_ASTC_12x12_FLOAT;
|
||||
|
||||
default:
|
||||
return PIPE_FORMAT_NONE;
|
||||
}
|
||||
|
|
@ -494,32 +522,46 @@ static const VkFormat formats[PIPE_FORMAT_COUNT] = {
|
|||
|
||||
[PIPE_FORMAT_ASTC_4x4] = VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_4x4_SRGB] = VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_4x4_FLOAT] = VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_5x4] = VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_5x4_SRGB] = VK_FORMAT_ASTC_5x4_SRGB_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_5x4_FLOAT] = VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_5x5] = VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_5x5_SRGB] = VK_FORMAT_ASTC_5x5_SRGB_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_5x5_FLOAT] = VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_6x5] = VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_6x5_SRGB] = VK_FORMAT_ASTC_6x5_SRGB_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_6x5_FLOAT] = VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_6x6] = VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_6x6_SRGB] = VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_6x6_FLOAT] = VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_8x5] = VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_8x5_SRGB] = VK_FORMAT_ASTC_8x5_SRGB_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_8x5_FLOAT] = VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_8x6] = VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_8x6_SRGB] = VK_FORMAT_ASTC_8x6_SRGB_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_8x6_FLOAT] = VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_8x8] = VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_8x8_SRGB] = VK_FORMAT_ASTC_8x8_SRGB_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_8x8_FLOAT] = VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_10x5] = VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_10x5_SRGB] = VK_FORMAT_ASTC_10x5_SRGB_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_10x5_FLOAT] = VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_10x6] = VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_10x6_SRGB] = VK_FORMAT_ASTC_10x6_SRGB_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_10x6_FLOAT] = VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_10x8] = VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_10x8_SRGB] = VK_FORMAT_ASTC_10x8_SRGB_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_10x8_FLOAT] = VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_10x10] = VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_10x10_SRGB] = VK_FORMAT_ASTC_10x10_SRGB_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_10x10_FLOAT] = VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_12x10] = VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_12x10_SRGB] = VK_FORMAT_ASTC_12x10_SRGB_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_12x10_FLOAT] = VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_12x12] = VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_12x12_SRGB] = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
|
||||
[PIPE_FORMAT_ASTC_12x12_FLOAT] = VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK,
|
||||
};
|
||||
|
||||
VkFormat
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue