zink: don't block reordering during ref updates in unordered blits

unordered blits handle all the reorder mechanics already, so any changes
here end up unnecessarily blocking further reordering

test case KHR-GLES3.packed_pixels.varied_rectangle.rgb

ref #9016

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24934>
This commit is contained in:
Mike Blumenkrantz 2023-08-24 08:26:10 -04:00 committed by Marge Bot
parent 98340dc8c4
commit 4f7fb8341e

View file

@ -3150,10 +3150,12 @@ update_resource_refs_for_stage(struct zink_context *ctx, gl_shader_stage stage)
continue;
}
zink_batch_resource_usage_set(batch, res, is_write, is_buffer);
if (is_write || !res->obj->is_buffer)
res->obj->unordered_read = res->obj->unordered_write = false;
else
res->obj->unordered_read = false;
if (!ctx->unordered_blitting) {
if (is_write || !res->obj->is_buffer)
res->obj->unordered_read = res->obj->unordered_write = false;
else
res->obj->unordered_read = false;
}
}
}
}
@ -3176,7 +3178,8 @@ zink_update_descriptor_refs(struct zink_context *ctx, bool compute)
struct zink_resource *res = zink_resource(ctx->vertex_buffers[i].buffer.resource);
if (res) {
zink_batch_resource_usage_set(batch, res, false, true);
res->obj->unordered_read = false;
if (!ctx->unordered_blitting)
res->obj->unordered_read = false;
}
}
if (ctx->curr_program)
@ -3188,10 +3191,12 @@ zink_update_descriptor_refs(struct zink_context *ctx, bool compute)
util_dynarray_foreach(&ctx->di.bindless[i].resident, struct zink_bindless_descriptor*, bd) {
struct zink_resource *res = zink_descriptor_surface_resource(&(*bd)->ds);
zink_batch_resource_usage_set(&ctx->batch, res, (*bd)->access & PIPE_IMAGE_ACCESS_WRITE, res->obj->is_buffer);
if ((*bd)->access & PIPE_IMAGE_ACCESS_WRITE || !res->obj->is_buffer)
res->obj->unordered_read = res->obj->unordered_write = false;
else
res->obj->unordered_read = false;
if (!ctx->unordered_blitting) {
if ((*bd)->access & PIPE_IMAGE_ACCESS_WRITE || !res->obj->is_buffer)
res->obj->unordered_read = res->obj->unordered_write = false;
else
res->obj->unordered_read = false;
}
}
}
}