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 <l.stach@pengutronix.de>
Reviewed-by: Christian Gmeiner <cgmeiner@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19964>
This commit is contained in:
Lucas Stach
2022-11-18 17:04:46 +01:00
committed by Marge Bot
parent 99daab8bf0
commit 2d2d0e803d
6 changed files with 16 additions and 10 deletions
+3 -3
View File
@@ -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;
@@ -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);
}
@@ -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
@@ -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. */
+3 -3
View File
@@ -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;
@@ -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;