Module: Mesa
Branch: main
Commit: 2d2d0e803dbc522bb66d9c9a9f407aedc9d95abf
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2d2d0e803dbc522bb66d9c9a9f407aedc9d95abf

Author: Lucas Stach <[email protected]>
Date:   Fri Nov 18 17:04:46 2022 +0100

etnaviv: add helper to mark resource level as changed

Add a small helper to mark a resource level as changed 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_blt.c      | 6 +++---
 src/gallium/drivers/etnaviv/etnaviv_context.c  | 4 ++--
 src/gallium/drivers/etnaviv/etnaviv_resource.c | 2 +-
 src/gallium/drivers/etnaviv/etnaviv_resource.h | 6 ++++++
 src/gallium/drivers/etnaviv/etnaviv_rs.c       | 6 +++---
 src/gallium/drivers/etnaviv/etnaviv_transfer.c | 2 +-
 6 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/src/gallium/drivers/etnaviv/etnaviv_blt.c 
b/src/gallium/drivers/etnaviv/etnaviv_blt.c
index 2814e76d1ae..c76980ad0d5 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_blt.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_blt.c
@@ -270,7 +270,7 @@ etna_blit_clear_color_blt(struct pipe_context *pctx, struct 
pipe_surface *dst,
 
    surf->level->clear_value = new_clear_value;
    resource_written(ctx, surf->base.texture);
-   surf->level->seqno++;
+   etna_resource_level_mark_changed(surf->level);
 }
 
 static void
@@ -351,7 +351,7 @@ etna_blit_clear_zs_blt(struct pipe_context *pctx, struct 
pipe_surface *dst,
    }
 
    resource_written(ctx, surf->base.texture);
-   surf->level->seqno++;
+   etna_resource_level_mark_changed(surf->level);
 }
 
 static void
@@ -578,7 +578,7 @@ etna_try_blt_blit(struct pipe_context *pctx,
    resource_read(ctx, &src->base);
    resource_written(ctx, &dst->base);
 
-   dst_lev->seqno++;
+   etna_resource_level_mark_changed(dst_lev);
    dst_lev->ts_valid = false;
 
    return true;
diff --git a/src/gallium/drivers/etnaviv/etnaviv_context.c 
b/src/gallium/drivers/etnaviv/etnaviv_context.c
index feb6d7c0e9e..baf9c17b699 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_context.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_context.c
@@ -419,9 +419,9 @@ etna_draw_vbo(struct pipe_context *pctx, const struct 
pipe_draw_info *info,
       pctx->flush(pctx, NULL, 0);
 
    if (ctx->framebuffer_s.cbufs[0])
-      etna_surface(ctx->framebuffer_s.cbufs[0])->level->seqno++;
+      
etna_resource_level_mark_changed(etna_surface(ctx->framebuffer_s.cbufs[0])->level);
    if (ctx->framebuffer_s.zsbuf)
-      etna_surface(ctx->framebuffer_s.zsbuf)->level->seqno++;
+      
etna_resource_level_mark_changed(etna_surface(ctx->framebuffer_s.zsbuf)->level);
    if (info->index_size && indexbuf != info->index.resource)
       pipe_resource_reference(&indexbuf, NULL);
 }
diff --git a/src/gallium/drivers/etnaviv/etnaviv_resource.c 
b/src/gallium/drivers/etnaviv/etnaviv_resource.c
index 8e1d5fbcae6..5ef3839574e 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_resource.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_resource.c
@@ -570,7 +570,7 @@ etna_resource_changed(struct pipe_screen *pscreen, struct 
pipe_resource *prsc)
    struct etna_resource *rsc = etna_resource(prsc);
 
    for (int level = 0; level <= prsc->last_level; level++)
-      rsc->levels[level].seqno++;
+      etna_resource_level_mark_changed(&rsc->levels[level]);
 }
 
 static void
diff --git a/src/gallium/drivers/etnaviv/etnaviv_resource.h 
b/src/gallium/drivers/etnaviv/etnaviv_resource.h
index 2793f148755..7c1a5deed90 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_resource.h
+++ b/src/gallium/drivers/etnaviv/etnaviv_resource.h
@@ -107,6 +107,12 @@ etna_resource_level_mark_flushed(struct 
etna_resource_level *lvl)
    lvl->flush_seqno = lvl->seqno;
 }
 
+static inline void
+etna_resource_level_mark_changed(struct etna_resource_level *lvl)
+{
+   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_rs.c 
b/src/gallium/drivers/etnaviv/etnaviv_rs.c
index f607550dee9..80c90991c0e 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_rs.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_rs.c
@@ -359,7 +359,7 @@ etna_blit_clear_color_rs(struct pipe_context *pctx, struct 
pipe_surface *dst,
 
    surf->level->clear_value = new_clear_value;
    resource_written(ctx, surf->base.texture);
-   surf->level->seqno++;
+   etna_resource_level_mark_changed(surf->level);
 }
 
 static void
@@ -422,7 +422,7 @@ etna_blit_clear_zs_rs(struct pipe_context *pctx, struct 
pipe_surface *dst,
 
    surf->level->clear_value = new_clear_value;
    resource_written(ctx, surf->base.texture);
-   surf->level->seqno++;
+   etna_resource_level_mark_changed(surf->level);
 }
 
 static void
@@ -806,7 +806,7 @@ etna_try_rs_blit(struct pipe_context *pctx,
    etna_submit_rs_state(ctx, &copy_to_screen);
    resource_read(ctx, &src->base);
    resource_written(ctx, &dst->base);
-   dst_lev->seqno++;
+   etna_resource_level_mark_changed(dst_lev);
    dst_lev->ts_valid = false;
    ctx->dirty |= ETNA_DIRTY_DERIVE_TS;
 
diff --git a/src/gallium/drivers/etnaviv/etnaviv_transfer.c 
b/src/gallium/drivers/etnaviv/etnaviv_transfer.c
index b3be2452d39..0a9a704c361 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_transfer.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_transfer.c
@@ -165,7 +165,7 @@ etna_transfer_unmap(struct pipe_context *pctx, struct 
pipe_transfer *ptrans)
       }
 
       res_level->ts_valid = false;
-      res_level->seqno++;
+      etna_resource_level_mark_changed(res_level);
 
       if (rsc->base.bind & PIPE_BIND_SAMPLER_VIEW) {
          ctx->dirty |= ETNA_DIRTY_TEXTURE_CACHES;

Reply via email to