zink: set when pipeline dirty flag when multisample changes

Sets `gfx_pipeline_state.dirty` appropriately when
`gfx_pipeline_state.multisample` changes

Fixes: 14d5892609 ("zink: add to multisample field to `zink_gfx_pipeline_state`")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22736>
This commit is contained in:
antonino 2023-04-27 15:55:39 +02:00 committed by Marge Bot
parent 9c4e3c9020
commit 5969541123

View file

@ -659,7 +659,7 @@ zink_bind_rasterizer_state(struct pipe_context *pctx, void *cso)
bool half_pixel_center = ctx->rast_state ? ctx->rast_state->base.half_pixel_center : true;
float line_width = ctx->rast_state ? ctx->rast_state->base.line_width : 1.0;
ctx->rast_state = cso;
ctx->gfx_pipeline_state.multisample = !ctx->rast_state || ctx->rast_state->base.multisample;
bool multisample = !ctx->rast_state || ctx->rast_state->base.multisample;
if (ctx->rast_state) {
if (screen->info.have_EXT_provoking_vertex &&
@ -711,6 +711,10 @@ zink_bind_rasterizer_state(struct pipe_context *pctx, void *cso)
zink_set_fs_base_key(ctx)->force_persample_interp = ctx->rast_state->base.force_persample_interp;
ctx->gfx_pipeline_state.dirty = true;
}
if (ctx->gfx_pipeline_state.multisample != multisample) {
ctx->gfx_pipeline_state.multisample = multisample;
ctx->gfx_pipeline_state.dirty |= !screen->have_full_ds3;
}
ctx->gfx_pipeline_state.force_persample_interp = ctx->rast_state->base.force_persample_interp;
if (ctx->rast_state->base.half_pixel_center != half_pixel_center)