mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-26 19:20:08 +01:00
tgsi: move to using vector for system values.
For compute support some of the system values are .xyz types, so move to using a vector instead of a single channel. [airlied: squash swizzle fix from compute series]. Reviewed-by: Brian Paul <brianp@vmware.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
9013d9267c
commit
912ed84f83
4 changed files with 7 additions and 7 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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++) {
|
||||
|
|
|
|||
|
|
@ -1282,7 +1282,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[swizzle].u[i];
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue