diff --git a/src/gallium/drivers/zink/ci/zink-radv-fails.txt b/src/gallium/drivers/zink/ci/zink-radv-fails.txt index a2af3511ba9..696657832f2 100644 --- a/src/gallium/drivers/zink/ci/zink-radv-fails.txt +++ b/src/gallium/drivers/zink/ci/zink-radv-fails.txt @@ -109,14 +109,6 @@ dEQP-GLES3.functional.draw_buffers_indexed.overwrite_common.common_separate_blen dEQP-GLES3.functional.draw_buffers_indexed.overwrite_indexed.common_advanced_blend_eq_buffer_advanced_blend_eq,Fail dEQP-GLES3.functional.draw_buffers_indexed.overwrite_indexed.common_advanced_blend_eq_buffer_blend_eq,Fail dEQP-GLES3.functional.draw_buffers_indexed.overwrite_indexed.common_advanced_blend_eq_buffer_separate_blend_eq,Fail -dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth24_stencil8,Fail -dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth32f_stencil8,Fail -dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component24,Fail -dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component32f,Fail -dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth24_stencil8,Fail -dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth32f_stencil8,Fail -dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth_component24,Fail -dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth_component32f,Fail dEQP-GLES3.functional.rasterization.primitives.line_loop_wide,Fail dEQP-GLES3.functional.rasterization.primitives.line_strip_wide,Fail dEQP-GLES3.functional.shaders.metamorphic.bubblesort_flag.variant_1,Fail diff --git a/src/gallium/drivers/zink/zink_pipeline.c b/src/gallium/drivers/zink/zink_pipeline.c index 0c5257631a0..a4f78b4eaec 100644 --- a/src/gallium/drivers/zink/zink_pipeline.c +++ b/src/gallium/drivers/zink/zink_pipeline.c @@ -170,7 +170,7 @@ zink_create_gfx_pipeline(struct zink_screen *screen, VkPipelineRasterizationStateCreateInfo rast_state = {0}; rast_state.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO; - rast_state.depthClampEnable = hw_rast_state->depth_clamp; + rast_state.depthClampEnable = true; rast_state.rasterizerDiscardEnable = state->dyn_state2.rasterizer_discard; rast_state.polygonMode = hw_rast_state->polygon_mode; rast_state.cullMode = state->dyn_state1.cull_mode; @@ -182,6 +182,17 @@ zink_create_gfx_pipeline(struct zink_screen *screen, rast_state.depthBiasSlopeFactor = 0.0; rast_state.lineWidth = 1.0f; + VkPipelineRasterizationDepthClipStateCreateInfoEXT depth_clip_state = {0}; + depth_clip_state.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT; + depth_clip_state.depthClipEnable = hw_rast_state->depth_clip; + if (screen->info.have_EXT_depth_clip_enable) { + depth_clip_state.pNext = rast_state.pNext; + rast_state.pNext = &depth_clip_state; + } else { + static bool warned = false; + warn_missing_feature(warned, "VK_EXT_depth_clip_enable"); + } + VkPipelineRasterizationProvokingVertexStateCreateInfoEXT pv_state; pv_state.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT; pv_state.provokingVertexMode = hw_rast_state->pv_last ? diff --git a/src/gallium/drivers/zink/zink_state.c b/src/gallium/drivers/zink/zink_state.c index 4cf441c094c..c6c19602c78 100644 --- a/src/gallium/drivers/zink/zink_state.c +++ b/src/gallium/drivers/zink/zink_state.c @@ -578,7 +578,7 @@ zink_create_rasterizer_state(struct pipe_context *pctx, state->hw_state.line_stipple_enable = rs_state->line_stipple_enable; assert(rs_state->depth_clip_far == rs_state->depth_clip_near); - state->hw_state.depth_clamp = rs_state->depth_clip_near == 0; + state->hw_state.depth_clip = rs_state->depth_clip_near; state->hw_state.force_persample_interp = rs_state->force_persample_interp; state->hw_state.pv_last = !rs_state->flatshade_first; state->hw_state.clip_halfz = rs_state->clip_halfz; diff --git a/src/gallium/drivers/zink/zink_state.h b/src/gallium/drivers/zink/zink_state.h index c4c425467d5..2efc4fb2cb6 100644 --- a/src/gallium/drivers/zink/zink_state.h +++ b/src/gallium/drivers/zink/zink_state.h @@ -70,7 +70,7 @@ struct zink_vertex_state { struct zink_rasterizer_hw_state { unsigned polygon_mode : 2; //VkPolygonMode unsigned line_mode : 2; //VkLineRasterizationModeEXT - unsigned depth_clamp:1; + unsigned depth_clip:1; unsigned pv_last:1; unsigned line_stipple_enable:1; unsigned force_persample_interp:1;