On 04/25/2016 05:49 PM, Dave Airlie wrote:
From: Dave Airlie <[email protected]>

For compute support some of the system values are .xyz types,
so move to using a vector instead of a single channel.

Signed-off-by: Dave Airlie <[email protected]>
---
  src/gallium/auxiliary/draw/draw_gs.c      | 2 +-
  src/gallium/auxiliary/draw/draw_vs_exec.c | 8 ++++----
  src/gallium/auxiliary/tgsi/tgsi_exec.c    | 2 +-
  src/gallium/auxiliary/tgsi/tgsi_exec.h    | 2 +-
  4 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/gallium/auxiliary/draw/draw_gs.c 
b/src/gallium/auxiliary/draw/draw_gs.c
index ef217fa..95ea94f 100644
--- a/src/gallium/auxiliary/draw/draw_gs.c
+++ b/src/gallium/auxiliary/draw/draw_gs.c
@@ -197,7 +197,7 @@ static void tgsi_gs_prepare(struct draw_geometry_shader 
*shader,
     if (shader->info.uses_invocationid) {
        unsigned i = machine->SysSemanticToIndex[TGSI_SEMANTIC_INVOCATIONID];
        for (j = 0; j < TGSI_QUAD_SIZE; j++)
-         machine->SystemValue[i].i[j] = shader->invocation_id;
+         machine->SystemValue[i].xyzw[0].i[j] = shader->invocation_id;
     }
  }

diff --git a/src/gallium/auxiliary/draw/draw_vs_exec.c 
b/src/gallium/auxiliary/draw/draw_vs_exec.c
index da0d1a7..fe6ad5b 100644
--- a/src/gallium/auxiliary/draw/draw_vs_exec.c
+++ b/src/gallium/auxiliary/draw/draw_vs_exec.c
@@ -107,7 +107,7 @@ vs_exec_run_linear( struct draw_vertex_shader *shader,
        unsigned i = machine->SysSemanticToIndex[TGSI_SEMANTIC_INSTANCEID];
        assert(i < Elements(machine->SystemValue));
        for (j = 0; j < TGSI_QUAD_SIZE; j++)
-         machine->SystemValue[i].i[j] = shader->draw->instance_id;
+         machine->SystemValue[i].xyzw[0].i[j] = shader->draw->instance_id;
     }

     for (i = 0; i < count; i += MAX_TGSI_VERTICES) {
@@ -130,19 +130,19 @@ vs_exec_run_linear( struct draw_vertex_shader *shader,
           if (shader->info.uses_vertexid) {
              unsigned vid = 
machine->SysSemanticToIndex[TGSI_SEMANTIC_VERTEXID];
              assert(vid < Elements(machine->SystemValue));
-            machine->SystemValue[vid].i[j] = i + j;
+            machine->SystemValue[vid].xyzw[0].i[j] = i + j;
              /* XXX this should include base vertex. Where to get it??? */
           }
           if (shader->info.uses_basevertex) {
              unsigned vid = 
machine->SysSemanticToIndex[TGSI_SEMANTIC_BASEVERTEX];
              assert(vid < Elements(machine->SystemValue));
-            machine->SystemValue[vid].i[j] = 0;
+            machine->SystemValue[vid].xyzw[0].i[j] = 0;
              /* XXX Where to get it??? */
           }
           if (shader->info.uses_vertexid_nobase) {
              unsigned vid = 
machine->SysSemanticToIndex[TGSI_SEMANTIC_VERTEXID_NOBASE];
              assert(vid < Elements(machine->SystemValue));
-            machine->SystemValue[vid].i[j] = i + j;
+            machine->SystemValue[vid].xyzw[0].i[j] = i + j;
           }

           for (slot = 0; slot < shader->info.num_inputs; slot++) {
diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.c 
b/src/gallium/auxiliary/tgsi/tgsi_exec.c
index 002aefc..0e1642e 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_exec.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_exec.c
@@ -1277,7 +1277,7 @@ fetch_src_file_channel(const struct tgsi_exec_machine 
*mach,
         * gl_FragCoord, for example, in a sys value register.
         */
        for (i = 0; i < TGSI_QUAD_SIZE; i++) {
-         chan->u[i] = mach->SystemValue[index->i[i]].u[i];
+         chan->u[i] = mach->SystemValue[index->i[i]].xyzw[0].u[i];
        }
        break;

diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.h 
b/src/gallium/auxiliary/tgsi/tgsi_exec.h
index d02a45a..897ac7a 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_exec.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_exec.h
@@ -356,7 +356,7 @@ struct tgsi_exec_machine

     /* System values */
     unsigned                      SysSemanticToIndex[TGSI_SEMANTIC_COUNT];
-   union tgsi_exec_channel       SystemValue[TGSI_MAX_MISC_INPUTS];
+   struct tgsi_exec_vector       SystemValue[TGSI_MAX_MISC_INPUTS];

     struct tgsi_exec_vector       *Addrs;
     struct tgsi_exec_vector       *Predicates;


Reviewed-by: Brian Paul <[email protected]>

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to