Module: Mesa Branch: main Commit: 99daab8bf06fafb2d8f70dd1586db1b0396db1e6 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=99daab8bf06fafb2d8f70dd1586db1b0396db1e6
Author: Lucas Stach <[email protected]> Date: Fri Nov 18 16:57:44 2022 +0100 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 <[email protected]> Reviewed-by: Christian Gmeiner <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19964> --- 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 0b077ad9e85..2277cd2009a 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 6bce94e9498..2793f148755 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 b569fac77bc..b3be2452d39 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); }
