etnaviv: add helper to set TS validity
authorLucas Stach <l.stach@pengutronix.de>
Wed, 16 Nov 2022 19:25:35 +0000 (20:25 +0100)
committerMarge Bot <emma+marge@anholt.net>
Fri, 14 Jul 2023 14:21:35 +0000 (14:21 +0000)
Wrap the setting of the resource level TS validity into a
helper function to allow the implementation to change later.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19964>

src/gallium/drivers/etnaviv/etnaviv_blt.c
src/gallium/drivers/etnaviv/etnaviv_resource.c
src/gallium/drivers/etnaviv/etnaviv_resource.h
src/gallium/drivers/etnaviv/etnaviv_rs.c
src/gallium/drivers/etnaviv/etnaviv_transfer.c

index a8be4bb..db71f59 100644 (file)
@@ -264,7 +264,7 @@ etna_blit_clear_color_blt(struct pipe_context *pctx, struct pipe_surface *dst,
           etna_resource_ext_ts(etna_resource(dst->texture))))
          etna_resource(dst->texture)->ts_meta->v0.clear_value = new_clear_value;
 
-      surf->level->ts_valid = true;
+      etna_resource_level_ts_mark_valid(surf->level);
       ctx->dirty |= ETNA_DIRTY_TS | ETNA_DIRTY_DERIVE_TS;
    }
 
@@ -346,7 +346,7 @@ etna_blit_clear_zs_blt(struct pipe_context *pctx, struct pipe_surface *dst,
    /* This made the TS valid */
    if (surf->level->ts_size) {
       ctx->framebuffer.TS_DEPTH_CLEAR_VALUE = surf->level->clear_value;
-      surf->level->ts_valid = true;
+      etna_resource_level_ts_mark_valid(surf->level);
       ctx->dirty |= ETNA_DIRTY_TS | ETNA_DIRTY_DERIVE_TS;
    }
 
@@ -579,7 +579,7 @@ etna_try_blt_blit(struct pipe_context *pctx,
    resource_written(ctx, &dst->base);
 
    etna_resource_level_mark_changed(dst_lev);
-   dst_lev->ts_valid = false;
+   etna_resource_level_ts_mark_invalid(dst_lev);
 
    return true;
 }
index 5ef3839..24e52c3 100644 (file)
@@ -631,7 +631,7 @@ static void etna_resource_finish_ts_import(struct etna_screen *screen,
    rsc->levels[0].clear_value = rsc->ts_meta->v0.clear_value;
    rsc->levels[0].ts_size = rsc->ts_meta->v0.data_size;
    rsc->levels[0].ts_mode = ts_mode;
-   rsc->levels[0].ts_valid = true;
+   etna_resource_level_ts_mark_valid(&rsc->levels[0]);
 
    etna_resource_destroy(&screen->base, rsc->base.next);
    rsc->base.next = NULL;
index ff74f96..6f41cc6 100644 (file)
@@ -100,6 +100,18 @@ etna_resource_level_ts_valid(struct etna_resource_level *lvl)
    return lvl->ts_valid;
 }
 
+static inline void
+etna_resource_level_ts_mark_valid(struct etna_resource_level *lvl)
+{
+   lvl->ts_valid = true;
+}
+
+static inline void
+etna_resource_level_ts_mark_invalid(struct etna_resource_level *lvl)
+{
+   lvl->ts_valid = false;
+}
+
 /* returns TRUE if a is older than b */
 static inline bool
 etna_resource_level_needs_flush(struct etna_resource_level *lvl)
index 3e8623f..2c090ad 100644 (file)
@@ -348,7 +348,7 @@ etna_blit_clear_color_rs(struct pipe_context *pctx, struct pipe_surface *dst,
           etna_resource_ext_ts(etna_resource(dst->texture))))
          etna_resource(dst->texture)->ts_meta->v0.clear_value = new_clear_value;
 
-      surf->level->ts_valid = true;
+      etna_resource_level_ts_mark_valid(surf->level);
       ctx->dirty |= ETNA_DIRTY_TS | ETNA_DIRTY_DERIVE_TS;
    } else if (unlikely(new_clear_value != surf->level->clear_value)) { /* Queue normal RS clear for non-TS surfaces */
       /* If clear color changed, re-generate stored command */
@@ -407,7 +407,7 @@ etna_blit_clear_zs_rs(struct pipe_context *pctx, struct pipe_surface *dst,
          ctx->framebuffer.TS_MEM_CONFIG |= VIVS_TS_MEM_CONFIG_DEPTH_AUTO_DISABLE;
       }
 
-      surf->level->ts_valid = true;
+      etna_resource_level_ts_mark_valid(surf->level);
       ctx->dirty |= ETNA_DIRTY_TS | ETNA_DIRTY_DERIVE_TS;
    } else {
       if (unlikely(new_clear_value != surf->level->clear_value)) { /* Queue normal RS clear for non-TS surfaces */
@@ -807,7 +807,7 @@ etna_try_rs_blit(struct pipe_context *pctx,
    resource_read(ctx, &src->base);
    resource_written(ctx, &dst->base);
    etna_resource_level_mark_changed(dst_lev);
-   dst_lev->ts_valid = false;
+   etna_resource_level_ts_mark_invalid(dst_lev);
    ctx->dirty |= ETNA_DIRTY_DERIVE_TS;
 
    return true;
index 0a9a704..39e5070 100644 (file)
@@ -164,7 +164,7 @@ etna_transfer_unmap(struct pipe_context *pctx, struct pipe_transfer *ptrans)
          FREE(trans->staging);
       }
 
-      res_level->ts_valid = false;
+      etna_resource_level_ts_mark_invalid(res_level);
       etna_resource_level_mark_changed(res_level);
 
       if (rsc->base.bind & PIPE_BIND_SAMPLER_VIEW) {