freedreno/ir3: handle VARYING_SLOT_PNTC
authorRob Clark <robclark@freedesktop.org>
Mon, 21 Mar 2016 17:56:04 +0000 (13:56 -0400)
committerRob Clark <robclark@freedesktop.org>
Sun, 15 May 2016 21:25:48 +0000 (17:25 -0400)
In the glsl->tgsi path, this already gets translated to VAR8, which
matches up with rasterizer->sprite_coord_enable.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c

index 33b2b7ba7bffa69e22bb97970d065cf929812500..fc66d7c331c467adc8c1dc703be52a66ab550b02 100644 (file)
@@ -2031,6 +2031,18 @@ setup_input(struct ir3_compile *ctx, nir_variable *in)
                                so->inputs[n].bary = false;
                                so->frag_coord = true;
                                instr = create_frag_coord(ctx, i);
+                       } else if (slot == VARYING_SLOT_PNTC) {
+                               /* see for example st_get_generic_varying_index().. this is
+                                * maybe a bit mesa/st specific.  But we need things to line
+                                * up for this in fdN_program:
+                                *    unsigned texmask = 1 << (slot - VARYING_SLOT_VAR0);
+                                *    if (emit->sprite_coord_enable & texmask) {
+                                *       ...
+                                *    }
+                                */
+                               so->inputs[n].slot = VARYING_SLOT_VAR8;
+                               so->inputs[n].bary = true;
+                               instr = create_frag_input(ctx, false);
                        } else if (slot == VARYING_SLOT_FACE) {
                                so->inputs[n].bary = false;
                                so->frag_face = true;