From 99daab8bf06fafb2d8f70dd1586db1b0396db1e6 Mon Sep 17 00:00:00 2001 From: Lucas Stach Date: Fri, 18 Nov 2022 16:57:44 +0100 Subject: [PATCH] etnaviv: add helper to mark resource level as flushed Add a small helper to mark a resource level as flushed so the seqno handling is hidden. Signed-off-by: Lucas Stach Reviewed-by: Christian Gmeiner Part-of: --- src/gallium/drivers/etnaviv/etnaviv_clear_blit.c | 4 ++-- src/gallium/drivers/etnaviv/etnaviv_resource.h | 6 ++++++ src/gallium/drivers/etnaviv/etnaviv_transfer.c | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c b/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c index 0b077ad..2277cd2 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c +++ b/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c @@ -243,7 +243,7 @@ etna_copy_resource(struct pipe_context *pctx, struct pipe_resource *dst, } if (src == dst) - dst_priv->levels[level].flush_seqno = src_priv->levels[level].seqno; + etna_resource_level_mark_flushed(&dst_priv->levels[level]); else dst_priv->levels[level].seqno = src_priv->levels[level].seqno; } @@ -280,7 +280,7 @@ etna_copy_resource_box(struct pipe_context *pctx, struct pipe_resource *dst, } if (src == dst) - dst_priv->levels[level].flush_seqno = src_priv->levels[level].seqno; + etna_resource_level_mark_flushed(&dst_priv->levels[level]); else dst_priv->levels[level].seqno = src_priv->levels[level].seqno; } diff --git a/src/gallium/drivers/etnaviv/etnaviv_resource.h b/src/gallium/drivers/etnaviv/etnaviv_resource.h index 6bce94e..2793f14 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_resource.h +++ b/src/gallium/drivers/etnaviv/etnaviv_resource.h @@ -101,6 +101,12 @@ etna_resource_level_needs_flush(struct etna_resource_level *lvl) return lvl->ts_valid && ((int)(lvl->seqno - lvl->flush_seqno) > 0); } +static inline void +etna_resource_level_mark_flushed(struct etna_resource_level *lvl) +{ + lvl->flush_seqno = lvl->seqno; +} + /* status of queued up but not flushed reads and write operations. * In _transfer_map() we need to know if queued up rendering needs * to be flushed to preserve the order of cpu and gpu access. */ diff --git a/src/gallium/drivers/etnaviv/etnaviv_transfer.c b/src/gallium/drivers/etnaviv/etnaviv_transfer.c index b569fac..b3be245 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_transfer.c +++ b/src/gallium/drivers/etnaviv/etnaviv_transfer.c @@ -129,7 +129,7 @@ etna_transfer_unmap(struct pipe_context *pctx, struct pipe_transfer *ptrans) if (ptrans->usage & PIPE_MAP_WRITE) { if (etna_resource_level_needs_flush(res_level)) { if (ptrans->usage & PIPE_MAP_DISCARD_WHOLE_RESOURCE) - res_level->flush_seqno = res_level->seqno; + etna_resource_level_mark_flushed(res_level); else etna_copy_resource(pctx, &rsc->base, &rsc->base, ptrans->level, ptrans->level); } -- 2.7.4