From: Dave Airlie <airl...@redhat.com> 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 <airl...@redhat.com> --- 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; -- 2.5.5 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev