zink: take a pipe_reference param in zink_batch_reference_program
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Wed, 12 Aug 2020 20:11:02 +0000 (16:11 -0400)
committerMarge Bot <eric+marge@anholt.net>
Wed, 10 Feb 2021 00:19:38 +0000 (00:19 +0000)
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 <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8781>

src/gallium/drivers/zink/zink_batch.c
src/gallium/drivers/zink/zink_batch.h
src/gallium/drivers/zink/zink_draw.c

index ddc480d..fc4f7f6 100644 (file)
@@ -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);
    }
 }
 
index a6e7fa1..5b3577d 100644 (file)
 #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,
index 90ec531..78ca00b 100644 (file)
@@ -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);