freedreno/ir3: rename s/frag_pos/frag_vcoord/g
authorRob Clark <robdclark@gmail.com>
Fri, 10 Aug 2018 13:50:14 +0000 (09:50 -0400)
committerRob Clark <robdclark@gmail.com>
Tue, 14 Aug 2018 21:59:02 +0000 (17:59 -0400)
Make it more clear that this is varying fetch related.  Also fixup some
comments.  Just cleanup for next patches.

Signed-off-by: Rob Clark <robdclark@gmail.com>
src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
src/gallium/drivers/freedreno/ir3/ir3_shader.h

index cffb8238b7039e0d96fd1614e5bc6a194d6e644f..f0e7ead9c7a2400a815ec39c9b8ead7146b2947c 100644 (file)
@@ -56,17 +56,22 @@ struct ir3_context {
 
        nir_function_impl *impl;
 
-       /* For fragment shaders, from the hw perspective the only
-        * actual input is r0.xy position register passed to bary.f.
-        * But TGSI doesn't know that, it still declares things as
-        * IN[] registers.  So we do all the input tracking normally
-        * and fix things up after compile_instructions()
+       /* For fragment shaders, varyings are not actual shader inputs,
+        * instead the hw passes a varying-coord which is used with
+        * bary.f.
         *
-        * NOTE that frag_pos is the hardware position (possibly it
+        * But NIR doesn't know that, it still declares varyings as
+        * inputs.  So we do all the input tracking normally and fix
+        * things up after compile_instructions()
+        *
+        * NOTE that frag_vcoord is the hardware position (possibly it
         * is actually an index or tag or some such.. it is *not*
         * values that can be directly used for gl_FragCoord..)
         */
-       struct ir3_instruction *frag_pos, *frag_face, *frag_coord[4];
+       struct ir3_instruction *frag_vcoord;
+
+       /* for fragment shaders, for gl_FrontFacing and gl_FragCoord: */
+       struct ir3_instruction *frag_face, *frag_coord[4];
 
        /* For vertex shaders, keep track of the system values sources */
        struct ir3_instruction *vertex_id, *basevertex, *instance_id;
@@ -768,7 +773,7 @@ create_frag_input(struct ir3_context *ctx, bool use_ldlv)
                instr->cat6.type = TYPE_U32;
                instr->cat6.iim_val = 1;
        } else {
-               instr = ir3_BARY_F(block, inloc, 0, ctx->frag_pos, 0);
+               instr = ir3_BARY_F(block, inloc, 0, ctx->frag_vcoord, 0);
                instr->regs[2]->wrmask = 0x3;
        }
 
@@ -3438,7 +3443,7 @@ emit_instructions(struct ir3_context *ctx)
                ir3_reg_create(instr, 0, 0);
                ir3_reg_create(instr, 0, IR3_REG_SSA);    /* r0.x */
                ir3_reg_create(instr, 0, IR3_REG_SSA);    /* r0.y */
-               ctx->frag_pos = instr;
+               ctx->frag_vcoord = instr;
        }
 
        /* Setup inputs: */
@@ -3467,7 +3472,7 @@ emit_instructions(struct ir3_context *ctx)
 
 /* from NIR perspective, we actually have inputs.  But most of the "inputs"
  * for a fragment shader are just bary.f instructions.  The *actual* inputs
- * from the hw perspective are the frag_pos and optionally frag_coord and
+ * from the hw perspective are the frag_vcoord and optionally frag_coord and
  * frag_face.
  */
 static void
@@ -3481,7 +3486,7 @@ fixup_frag_inputs(struct ir3_context *ctx)
 
        ir->ninputs = 0;
 
-       n  = 4;  /* always have frag_pos */
+       n  = 4;  /* always have frag_vcoord */
        n += COND(so->frag_face, 4);
        n += COND(so->frag_coord, 4);
 
@@ -3489,7 +3494,7 @@ fixup_frag_inputs(struct ir3_context *ctx)
 
        if (so->frag_face) {
                /* this ultimately gets assigned to hr0.x so doesn't conflict
-                * with frag_coord/frag_pos..
+                * with frag_coord/frag_vcoord..
                 */
                inputs[ir->ninputs++] = ctx->frag_face;
                ctx->frag_face->regs[0]->num = 0;
@@ -3504,7 +3509,7 @@ fixup_frag_inputs(struct ir3_context *ctx)
 
        /* since we don't know where to set the regid for frag_coord,
         * we have to use r0.x for it.  But we don't want to *always*
-        * use r1.x for frag_pos as that could increase the register
+        * use r1.x for frag_vcoord as that could increase the register
         * footprint on simple shaders:
         */
        if (so->frag_coord) {
@@ -3519,20 +3524,20 @@ fixup_frag_inputs(struct ir3_context *ctx)
                inputs[ir->ninputs++] = ctx->frag_coord[3];
        }
 
-       /* we always have frag_pos: */
+       /* we always have frag_vcoord: */
        so->pos_regid = regid;
 
        /* r0.x */
        instr = create_input(ctx->in_block, ir->ninputs);
        instr->regs[0]->num = regid++;
        inputs[ir->ninputs++] = instr;
-       ctx->frag_pos->regs[1]->instr = instr;
+       ctx->frag_vcoord->regs[1]->instr = instr;
 
        /* r0.y */
        instr = create_input(ctx->in_block, ir->ninputs);
        instr->regs[0]->num = regid++;
        inputs[ir->ninputs++] = instr;
-       ctx->frag_pos->regs[2]->instr = instr;
+       ctx->frag_vcoord->regs[2]->instr = instr;
 
        ir->inputs = inputs;
 }
index cff0206b7acf618817b3dd029509ae04e7c2bfde..93182c710c271c9ed160b685291777bca572849b 100644 (file)
@@ -251,7 +251,7 @@ struct ir3_shader_variant {
         *   + From the vert shader, we only need the output regid
         */
 
-       /* for frag shader, pos_regid holds the frag_pos, ie. what is passed
+       /* for frag shader, pos_regid holds the frag_vcoord, ie. what is passed
         * to bary.f instructions
         */
        uint8_t pos_regid;