Mesa (main): zink: delete zink_resource_object::acquire
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Jun 28 02:57:47 UTC 2022
Module: Mesa
Branch: main
Commit: 5c5ab9e173cb0fafca4f03c6f9a3a657f6f59a4f
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5c5ab9e173cb0fafca4f03c6f9a3a657f6f59a4f
Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date: Tue Jun 21 16:25:32 2022 -0400
zink: delete zink_resource_object::acquire
this was duplicated from the swapchain object for convenience, but really
it just leads to desync if a swapchain is shared, so use the swapchain
one instead
Reviewed-by: Adam Jackson <ajax at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17149>
---
src/gallium/drivers/zink/zink_context.c | 2 +-
src/gallium/drivers/zink/zink_kopper.c | 10 +++++-----
src/gallium/drivers/zink/zink_resource.h | 1 -
3 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c
index 374ff3c526a..3fb3664e04c 100644
--- a/src/gallium/drivers/zink/zink_context.c
+++ b/src/gallium/drivers/zink/zink_context.c
@@ -3438,7 +3438,7 @@ zink_flush_resource(struct pipe_context *pctx,
struct zink_context *ctx = zink_context(pctx);
struct zink_resource *res = zink_resource(pres);
if (res->obj->dt) {
- if (res->obj->acquire) {
+ if (zink_kopper_acquired(res->obj->dt, res->obj->dt_idx)) {
zink_resource_image_barrier(ctx, res, VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, 0, VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT);
zink_batch_reference_resource_rw(&ctx->batch, res, true);
} else {
diff --git a/src/gallium/drivers/zink/zink_kopper.c b/src/gallium/drivers/zink/zink_kopper.c
index 66c7bcf7b0d..fdeba999f43 100644
--- a/src/gallium/drivers/zink/zink_kopper.c
+++ b/src/gallium/drivers/zink/zink_kopper.c
@@ -461,7 +461,6 @@ kopper_acquire(struct zink_screen *screen, struct zink_resource *res, uint64_t t
if (!res->obj->new_dt && res->obj->dt_idx != UINT32_MAX &&
(cdt->swapchain->images[res->obj->dt_idx].acquire || cdt->swapchain->images[res->obj->dt_idx].acquired))
return VK_SUCCESS;
- res->obj->acquire = VK_NULL_HANDLE;
VkSemaphore acquire = VK_NULL_HANDLE;
while (true) {
@@ -503,7 +502,7 @@ kopper_acquire(struct zink_screen *screen, struct zink_resource *res, uint64_t t
break;
}
- cdt->swapchain->images[res->obj->dt_idx].acquire = res->obj->acquire = acquire;
+ cdt->swapchain->images[res->obj->dt_idx].acquire = acquire;
res->obj->image = cdt->swapchain->images[res->obj->dt_idx].image;
cdt->swapchain->images[res->obj->dt_idx].acquired = false;
if (!cdt->swapchain->images[res->obj->dt_idx].init) {
@@ -578,12 +577,14 @@ zink_kopper_acquire_submit(struct zink_screen *screen, struct zink_resource *res
struct kopper_displaytarget *cdt = kopper_displaytarget(res->obj->dt);
if (cdt->swapchain->dt_has_data)
return VK_NULL_HANDLE;
- assert(res->obj->acquire);
+ assert(res->obj->dt_idx != UINT32_MAX);
+ assert(cdt->swapchain->images[res->obj->dt_idx].acquire);
cdt->swapchain->images[res->obj->dt_idx].acquired = true;
/* this is now owned by the batch */
+ VkSemaphore acquire = cdt->swapchain->images[res->obj->dt_idx].acquire;
cdt->swapchain->images[res->obj->dt_idx].acquire = VK_NULL_HANDLE;
cdt->swapchain->dt_has_data = true;
- return res->obj->acquire;
+ return acquire;
}
VkSemaphore
@@ -729,7 +730,6 @@ zink_kopper_present_queue(struct zink_screen *screen, struct zink_resource *res)
} else {
kopper_present(cpi, screen, -1);
}
- res->obj->acquire = VK_NULL_HANDLE;
res->obj->indefinite_acquire = false;
cdt->swapchain->images[res->obj->dt_idx].acquired = false;
res->obj->dt_idx = UINT32_MAX;
diff --git a/src/gallium/drivers/zink/zink_resource.h b/src/gallium/drivers/zink/zink_resource.h
index 84bdec3798c..2e3280116c8 100644
--- a/src/gallium/drivers/zink/zink_resource.h
+++ b/src/gallium/drivers/zink/zink_resource.h
@@ -88,7 +88,6 @@ struct zink_resource_object {
void *dt;
uint32_t dt_idx;
uint32_t last_dt_idx;
- VkSemaphore acquire;
VkSemaphore present;
bool new_dt;
bool dt_has_data;
More information about the mesa-commit
mailing list