From 21ec469a2fb7c8bbecb96d02cda1597bafb11da1 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Wed, 14 Sep 2022 10:36:21 +0200 Subject: [PATCH] zink: emulate latc formats with rgtc util_format_luminance_to_red returns PIPE_FORMAT_NONE for LATC formats, because there's no red-alpha variant of it, only red-green. Reviewed-by: Mike Blumenkrantz Part-of: --- src/freedreno/ci/traces-freedreno.yml | 2 +- src/gallium/drivers/zink/zink_format.c | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/freedreno/ci/traces-freedreno.yml b/src/freedreno/ci/traces-freedreno.yml index c44e29b727b..18cdb0ed30f 100644 --- a/src/freedreno/ci/traces-freedreno.yml +++ b/src/freedreno/ci/traces-freedreno.yml @@ -117,7 +117,7 @@ traces: freedreno-a630: checksum: 730692659fbb9eefa44d6b1a2df2fa8e zink-a630: - checksum: 165d3c13c8143fbc2265a55758afc04c + checksum: 2a31ee1a56b755dcf5975b31eacbec32 behdad-glyphy/glyphy-v2.trace: freedreno-a306: diff --git a/src/gallium/drivers/zink/zink_format.c b/src/gallium/drivers/zink/zink_format.c index a340dee0238..90fb8c671d3 100644 --- a/src/gallium/drivers/zink/zink_format.c +++ b/src/gallium/drivers/zink/zink_format.c @@ -302,8 +302,16 @@ zink_format_get_emulated_alpha(enum pipe_format format) { if (util_format_is_alpha(format)) return emulate_alpha(format); - if (util_format_is_luminance(format) || util_format_is_luminance_alpha(format)) + if (util_format_is_luminance(format)) return util_format_luminance_to_red(format); + if (util_format_is_luminance_alpha(format)) { + if (format == PIPE_FORMAT_LATC2_UNORM) + return PIPE_FORMAT_RGTC2_UNORM; + if (format == PIPE_FORMAT_LATC2_SNORM) + return PIPE_FORMAT_RGTC2_SNORM; + + return util_format_luminance_to_red(format); + } return emulate_red_alpha(format); }