mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 20:28:04 +02:00
zink: explicitly check usage in buffer barriers
it's technically possible for a resource to have no usage but for batch usage to be set; this can occur if a resource is used, its cmdbuf completes, but the batch state is not reset before the resource is used again cc: mesa-stable Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33848>
This commit is contained in:
parent
c83d459225
commit
534436f863
1 changed files with 3 additions and 2 deletions
|
|
@ -698,11 +698,12 @@ zink_resource_buffer_barrier(struct zink_context *ctx, struct zink_resource *res
|
|||
|
||||
bool is_write = zink_resource_access_is_write(flags);
|
||||
enum zink_resource_access rw = is_write ? ZINK_RESOURCE_ACCESS_RW : ZINK_RESOURCE_ACCESS_WRITE;
|
||||
bool completed = zink_resource_usage_check_completion_fast(zink_screen(ctx->base.screen), res, rw);
|
||||
bool has_usage = zink_resource_has_usage(res);
|
||||
bool completed = !has_usage || zink_resource_usage_check_completion_fast(zink_screen(ctx->base.screen), res, rw);
|
||||
bool usage_matches = !completed && zink_resource_usage_matches(res, ctx->bs);
|
||||
if (!usage_matches) {
|
||||
res->obj->unordered_write = true;
|
||||
if (is_write || zink_resource_usage_check_completion_fast(zink_screen(ctx->base.screen), res, ZINK_RESOURCE_ACCESS_RW))
|
||||
if (is_write || !has_usage || zink_resource_usage_check_completion_fast(zink_screen(ctx->base.screen), res, ZINK_RESOURCE_ACCESS_RW))
|
||||
res->obj->unordered_read = true;
|
||||
}
|
||||
bool unordered_usage_matches = res->obj->unordered_access && usage_matches;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue