Mesa (master): zink: factor out zink_batch_release-helper
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Jan 5 15:41:15 UTC 2021
Module: Mesa
Branch: master
Commit: 820d272a21fb90fbc1b414653ca924208d83d576
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=820d272a21fb90fbc1b414653ca924208d83d576
Author: Erik Faye-Lund <erik.faye-lund at collabora.com>
Date: Tue Dec 15 10:33:58 2020 +0100
zink: factor out zink_batch_release-helper
This will be useful for making sure everything has gotten cleaned up
properly.
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8099>
---
src/gallium/drivers/zink/zink_batch.c | 26 ++++++++++++++++----------
src/gallium/drivers/zink/zink_batch.h | 5 +++++
2 files changed, 21 insertions(+), 10 deletions(-)
diff --git a/src/gallium/drivers/zink/zink_batch.c b/src/gallium/drivers/zink/zink_batch.c
index 33e69b5665d..d7fc1220360 100644
--- a/src/gallium/drivers/zink/zink_batch.c
+++ b/src/gallium/drivers/zink/zink_batch.c
@@ -13,17 +13,9 @@
#include "util/u_debug.h"
#include "util/set.h"
-static void
-reset_batch(struct zink_context *ctx, struct zink_batch *batch)
+void
+zink_batch_release(struct zink_screen *screen, struct zink_batch *batch)
{
- struct zink_screen *screen = zink_screen(ctx->base.screen);
- batch->descs_left = ZINK_BATCH_DESC_SIZE;
-
- // cmdbuf hasn't been submitted before
- if (!batch->fence)
- return;
-
- zink_fence_finish(screen, batch->fence, PIPE_TIMEOUT_INFINITE);
zink_fence_reference(screen, &batch->fence, NULL);
zink_render_pass_reference(screen, &batch->rp, NULL);
@@ -52,6 +44,20 @@ reset_batch(struct zink_context *ctx, struct zink_batch *batch)
vkDestroySampler(screen->dev, *samp, NULL);
}
util_dynarray_clear(&batch->zombie_samplers);
+}
+
+static void
+reset_batch(struct zink_context *ctx, struct zink_batch *batch)
+{
+ struct zink_screen *screen = zink_screen(ctx->base.screen);
+ batch->descs_left = ZINK_BATCH_DESC_SIZE;
+
+ // cmdbuf hasn't been submitted before
+ if (!batch->fence)
+ return;
+
+ zink_fence_finish(screen, batch->fence, PIPE_TIMEOUT_INFINITE);
+ zink_batch_release(screen, batch);
if (vkResetDescriptorPool(screen->dev, batch->descpool, 0) != VK_SUCCESS)
fprintf(stderr, "vkResetDescriptorPool failed\n");
diff --git a/src/gallium/drivers/zink/zink_batch.h b/src/gallium/drivers/zink/zink_batch.h
index 9bb3294e871..c7578f4f9a2 100644
--- a/src/gallium/drivers/zink/zink_batch.h
+++ b/src/gallium/drivers/zink/zink_batch.h
@@ -35,6 +35,7 @@ struct zink_framebuffer;
struct zink_gfx_program;
struct zink_render_pass;
struct zink_resource;
+struct zink_screen;
struct zink_sampler_view;
#define ZINK_BATCH_DESC_SIZE 1000
@@ -58,6 +59,10 @@ struct zink_batch {
struct set *active_queries; /* zink_query objects which were active at some point in this batch */
};
+/* release all resources attached to batch */
+void
+zink_batch_release(struct zink_screen *screen, struct zink_batch *batch);
+
void
zink_start_batch(struct zink_context *ctx, struct zink_batch *batch);
More information about the mesa-commit
mailing list