From 1961022e1a701b89ded008bf30b27e162d910301 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Thu, 11 Aug 2022 12:32:16 +0200 Subject: [PATCH] zink: allow X32 -> A32 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 32-bit per component pipe_formats are a bit different than the 8 and 16 bit formats, in that there's no UNORM or SNORM variants of them. So let's just omit those variants. While we're at it, update a comment that was already out-of-date anyway. Acked-by: Marek Olšák Acked-by: Soroush Kashani Part-of: --- src/gallium/drivers/zink/zink_format.c | 3 ++- src/gallium/drivers/zink/zink_screen.c | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/zink/zink_format.c b/src/gallium/drivers/zink/zink_format.c index efc8fc595d9..d415542378a 100644 --- a/src/gallium/drivers/zink/zink_format.c +++ b/src/gallium/drivers/zink/zink_format.c @@ -315,7 +315,8 @@ zink_format_is_voidable_rgba_variant(enum pipe_format format) if(desc->block.width != 1 || desc->block.height != 1 || - (desc->block.bits != 32 && desc->block.bits != 64)) + (desc->block.bits != 32 && desc->block.bits != 64 && + desc->block.bits != 128)) return false; if (desc->nr_channels != 4) diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index bd9cb06199e..29ecfa10984 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -1490,7 +1490,7 @@ zink_is_depth_format_supported(struct zink_screen *screen, VkFormat format) static enum pipe_format emulate_x8(enum pipe_format format) { - /* convert missing X8 variants to A8 */ + /* convert missing Xn variants to An */ switch (format) { case PIPE_FORMAT_B8G8R8X8_UNORM: return PIPE_FORMAT_B8G8R8A8_UNORM; @@ -1516,6 +1516,11 @@ emulate_x8(enum pipe_format format) case PIPE_FORMAT_R16G16B16X16_UNORM: return PIPE_FORMAT_R16G16B16A16_UNORM; + case PIPE_FORMAT_R32G32B32X32_FLOAT: + return PIPE_FORMAT_R32G32B32A32_FLOAT; + case PIPE_FORMAT_R32G32B32X32_SINT: + return PIPE_FORMAT_R32G32B32A32_SINT; + default: return format; }