ac/surface: fix R32G3B32 image format regression for gfx6-8
authorMarek Olšák <marek.olsak@amd.com>
Thu, 1 Jun 2023 06:58:39 +0000 (02:58 -0400)
committerMarge Bot <emma+marge@anholt.net>
Tue, 6 Jun 2023 18:01:35 +0000 (18:01 +0000)
This is a different fix from the one reviewed because that one broke gfx9.

Fixes: ea7c89d1f57 - ac/surface: move determing ADDR_FMT_* into a helper function
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22833>

src/amd/common/ac_surface.c

index 2e154f9..060ffc7 100644 (file)
@@ -1127,6 +1127,10 @@ static int gfx6_compute_surface(ADDR_HANDLE addrlib, const struct radeon_info *i
    if (!compressed)
       AddrDccIn.bpp = AddrSurfInfoIn.bpp = surf->bpe * 8;
 
+   /* Setting ADDR_FMT_32_32_32 breaks gfx6-8, while INVALID works. */
+   if (AddrSurfInfoIn.format == ADDR_FMT_32_32_32)
+      AddrSurfInfoIn.format = ADDR_FMT_INVALID;
+
    AddrDccIn.numSamples = AddrSurfInfoIn.numSamples = MAX2(1, config->info.samples);
    AddrSurfInfoIn.tileIndex = -1;