zink: use better mapping for PIPE_FORMAT_X24S8_UINT

this needs to be unconditionally supported in some way, and it also
needs to use a more compatible fallback format if the base format is unavailable

Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8959>
This commit is contained in:
Mike Blumenkrantz
2021-02-10 09:47:57 -05:00
committed by Marge Bot
parent 329b26ab76
commit f88d9c9d7c
+5 -5
View File
@@ -906,6 +906,11 @@ zink_get_format(struct zink_screen *screen, enum pipe_format format)
{
VkFormat ret = zink_pipe_format_to_vk_format(emulate_x8(format));
if (format == PIPE_FORMAT_X24S8_UINT)
/* valid when using aspects to extract stencil,
* fails format test because it's emulated */
ret = VK_FORMAT_D24_UNORM_S8_UINT;
if (ret == VK_FORMAT_X8_D24_UNORM_PACK32 &&
!screen->have_X8_D24_UNORM_PACK32) {
assert(zink_is_depth_format_supported(screen, VK_FORMAT_D32_SFLOAT));
@@ -925,11 +930,6 @@ zink_get_format(struct zink_screen *screen, enum pipe_format format)
!screen->info.format_4444_feats.formatA4R4G4B4))
return VK_FORMAT_UNDEFINED;
if (format == PIPE_FORMAT_X24S8_UINT)
/* valid when using aspects to extract stencil,
* fails format test because it's emulated */
return VK_FORMAT_X8_D24_UNORM_PACK32;
return ret;
}