diff --git a/src/gallium/drivers/asahi/agx_state.c b/src/gallium/drivers/asahi/agx_state.c index c0b5a85486d..e716ad1f452 100644 --- a/src/gallium/drivers/asahi/agx_state.c +++ b/src/gallium/drivers/asahi/agx_state.c @@ -3231,7 +3231,7 @@ agx_draw_vbo(struct pipe_context *pctx, const struct pipe_draw_info *info, assert((batch->encoder_current + AGX_VDM_STREAM_LINK_LENGTH) <= batch->encoder_end && "Failed to reserve sufficient space in encoder"); - ctx->dirty = 0; + agx_dirty_reset_graphics(ctx); assert(batch == agx_get_batch(ctx) && "batch should not change under us"); diff --git a/src/gallium/drivers/asahi/agx_state.h b/src/gallium/drivers/asahi/agx_state.h index 7baf50e0f74..621db98d29c 100644 --- a/src/gallium/drivers/asahi/agx_state.h +++ b/src/gallium/drivers/asahi/agx_state.h @@ -537,6 +537,17 @@ agx_dirty_all(struct agx_context *ctx) ctx->stage[i].dirty = ~0; } +static inline void +agx_dirty_reset_graphics(struct agx_context *ctx) +{ + ctx->dirty = 0; + + for (unsigned i = 0; i < ARRAY_SIZE(ctx->stage); ++i) { + if (i != PIPE_SHADER_COMPUTE) + ctx->stage[i].dirty = 0; + } +} + struct agx_rasterizer { struct pipe_rasterizer_state base; uint8_t cull[AGX_CULL_LENGTH];