diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 3d0a1fda696..bc6feae4d59 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -636,7 +636,7 @@ static void si_init_shader_args(struct si_shader *shader, struct si_shader_args SI_PARAM_POS_Z_FLOAT); si_add_arg_checked(&args->ac, AC_ARG_VGPR, 1, AC_ARG_FLOAT, &args->ac.frag_pos[3], SI_PARAM_POS_W_FLOAT); - si_add_arg_checked(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.front_face, + si_add_arg_checked(&args->ac, AC_ARG_VGPR, 1, AC_ARG_FLOAT, &args->ac.front_face, SI_PARAM_FRONT_FACE); si_add_arg_checked(&args->ac, AC_ARG_VGPR, 1, AC_ARG_INT, &args->ac.ancillary, SI_PARAM_ANCILLARY); diff --git a/src/gallium/drivers/radeonsi/si_shader_llvm_ps.c b/src/gallium/drivers/radeonsi/si_shader_llvm_ps.c index 2e972980803..7a585a45f3f 100644 --- a/src/gallium/drivers/radeonsi/si_shader_llvm_ps.c +++ b/src/gallium/drivers/radeonsi/si_shader_llvm_ps.c @@ -73,7 +73,7 @@ static void interp_fs_color(struct si_shader_context *ctx, unsigned input_index, if (semantic_index == 1 && colors_read_mask & 0xf) back_attr_offset += 1; - is_face_positive = LLVMBuildICmp(ctx->ac.builder, LLVMRealOLT, ctx->ac.f32_0, face, ""); + is_face_positive = LLVMBuildFCmp(ctx->ac.builder, LLVMRealOLT, ctx->ac.f32_0, face, ""); for (chan = 0; chan < 4; chan++) { LLVMValueRef front, back; @@ -600,10 +600,8 @@ void si_llvm_build_ps_prolog(struct si_shader_context *ctx, union si_shader_part LLVMValueRef prim_mask = ac_get_arg(&ctx->ac, args->ac.prim_mask); LLVMValueRef face = NULL; - if (key->ps_prolog.states.color_two_side) { + if (key->ps_prolog.states.color_two_side) face = ac_get_arg(&ctx->ac, args->ac.front_face); - face = ac_to_float(&ctx->ac, face); - } LLVMValueRef color[4]; interp_fs_color(ctx, key->ps_prolog.color_attr_index[i], i, key->ps_prolog.num_interp_inputs,