etnaviv: add helper to mark resource level as flushed
authorLucas Stach <l.stach@pengutronix.de>
Fri, 18 Nov 2022 15:57:44 +0000 (16:57 +0100)
committerMarge Bot <emma+marge@anholt.net>
Fri, 14 Jul 2023 14:21:35 +0000 (14:21 +0000)
Add a small helper to mark a resource level as flushed so the
seqno handling is hidden.

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_clear_blit.c
src/gallium/drivers/etnaviv/etnaviv_resource.h
src/gallium/drivers/etnaviv/etnaviv_transfer.c

index 0b077ad..2277cd2 100644 (file)
@@ -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;
 }
index 6bce94e..2793f14 100644 (file)
@@ -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. */
index b569fac..b3be245 100644 (file)
@@ -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);
       }