diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index 52b75fe15a1..734bd60b503 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -2832,7 +2832,6 @@ check_base_requirements(struct zink_screen *screen) screen->info.have_EXT_scalar_block_layout = true; } if (!screen->info.feats.features.logicOp || - !screen->info.feats.features.fillModeNonSolid || !screen->info.feats.features.shaderClipDistance || !(screen->info.feats12.scalarBlockLayout || screen->info.have_EXT_scalar_block_layout) || @@ -2846,7 +2845,6 @@ check_base_requirements(struct zink_screen *screen) if (!screen->info.X) \ fprintf(stderr, "%s ", #X) CHECK_OR_PRINT(feats.features.logicOp); - CHECK_OR_PRINT(feats.features.fillModeNonSolid); CHECK_OR_PRINT(feats.features.shaderClipDistance); if (!screen->info.feats12.scalarBlockLayout && !screen->info.have_EXT_scalar_block_layout) fprintf(stderr, "scalarBlockLayout OR EXT_scalar_block_layout "); diff --git a/src/gallium/drivers/zink/zink_state.c b/src/gallium/drivers/zink/zink_state.c index 24175aceeed..f81a0c5ceb0 100644 --- a/src/gallium/drivers/zink/zink_state.c +++ b/src/gallium/drivers/zink/zink_state.c @@ -558,7 +558,14 @@ zink_create_rasterizer_state(struct pipe_context *pctx, state->hw_state.polygon_mode = VK_POLYGON_MODE_FILL; state->cull_mode = VK_CULL_MODE_NONE; } else { - state->hw_state.polygon_mode = rs_state->fill_front; // same values + if (rs_state->fill_front != PIPE_POLYGON_MODE_FILL && + !screen->info.feats.features.fillModeNonSolid) { + static bool warned = false; + warn_missing_feature(warned, "fillModeNonSolid"); + state->hw_state.polygon_mode = VK_POLYGON_MODE_FILL; + } else { + state->hw_state.polygon_mode = rs_state->fill_front; // same values + } state->cull_mode = rs_state->cull_face; // same bits }