diff --git a/.pick_status.json b/.pick_status.json index b91ed6cde76..5b5cd8c997d 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -3640,7 +3640,7 @@ "description": "zink: always set VkPipelineMultisampleStateCreateInfo::pSampleMask", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/gallium/drivers/zink/ci/zink-lvp-fails.txt b/src/gallium/drivers/zink/ci/zink-lvp-fails.txt index 69b2d1c96fe..aee145ea429 100644 --- a/src/gallium/drivers/zink/ci/zink-lvp-fails.txt +++ b/src/gallium/drivers/zink/ci/zink-lvp-fails.txt @@ -16,10 +16,6 @@ dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_dst_x,Fail dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_dst_x,Fail dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_dst_y,Fail dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_x,Fail -dEQP-GLES3.functional.multisample.fbo_4_samples.proportionality_sample_coverage,Fail -dEQP-GLES3.functional.multisample.fbo_4_samples.sample_coverage_invert,Fail -dEQP-GLES3.functional.multisample.fbo_max_samples.proportionality_sample_coverage,Fail -dEQP-GLES3.functional.multisample.fbo_max_samples.sample_coverage_invert,Fail KHR-GL32.transform_feedback.capture_geometry_separate_test,Fail KHR-GL32.transform_feedback.capture_vertex_interleaved_test,Fail KHR-GL32.transform_feedback.capture_vertex_separate_test,Fail @@ -436,8 +432,6 @@ spec@ext_framebuffer_multisample@interpolation 4 centroid-disabled,Fail spec@ext_framebuffer_multisample@interpolation 4 centroid-edges,Fail spec@ext_framebuffer_multisample@interpolation 4 non-centroid-deriv-disabled,Fail spec@ext_framebuffer_multisample@interpolation 4 non-centroid-disabled,Fail -spec@ext_framebuffer_multisample@sample-coverage 2 non-inverted,Fail -spec@ext_framebuffer_multisample@sample-coverage 4 non-inverted,Fail spec@ext_framebuffer_object@fbo-blending-formats,Fail spec@ext_framebuffer_object@fbo-blending-formats@GL_INTENSITY,Fail spec@ext_framebuffer_object@fbo-blending-formats@GL_INTENSITY12,Fail diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index f7ebf827056..8adcf3c9dac 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -4067,6 +4067,7 @@ zink_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags) ctx->base.set_patch_vertices = zink_set_patch_vertices; ctx->base.set_sample_mask = zink_set_sample_mask; + ctx->gfx_pipeline_state.sample_mask = UINT32_MAX; ctx->base.clear = zink_clear; ctx->base.clear_texture = zink_clear_texture; diff --git a/src/gallium/drivers/zink/zink_pipeline.c b/src/gallium/drivers/zink/zink_pipeline.c index 6a5b583cac7..42468f95015 100644 --- a/src/gallium/drivers/zink/zink_pipeline.c +++ b/src/gallium/drivers/zink/zink_pipeline.c @@ -124,7 +124,13 @@ zink_create_gfx_pipeline(struct zink_screen *screen, warn_missing_feature("alphaToOne"); ms_state.alphaToOneEnable = state->blend_state->alpha_to_one; } - ms_state.pSampleMask = state->sample_mask ? &state->sample_mask : NULL; + /* "If pSampleMask is NULL, it is treated as if the mask has all bits set to 1." + * - Chapter 27. Rasterization + * + * thus it never makes sense to leave this as NULL since gallium will provide correct + * data here as long as sample_mask is initialized on context creation + */ + ms_state.pSampleMask = &state->sample_mask; if (hw_rast_state->force_persample_interp) { ms_state.sampleShadingEnable = VK_TRUE; ms_state.minSampleShading = 1.0;