zink: also move batch destructor into zink_batch.c

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9626>
This commit is contained in:
Mike Blumenkrantz
2020-11-05 12:32:32 -05:00
parent 56452230ab
commit 57021b1d4a
3 changed files with 21 additions and 19 deletions
+16
View File
@@ -102,6 +102,22 @@ zink_reset_batch(struct zink_context *ctx, struct zink_batch *batch)
batch->resource_size = 0;
}
void
zink_batch_destroy(struct zink_context* ctx, struct zink_batch *batch)
{
struct zink_screen *screen = zink_screen(ctx->base.screen);
vkFreeCommandBuffers(screen->dev, batch->cmdpool, 1, &batch->cmdbuf);
vkDestroyCommandPool(screen->dev, batch->cmdpool, NULL);
zink_fence_reference(screen, &batch->fence, NULL);
_mesa_set_destroy(batch->fbs, NULL);
_mesa_set_destroy(batch->resources, NULL);
util_dynarray_fini(&batch->zombie_samplers);
_mesa_set_destroy(batch->surfaces, NULL);
_mesa_set_destroy(batch->programs, NULL);
_mesa_set_destroy(batch->active_queries, NULL);
}
static void
init_batch(struct zink_context *ctx, struct zink_batch *batch)
{
+3
View File
@@ -90,6 +90,9 @@ zink_start_batch(struct zink_context *ctx, struct zink_batch *batch);
void
zink_end_batch(struct zink_context *ctx, struct zink_batch *batch);
void
zink_batch_destroy(struct zink_context* ctx, struct zink_batch *batch);
enum zink_queue
zink_batch_reference_resource_rw(struct zink_batch *batch,
struct zink_resource *res,
+2 -19
View File
@@ -275,23 +275,6 @@ debug_describe_zink_buffer_view(char *buf, const struct zink_buffer_view *ptr)
sprintf(buf, "zink_buffer_view");
}
static void
destroy_batch(struct zink_context* ctx, struct zink_batch* batch)
{
struct zink_screen *screen = zink_screen(ctx->base.screen);
zink_reset_batch(ctx, batch);
vkFreeCommandBuffers(screen->dev, batch->cmdpool, 1, &batch->cmdbuf);
vkDestroyCommandPool(screen->dev, batch->cmdpool, NULL);
zink_fence_reference(screen, &batch->fence, NULL);
_mesa_set_destroy(batch->fbs, NULL);
_mesa_set_destroy(batch->resources, NULL);
util_dynarray_fini(&batch->zombie_samplers);
_mesa_set_destroy(batch->surfaces, NULL);
_mesa_set_destroy(batch->programs, NULL);
_mesa_set_destroy(batch->active_queries, NULL);
}
static void
zink_context_destroy(struct pipe_context *pctx)
{
@@ -310,9 +293,9 @@ zink_context_destroy(struct pipe_context *pctx)
pipe_resource_reference(&ctx->null_buffers[i], NULL);
for (int i = 0; i < ARRAY_SIZE(ctx->batches); ++i)
destroy_batch(ctx, &ctx->batches[i]);
zink_batch_destroy(ctx, &ctx->batches[i]);
if (ctx->compute_batch.cmdpool)
destroy_batch(ctx, &ctx->compute_batch);
zink_batch_destroy(ctx, &ctx->compute_batch);
hash_table_foreach(ctx->render_pass_cache, he)
zink_destroy_render_pass(screen, he->data);