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);
       }

Reply via email to