From f88d9c9d7cb4edea2cd981d09d1d076de37b535f Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 10 Feb 2021 09:47:57 -0500 Subject: [PATCH] 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 Part-of: --- src/gallium/drivers/zink/zink_screen.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index 6a30c1f4a74..b5b1896f0cb 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -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; }