From dcab2ca6b1bc5e7de146e83689a9a39ce6a793b5 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 12 Aug 2020 16:11:02 -0400 Subject: [PATCH] zink: take a pipe_reference param in zink_batch_reference_program this lets us reuse the function for gfx and compute programs without much churn, since in C we can use a pointer to the first member of a struct and a pointer to the struct interchangeably Reviewed-by: Bas Nieuwenhuizen Part-of: --- src/gallium/drivers/zink/zink_batch.c | 4 ++-- src/gallium/drivers/zink/zink_batch.h | 5 +++-- src/gallium/drivers/zink/zink_draw.c | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/gallium/drivers/zink/zink_batch.c b/src/gallium/drivers/zink/zink_batch.c index ddc480d37e4..fc4f7f6daba 100644 --- a/src/gallium/drivers/zink/zink_batch.c +++ b/src/gallium/drivers/zink/zink_batch.c @@ -179,12 +179,12 @@ zink_batch_reference_sampler_view(struct zink_batch *batch, void zink_batch_reference_program(struct zink_batch *batch, - struct zink_gfx_program *prog) + struct pipe_reference *prog) { struct set_entry *entry = _mesa_set_search(batch->programs, prog); if (!entry) { entry = _mesa_set_add(batch->programs, prog); - pipe_reference(NULL, &prog->reference); + pipe_reference(NULL, prog); } } diff --git a/src/gallium/drivers/zink/zink_batch.h b/src/gallium/drivers/zink/zink_batch.h index a6e7fa19545..5b3577d2023 100644 --- a/src/gallium/drivers/zink/zink_batch.h +++ b/src/gallium/drivers/zink/zink_batch.h @@ -29,10 +29,11 @@ #include "util/list.h" #include "util/u_dynarray.h" +struct pipe_reference; + struct zink_context; struct zink_fence; struct zink_framebuffer; -struct zink_gfx_program; struct zink_render_pass; struct zink_resource; struct zink_screen; @@ -84,7 +85,7 @@ zink_batch_reference_sampler_view(struct zink_batch *batch, void zink_batch_reference_program(struct zink_batch *batch, - struct zink_gfx_program *prog); + struct pipe_reference *prog); void zink_batch_reference_surface(struct zink_batch *batch, diff --git a/src/gallium/drivers/zink/zink_draw.c b/src/gallium/drivers/zink/zink_draw.c index 90ec5317556..78ca00b0771 100644 --- a/src/gallium/drivers/zink/zink_draw.c +++ b/src/gallium/drivers/zink/zink_draw.c @@ -525,7 +525,7 @@ zink_draw_vbo(struct pipe_context *pctx, batch = zink_batch_rp(ctx); assert(batch->descs_left >= gfx_program->num_descriptors); } - zink_batch_reference_program(batch, ctx->curr_program); + zink_batch_reference_program(batch, &ctx->curr_program->reference); VkDescriptorSet desc_set = allocate_descriptor_set(screen, batch, gfx_program);