Am 31.07.2013 13:38, schrieb Zack Rusin: > The spec says that front-face is true if the value is >0 and false > if it's <0. To make sure that we follow the spec, lets just > subtract 0.5 from our value (llvmpipe did 1 for frontface and 0 > otherwise), which will get us a positive num for frontface and > negative for backface. > > Signed-off-by: Zack Rusin <za...@vmware.com> > --- > src/gallium/drivers/llvmpipe/lp_state_setup.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/src/gallium/drivers/llvmpipe/lp_state_setup.c > b/src/gallium/drivers/llvmpipe/lp_state_setup.c > index bb5cfc4..cecfbce 100644 > --- a/src/gallium/drivers/llvmpipe/lp_state_setup.c > +++ b/src/gallium/drivers/llvmpipe/lp_state_setup.c > @@ -182,7 +182,10 @@ 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 a0 = vec4f(gallivm, a0_0f, zero, zero, zero, "facing"); > + LLVMValueRef face_val = LLVMBuildFSub(builder, a0_0f, > + lp_build_const_float(gallivm, 0.5), > + ""); > + LLVMValueRef a0 = vec4f(gallivm, face_val, zero, zero, zero, "facing"); > LLVMValueRef zerovec = vec4f_from_scalar(gallivm, zero, "zero"); > > store_coef(gallivm, args, slot, a0, zerovec, zerovec); >
Looks good though I suspect using shl/sub before sitofp would be slightly cheaper than the fsub. Hard to tell though :-). Reviewed-by: Roland Scheidegger <srol...@vmware.com> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev