diff --git a/src/amd/vulkan/nir/radv_nir_opt_fs_builtins.c b/src/amd/vulkan/nir/radv_nir_opt_fs_builtins.c index 5b08e17449f..38bede72cc6 100644 --- a/src/amd/vulkan/nir/radv_nir_opt_fs_builtins.c +++ b/src/amd/vulkan/nir/radv_nir_opt_fs_builtins.c @@ -23,6 +23,12 @@ pass(nir_builder *b, nir_intrinsic_instr *intr, void *data) } else if (gfx_state->rs.cull_mode == VK_CULL_MODE_BACK_BIT) { replacement = nir_imm_true(b); } + } else if (intr->intrinsic == nir_intrinsic_load_front_face_fsign) { + if (gfx_state->rs.cull_mode == VK_CULL_MODE_FRONT_BIT) { + replacement = nir_imm_float(b, 1.0); + } else if (gfx_state->rs.cull_mode == VK_CULL_MODE_BACK_BIT) { + replacement = nir_imm_float(b, -1.0); + } } else if (intr->intrinsic == nir_intrinsic_load_sample_id) { if (!gfx_state->dynamic_rasterization_samples && gfx_state->ms.rasterization_samples == 0) { replacement = nir_imm_intN_t(b, 0, intr->def.bit_size); @@ -40,4 +46,4 @@ bool radv_nir_opt_fs_builtins(nir_shader *shader, const struct radv_graphics_state_key *gfx_state) { return nir_shader_intrinsics_pass(shader, pass, nir_metadata_control_flow, (void *)gfx_state); -} \ No newline at end of file +}