From d3b4202b63cb3aca42bc91c5bc416acc1b7f382b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tapani=20P=C3=A4lli?= Date: Tue, 15 Feb 2022 10:22:15 +0200 Subject: [PATCH] mesa/st: always use DXT5 when transcoding ASTC format MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes artifacts seen in games when using ASTC transcoding, we need to use DXT5 for proper alpha channel support. Number of components is a block specific property, there is no easy way to see if we will require >1bit alpha support or not, so simply use DXT5 to have support in place. Fixes: 91cbe8d855c ("gallium: Add a transcode_astc driconf option") Signed-off-by: Tapani Pälli Reviewed-by: Nanley Chery Part-of: --- src/mesa/state_tracker/st_format.c | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c index 94b387df3b8..a2b6625fbba 100644 --- a/src/mesa/state_tracker/st_format.c +++ b/src/mesa/state_tracker/st_format.c @@ -110,23 +110,12 @@ st_mesa_format_to_pipe_format(const struct st_context *st, } if (st_astc_format_fallback(st, mesaFormat)) { - const struct util_format_description *desc = - util_format_description(mesaFormat); - if (_mesa_is_format_srgb(mesaFormat)) { - if (!st->transcode_astc) - return PIPE_FORMAT_R8G8B8A8_SRGB; - else if (desc->block.width * desc->block.height < 32) - return PIPE_FORMAT_DXT5_SRGBA; - else - return PIPE_FORMAT_DXT1_SRGBA; + return st->transcode_astc ? PIPE_FORMAT_DXT5_SRGBA : + PIPE_FORMAT_R8G8B8A8_SRGB; } else { - if (!st->transcode_astc) - return PIPE_FORMAT_R8G8B8A8_UNORM; - else if (desc->block.width * desc->block.height < 32) - return PIPE_FORMAT_DXT5_RGBA; - else - return PIPE_FORMAT_DXT1_RGBA; + return st->transcode_astc ? PIPE_FORMAT_DXT5_RGBA : + PIPE_FORMAT_R8G8B8A8_UNORM; } }