diff --git a/src/gallium/drivers/asahi/agx_blit.c b/src/gallium/drivers/asahi/agx_blit.c index 542f3533992..eef8122d55f 100644 --- a/src/gallium/drivers/asahi/agx_blit.c +++ b/src/gallium/drivers/asahi/agx_blit.c @@ -94,7 +94,7 @@ agx_blitter_save(struct agx_context *ctx, struct blitter_context *blitter, util_blitter_save_scissor(blitter, &ctx->scissor); util_blitter_save_fragment_shader(blitter, ctx->stage[PIPE_SHADER_FRAGMENT].shader); util_blitter_save_blend(blitter, ctx->blend); - util_blitter_save_depth_stencil_alpha(blitter, &ctx->zs); + util_blitter_save_depth_stencil_alpha(blitter, ctx->zs); util_blitter_save_stencil_ref(blitter, &ctx->stencil_ref); util_blitter_save_so_targets(blitter, 0, NULL); util_blitter_save_sample_mask(blitter, ctx->sample_mask, 0); diff --git a/src/gallium/drivers/asahi/agx_state.c b/src/gallium/drivers/asahi/agx_state.c index f96d1e55de1..ab26d88d23a 100644 --- a/src/gallium/drivers/asahi/agx_state.c +++ b/src/gallium/drivers/asahi/agx_state.c @@ -253,9 +253,7 @@ static void agx_bind_zsa_state(struct pipe_context *pctx, void *cso) { struct agx_context *ctx = agx_context(pctx); - - if (cso) - memcpy(&ctx->zs, cso, sizeof(ctx->zs)); + ctx->zs = cso; } static void * @@ -1498,7 +1496,7 @@ demo_rasterizer(struct agx_context *ctx, struct agx_pool *pool, bool is_points) struct agx_rasterizer_packed out; agx_pack(&out, RASTERIZER, cfg) { - bool back_stencil = ctx->zs.base.stencil[1].enabled; + bool back_stencil = ctx->zs->base.stencil[1].enabled; cfg.front.stencil_reference = ctx->stencil_ref.ref_value[0]; cfg.back.stencil_reference = back_stencil ? ctx->stencil_ref.ref_value[1] : @@ -1518,12 +1516,12 @@ demo_rasterizer(struct agx_context *ctx, struct agx_pool *pool, bool is_points) }; /* Words 2-3: front */ - out.opaque[2] |= ctx->zs.front.opaque[0]; - out.opaque[3] |= ctx->zs.front.opaque[1]; + out.opaque[2] |= ctx->zs->front.opaque[0]; + out.opaque[3] |= ctx->zs->front.opaque[1]; /* Words 4-5: back */ - out.opaque[4] |= ctx->zs.back.opaque[0]; - out.opaque[5] |= ctx->zs.back.opaque[1]; + out.opaque[4] |= ctx->zs->back.opaque[0]; + out.opaque[5] |= ctx->zs->back.opaque[1]; return agx_pool_upload_aligned(pool, &out, sizeof(out), 64); } diff --git a/src/gallium/drivers/asahi/agx_state.h b/src/gallium/drivers/asahi/agx_state.h index fc178bb1a09..39431fcc92f 100644 --- a/src/gallium/drivers/asahi/agx_state.h +++ b/src/gallium/drivers/asahi/agx_state.h @@ -156,7 +156,7 @@ struct agx_context { struct agx_stage stage[PIPE_SHADER_TYPES]; struct agx_attribute *attributes; struct agx_rasterizer *rast; - struct agx_zsa zs; + struct agx_zsa *zs; struct agx_blend *blend; struct pipe_blend_color blend_color; struct pipe_viewport_state viewport;