zink_bind_gs_state(struct pipe_context *pctx,
void *cso)
{
- bind_stage(zink_context(pctx), PIPE_SHADER_GEOMETRY, cso);
+ struct zink_context *ctx = zink_context(pctx);
+ if (!!ctx->gfx_stages[PIPE_SHADER_GEOMETRY] != !!cso)
+ ctx->dirty_shader_stages |= BITFIELD_BIT(PIPE_SHADER_VERTEX) |
+ BITFIELD_BIT(PIPE_SHADER_TESS_EVAL);
+ bind_stage(ctx, PIPE_SHADER_GEOMETRY, cso);
}
static void *
zink_bind_tes_state(struct pipe_context *pctx,
void *cso)
{
- bind_stage(zink_context(pctx), PIPE_SHADER_TESS_EVAL, cso);
+ struct zink_context *ctx = zink_context(pctx);
+ if (!!ctx->gfx_stages[PIPE_SHADER_TESS_EVAL] != !!cso)
+ ctx->dirty_shader_stages |= BITFIELD_BIT(PIPE_SHADER_VERTEX);
+ bind_stage(ctx, PIPE_SHADER_TESS_EVAL, cso);
}
static void