Looks correct to me. I agree a boolean face var would be nice. Last time looking at it it seemed a bit non trivial (because the face var isn't just used in glsl fragment shaders).

Roland

On 10/16/2014 08:33 AM, Marek Olšák wrote:
From: Marek Olšák <marek.ol...@amd.com>

We must convert it to boolean from the DX9 float encoding that Gallium
specifies.

Later, we should probably define that FACE should be 0 or ~0 if native
integers are supported.

Cc: 10.2 10.3 <mesa-sta...@lists.freedesktop.org>
---
  src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 14 +++++++++-----
  1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp 
b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
index a0da9f6..21f4cb8 100644
--- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
@@ -4781,15 +4781,19 @@ emit_wpos(struct st_context *st,
   * saturating the value to [0,1] does the job.
   */
  static void
-emit_face_var(struct st_translate *t)
+emit_face_var(struct gl_context *ctx, struct st_translate *t)
  {
     struct ureg_program *ureg = t->ureg;
     struct ureg_dst face_temp = ureg_DECL_temporary(ureg);
     struct ureg_src face_input = t->inputs[t->inputMapping[VARYING_SLOT_FACE]];

-   /* MOV_SAT face_temp, input[face] */
-   face_temp = ureg_saturate(face_temp);
-   ureg_MOV(ureg, face_temp, face_input);
+   if (ctx->Const.NativeIntegers) {
+      ureg_FSGE(ureg, face_temp, face_input, ureg_imm1f(ureg, 0));
+   }
+   else {
+      /* MOV_SAT face_temp, input[face] */
+      ureg_MOV(ureg, ureg_saturate(face_temp), face_input);
+   }

     /* Use face_temp as face input from here on: */
     t->inputs[t->inputMapping[VARYING_SLOT_FACE]] = ureg_src(face_temp);
@@ -4909,7 +4913,7 @@ st_translate_program(
        }

        if (proginfo->InputsRead & VARYING_BIT_FACE)
-         emit_face_var(t);
+         emit_face_var(ctx, t);

        /*
         * Declare output attributes.


_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to