From: Lucas Stach Date: Wed, 16 Nov 2022 19:25:35 +0000 (+0100) Subject: etnaviv: add helper to set TS validity X-Git-Tag: upstream/23.3.3~5618 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=97aec88c7939f8c30f936d0c28a8d6e4109b0c0b;p=platform%2Fupstream%2Fmesa.git etnaviv: add helper to set TS validity 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 Reviewed-by: Christian Gmeiner Part-of: --- diff --git a/src/gallium/drivers/etnaviv/etnaviv_blt.c b/src/gallium/drivers/etnaviv/etnaviv_blt.c index a8be4bb..db71f59 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_blt.c +++ b/src/gallium/drivers/etnaviv/etnaviv_blt.c @@ -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; } diff --git a/src/gallium/drivers/etnaviv/etnaviv_resource.c b/src/gallium/drivers/etnaviv/etnaviv_resource.c index 5ef3839..24e52c3 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_resource.c +++ b/src/gallium/drivers/etnaviv/etnaviv_resource.c @@ -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; diff --git a/src/gallium/drivers/etnaviv/etnaviv_resource.h b/src/gallium/drivers/etnaviv/etnaviv_resource.h index ff74f96..6f41cc6 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_resource.h +++ b/src/gallium/drivers/etnaviv/etnaviv_resource.h @@ -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) diff --git a/src/gallium/drivers/etnaviv/etnaviv_rs.c b/src/gallium/drivers/etnaviv/etnaviv_rs.c index 3e8623f..2c090ad 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_rs.c +++ b/src/gallium/drivers/etnaviv/etnaviv_rs.c @@ -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; diff --git a/src/gallium/drivers/etnaviv/etnaviv_transfer.c b/src/gallium/drivers/etnaviv/etnaviv_transfer.c index 0a9a704..39e5070 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_transfer.c +++ b/src/gallium/drivers/etnaviv/etnaviv_transfer.c @@ -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) {