Mesa (main): zink: delete zink_resource_object::dt_has_data
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Jun 28 02:57:47 UTC 2022
Module: Mesa
Branch: main
Commit: 1951065a1613bc64351e6ff461677fe9f301b772
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1951065a1613bc64351e6ff461677fe9f301b772
Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date: Wed Jun 22 13:24:33 2022 -0400
zink: delete zink_resource_object::dt_has_data
this should be on the swapchain image
Reviewed-by: Adam Jackson <ajax at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17149>
---
src/gallium/drivers/zink/zink_batch.c | 4 +---
src/gallium/drivers/zink/zink_kopper.c | 11 ++++++-----
src/gallium/drivers/zink/zink_kopper.h | 2 +-
src/gallium/drivers/zink/zink_resource.h | 1 -
4 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/src/gallium/drivers/zink/zink_batch.c b/src/gallium/drivers/zink/zink_batch.c
index 31e17d53468..faa64385deb 100644
--- a/src/gallium/drivers/zink/zink_batch.c
+++ b/src/gallium/drivers/zink/zink_batch.c
@@ -493,10 +493,8 @@ zink_batch_resource_usage_set(struct zink_batch *batch, struct zink_resource *re
{
if (res->obj->dt) {
VkSemaphore acquire = zink_kopper_acquire_submit(zink_screen(batch->state->ctx->base.screen), res);
- if (acquire) {
+ if (acquire)
util_dynarray_append(&batch->state->acquires, VkSemaphore, acquire);
- res->obj->dt_has_data = true;
- }
}
if (write && !res->obj->is_buffer) {
if (!res->valid && res->fb_binds)
diff --git a/src/gallium/drivers/zink/zink_kopper.c b/src/gallium/drivers/zink/zink_kopper.c
index 5d2be3d791b..d27b32bd4ec 100644
--- a/src/gallium/drivers/zink/zink_kopper.c
+++ b/src/gallium/drivers/zink/zink_kopper.c
@@ -512,8 +512,7 @@ kopper_acquire(struct zink_screen *screen, struct zink_resource *res, uint64_t t
res->obj->indefinite_acquire = true;
p_atomic_inc(&cdt->swapchain->num_acquires);
}
- cdt->swapchain->dt_has_data = false;
- res->obj->dt_has_data = false;
+ cdt->swapchain->images[res->obj->dt_idx].dt_has_data = false;
return VK_SUCCESS;
}
@@ -573,7 +572,8 @@ zink_kopper_acquire_submit(struct zink_screen *screen, struct zink_resource *res
{
assert(res->obj->dt);
struct kopper_displaytarget *cdt = res->obj->dt;
- if (cdt->swapchain->dt_has_data)
+ assert(res->obj->dt_idx != UINT32_MAX);
+ if (cdt->swapchain->images[res->obj->dt_idx].dt_has_data)
return VK_NULL_HANDLE;
assert(res->obj->dt_idx != UINT32_MAX);
assert(cdt->swapchain->images[res->obj->dt_idx].acquire);
@@ -581,7 +581,7 @@ zink_kopper_acquire_submit(struct zink_screen *screen, struct zink_resource *res
/* 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;
+ cdt->swapchain->images[res->obj->dt_idx].dt_has_data = true;
return acquire;
}
@@ -743,7 +743,8 @@ zink_kopper_acquire_readback(struct zink_context *ctx, struct zink_resource *res
uint32_t last_dt_idx = res->obj->last_dt_idx;
VkResult ret = VK_SUCCESS;
/* if this hasn't been presented or if it has data, use this as the readback target */
- if (res->obj->last_dt_idx == UINT32_MAX || res->obj->dt_has_data)
+ if (res->obj->last_dt_idx == UINT32_MAX ||
+ (zink_kopper_acquired(cdt, res->obj->dt_idx) && cdt->swapchain->images[res->obj->dt_idx].dt_has_data))
return false;
while (res->obj->dt_idx != last_dt_idx) {
if (res->obj->dt_idx != UINT32_MAX && !zink_kopper_present_readback(ctx, res))
diff --git a/src/gallium/drivers/zink/zink_kopper.h b/src/gallium/drivers/zink/zink_kopper.h
index a62c6a14860..43f7687a9d7 100644
--- a/src/gallium/drivers/zink/zink_kopper.h
+++ b/src/gallium/drivers/zink/zink_kopper.h
@@ -32,6 +32,7 @@
struct kopper_swapchain_image {
bool init;
bool acquired;
+ bool dt_has_data;
VkImage image;
VkSemaphore acquire;
};
@@ -48,7 +49,6 @@ struct kopper_swapchain {
unsigned num_acquires;
unsigned max_acquires;
unsigned async_presents;
- bool dt_has_data;
struct kopper_swapchain_image *images;
};
diff --git a/src/gallium/drivers/zink/zink_resource.h b/src/gallium/drivers/zink/zink_resource.h
index 5047cb01c9c..2c460dbddef 100644
--- a/src/gallium/drivers/zink/zink_resource.h
+++ b/src/gallium/drivers/zink/zink_resource.h
@@ -90,7 +90,6 @@ struct zink_resource_object {
uint32_t last_dt_idx;
VkSemaphore present;
bool new_dt;
- bool dt_has_data;
bool indefinite_acquire;
// }
More information about the mesa-commit
mailing list