etnaviv: always use RS align when GPU has TEXTURE_HALIGN feature
authorLucas Stach <l.stach@pengutronix.de>
Thu, 24 Nov 2022 15:39:35 +0000 (16:39 +0100)
committerMarge Bot <emma+marge@anholt.net>
Fri, 25 Nov 2022 19:06:28 +0000 (19:06 +0000)
Due to a logic bug we didn't always up-align the resource when the GPU
has the TEXTURE_HALIGN feature, which broke the RS blit when we need
to blit into a sampler shadow from a multi-tiled render target.

Fixes: 735718ed33b2 ("etnaviv: move etna_layout_multiple into etnaviv_resource.c")
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19991>

src/gallium/drivers/etnaviv/etnaviv_resource.c

index 3f4e386..ecb62e7 100644 (file)
@@ -264,8 +264,8 @@ etna_layout_multiple(const struct etna_screen *screen,
     * engine's width.  If not, we must not align resources used only for
     * textures. If this GPU uses the BLT engine, never do RS align.
     */
-   bool rs_align = !specs->use_blt && !etna_resource_sampler_only(templat) &&
-                   VIV_FEATURE(screen, chipMinorFeatures1, TEXTURE_HALIGN);
+   bool rs_align = !specs->use_blt && (!etna_resource_sampler_only(templat) ||
+                   VIV_FEATURE(screen, chipMinorFeatures1, TEXTURE_HALIGN));
    int msaa_xscale = 1, msaa_yscale = 1;
 
    /* Compressed textures are padded to their block size, but we don't have