mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 11:08:03 +02:00
zink: double check layouts for possible feedback loop images
if a feedback loop hasn't yet been added for an image with both
descriptor and fb binds, queue a check for that to avoid mismatch
affects godot-tps-gles3-high.trace
cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21906>
(cherry picked from commit 63f425c7d2)
This commit is contained in:
parent
1b18b9a415
commit
8381698215
2 changed files with 10 additions and 5 deletions
|
|
@ -7537,7 +7537,7 @@
|
|||
"description": "zink: double check layouts for possible feedback loop images",
|
||||
"nominated": true,
|
||||
"nomination_type": 0,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null
|
||||
},
|
||||
|
|
|
|||
|
|
@ -1625,10 +1625,15 @@ check_for_layout_update(struct zink_context *ctx, struct zink_resource *res, boo
|
|||
{
|
||||
VkImageLayout layout = res->bind_count[is_compute] ? zink_descriptor_util_image_layout_eval(ctx, res, is_compute) : VK_IMAGE_LAYOUT_UNDEFINED;
|
||||
VkImageLayout other_layout = res->bind_count[!is_compute] ? zink_descriptor_util_image_layout_eval(ctx, res, !is_compute) : VK_IMAGE_LAYOUT_UNDEFINED;
|
||||
if (res->bind_count[is_compute] && layout && res->layout != layout)
|
||||
_mesa_set_add(ctx->need_barriers[is_compute], res);
|
||||
if (res->bind_count[!is_compute] && other_layout && (layout != other_layout || res->layout != other_layout))
|
||||
_mesa_set_add(ctx->need_barriers[!is_compute], res);
|
||||
if (!is_compute && res->fb_binds && !(ctx->feedback_loops & res->fb_binds)) {
|
||||
/* always double check feedback loops */
|
||||
_mesa_set_add(ctx->need_barriers[0], res);
|
||||
} else {
|
||||
if (res->bind_count[is_compute] && layout && res->layout != layout)
|
||||
_mesa_set_add(ctx->need_barriers[is_compute], res);
|
||||
if (res->bind_count[!is_compute] && other_layout && (layout != other_layout || res->layout != other_layout))
|
||||
_mesa_set_add(ctx->need_barriers[!is_compute], res);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue