llvmpipe: fix frontface behavior again

Lets make sure the frontface is 1 for front and -1 for back.
Discussed with Roland and Jose.

Signed-off-by: Zack Rusin <zackr@vmware.com>
This commit is contained in:
Zack Rusin 2013-08-02 22:08:25 -04:00
parent 0794f638ee
commit 95829e2029

View file

@ -182,9 +182,17 @@ emit_facing_coef(struct gallivm_state *gallivm,
LLVMValueRef a0_0 = args->facing;
LLVMValueRef a0_0f = LLVMBuildSIToFP(builder, a0_0, float_type, "");
LLVMValueRef zero = lp_build_const_float(gallivm, 0.0);
LLVMValueRef face_val = LLVMBuildFSub(builder, a0_0f,
lp_build_const_float(gallivm, 0.5),
"");
/* Our face val is either 1 or 0 so we do
* face = (val * 2) - 1
* to make it 1 or -1
*/
LLVMValueRef face_val =
LLVMBuildFAdd(builder,
LLVMBuildFMul(builder, a0_0f,
lp_build_const_float(gallivm, 2.0),
""),
lp_build_const_float(gallivm, -1.0),
"");
LLVMValueRef a0 = vec4f(gallivm, face_val, zero, zero, zero, "facing");
LLVMValueRef zerovec = vec4f_from_scalar(gallivm, zero, "zero");