etnaviv: blt: use correct TS offset in clear operations
authorLucas Stach <l.stach@pengutronix.de>
Thu, 17 Nov 2022 14:50:59 +0000 (15:50 +0100)
committerMarge Bot <emma+marge@anholt.net>
Fri, 25 Nov 2022 21:30:40 +0000 (21:30 +0000)
Using the ts_offset from the level means we are always clearing the
TS region of layer 0 of the level. Use the correct offset which takes
into account the layer offset.

Cc: mesa-stable
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/19814>

src/gallium/drivers/etnaviv/etnaviv_blt.c

index 125d625..2d1280e 100644 (file)
@@ -235,7 +235,7 @@ etna_blit_clear_color_blt(struct pipe_context *pctx, struct pipe_surface *dst,
    if (surf->surf.ts_size) {
       clr.dest.use_ts = 1;
       clr.dest.ts_addr.bo = res->ts_bo;
-      clr.dest.ts_addr.offset = surf->level->ts_offset;
+      clr.dest.ts_addr.offset = surf->surf.ts_offset;
       clr.dest.ts_addr.flags = ETNA_RELOC_WRITE;
       clr.dest.ts_clear_value[0] = new_clear_value;
       clr.dest.ts_clear_value[1] = new_clear_value >> 32;
@@ -324,7 +324,7 @@ etna_blit_clear_zs_blt(struct pipe_context *pctx, struct pipe_surface *dst,
    if (surf->surf.ts_size) {
       clr.dest.use_ts = 1;
       clr.dest.ts_addr.bo = res->ts_bo;
-      clr.dest.ts_addr.offset = surf->level->ts_offset;
+      clr.dest.ts_addr.offset = surf->surf.ts_offset;
       clr.dest.ts_addr.flags = ETNA_RELOC_WRITE;
       clr.dest.ts_clear_value[0] = surf->level->clear_value;
       clr.dest.ts_clear_value[1] = surf->level->clear_value;