zink: flag renderpass for change if image resource changes valid state
the next renderpass instance will need to use different load ops, so flag it here to ensure that gets picked up Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16877>
This commit is contained in:
parent
3e2c65281d
commit
5897ade22d
|
@ -502,8 +502,11 @@ zink_batch_resource_usage_set(struct zink_batch *batch, struct zink_resource *re
|
|||
res->obj->dt_has_data = true;
|
||||
}
|
||||
}
|
||||
if (write && !res->obj->is_buffer)
|
||||
if (write && !res->obj->is_buffer) {
|
||||
if (!res->valid && res->fb_binds)
|
||||
batch->state->ctx->rp_changed = true;
|
||||
res->valid = true;
|
||||
}
|
||||
zink_resource_usage_set(res, batch->state, write);
|
||||
/* multiple array entries are fine */
|
||||
if (!res->obj->coherent && res->obj->persistent_maps)
|
||||
|
|
|
@ -1544,8 +1544,12 @@ zink_resource_invalidate(struct pipe_context *pctx, struct pipe_resource *pres)
|
|||
{
|
||||
if (pres->target == PIPE_BUFFER)
|
||||
invalidate_buffer(zink_context(pctx), zink_resource(pres));
|
||||
else
|
||||
zink_resource(pres)->valid = false;
|
||||
else {
|
||||
struct zink_resource *res = zink_resource(pres);
|
||||
if (res->valid && res->fb_binds)
|
||||
zink_context(pctx)->rp_changed = true;
|
||||
res->valid = false;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1934,8 +1938,11 @@ zink_image_map(struct pipe_context *pctx,
|
|||
}
|
||||
if (!ptr)
|
||||
goto fail;
|
||||
if (usage & PIPE_MAP_WRITE)
|
||||
if (usage & PIPE_MAP_WRITE) {
|
||||
if (!res->valid && res->fb_binds)
|
||||
ctx->rp_changed = true;
|
||||
res->valid = true;
|
||||
}
|
||||
|
||||
if (sizeof(void*) == 4)
|
||||
trans->base.b.usage |= ZINK_MAP_TEMPORARY;
|
||||
|
|
Loading…
Reference in New Issue