From 6a9596be566b72aaa4b17b73557fead94a9ccf2f Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Sat, 8 Jun 2024 21:30:49 +0200 Subject: [PATCH] zink: limit minSampleShading to a maxium value of 1.0 This is required by the spec and fixes VUID-VkPipelineMultisampleStateCreateInfo-minSampleShading-00786 when running spec@arb_stencil_texturing@glblitframebuffer corrupts state@gl_texture_2d_multisample_array Signed-off-by: Gert Wollny Part-of: --- src/gallium/drivers/zink/zink_pipeline.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/zink/zink_pipeline.c b/src/gallium/drivers/zink/zink_pipeline.c index d8b51d688ca..a5f151fefc7 100644 --- a/src/gallium/drivers/zink/zink_pipeline.c +++ b/src/gallium/drivers/zink/zink_pipeline.c @@ -137,7 +137,7 @@ zink_create_gfx_pipeline(struct zink_screen *screen, ms_state.minSampleShading = 1.0; } else if (state->min_samples > 0) { ms_state.sampleShadingEnable = VK_TRUE; - ms_state.minSampleShading = (float)(state->rast_samples + 1) / (state->min_samples + 1); + ms_state.minSampleShading = MIN2((float)(state->rast_samples + 1) / (state->min_samples + 1), 1.0f); } VkPipelineViewportStateCreateInfo viewport_state = {0}; @@ -515,7 +515,7 @@ zink_create_gfx_pipeline_output(struct zink_screen *screen, struct zink_gfx_pipe ms_state.minSampleShading = 1.0; } else if (state->min_samples > 0) { ms_state.sampleShadingEnable = VK_TRUE; - ms_state.minSampleShading = (float)(state->rast_samples + 1) / (state->min_samples + 1); + ms_state.minSampleShading = MIN2((float)(state->rast_samples + 1) / (state->min_samples + 1), 1.0f); } VkDynamicState dynamicStateEnables[30] = {