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:
@@ -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. */
|
||||
|
||||
@@ -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, ©_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;
|
||||
|
||||
Reference in New Issue
Block a user