diff --git a/src/gallium/drivers/zink/zink_batch.c b/src/gallium/drivers/zink/zink_batch.c index a20c9a820a2..ef690740ad3 100644 --- a/src/gallium/drivers/zink/zink_batch.c +++ b/src/gallium/drivers/zink/zink_batch.c @@ -197,12 +197,12 @@ zink_batch_reference_sampler_view(struct zink_batch *batch, void zink_batch_reference_program(struct zink_batch *batch, - struct pipe_reference *prog) + struct zink_program *pg) { - struct set_entry *entry = _mesa_set_search(batch->programs, prog); + struct set_entry *entry = _mesa_set_search(batch->programs, pg); if (!entry) { - entry = _mesa_set_add(batch->programs, prog); - pipe_reference(NULL, prog); + entry = _mesa_set_add(batch->programs, pg); + pipe_reference(NULL, &pg->reference); } batch->has_work = true; } diff --git a/src/gallium/drivers/zink/zink_batch.h b/src/gallium/drivers/zink/zink_batch.h index bcf72368f77..79ab9be4cc1 100644 --- a/src/gallium/drivers/zink/zink_batch.h +++ b/src/gallium/drivers/zink/zink_batch.h @@ -34,6 +34,7 @@ struct pipe_reference; struct zink_context; struct zink_fence; struct zink_framebuffer; +struct zink_program; struct zink_render_pass; struct zink_resource; struct zink_sampler_view; @@ -85,7 +86,7 @@ zink_batch_reference_sampler_view(struct zink_batch *batch, void zink_batch_reference_program(struct zink_batch *batch, - struct pipe_reference *prog); + struct zink_program *pg); 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 857ae506d5d..810dc4049ff 100644 --- a/src/gallium/drivers/zink/zink_draw.c +++ b/src/gallium/drivers/zink/zink_draw.c @@ -520,9 +520,9 @@ update_descriptors(struct zink_context *ctx, struct zink_screen *screen, bool is } if (is_compute) - zink_batch_reference_program(batch, &ctx->curr_compute->base.reference); + zink_batch_reference_program(batch, &ctx->curr_compute->base); else - zink_batch_reference_program(batch, &ctx->curr_program->base.reference); + zink_batch_reference_program(batch, &ctx->curr_program->base); if (batch->descs_used + num_descriptors >= batch->max_descs) { if (is_compute)