Browse Source

tgsi_to_nir: Restructure system value loads.

Minor cleanup to the way system value loads work in tgsi_to_nir.

Signed-Off-By: Timur Kristóf <timur.kristof@gmail.com>
Tested-by: Andre Heider <a.heider@gmail.com>
Tested-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
tags/19.1-branchpoint
Timur Kristóf 6 years ago
parent
commit
840c7d1ebd
1 changed files with 6 additions and 10 deletions
  1. 6
    10
      src/gallium/auxiliary/nir/tgsi_to_nir.c

+ 6
- 10
src/gallium/auxiliary/nir/tgsi_to_nir.c View File

break; break;


case TGSI_FILE_SYSTEM_VALUE: { case TGSI_FILE_SYSTEM_VALUE: {
nir_intrinsic_instr *load;
nir_intrinsic_op op; nir_intrinsic_op op;
unsigned ncomp = 1;
nir_ssa_def *load;


assert(!indirect); assert(!indirect);
assert(!dim); assert(!dim);
switch (c->scan->system_value_semantic_name[index]) { switch (c->scan->system_value_semantic_name[index]) {
case TGSI_SEMANTIC_VERTEXID_NOBASE: case TGSI_SEMANTIC_VERTEXID_NOBASE:
op = nir_intrinsic_load_vertex_id_zero_base; op = nir_intrinsic_load_vertex_id_zero_base;
load = nir_load_vertex_id_zero_base(b);
break; break;
case TGSI_SEMANTIC_VERTEXID: case TGSI_SEMANTIC_VERTEXID:
op = nir_intrinsic_load_vertex_id; op = nir_intrinsic_load_vertex_id;
load = nir_load_vertex_id(b);
break; break;
case TGSI_SEMANTIC_BASEVERTEX: case TGSI_SEMANTIC_BASEVERTEX:
op = nir_intrinsic_load_base_vertex; op = nir_intrinsic_load_base_vertex;
load = nir_load_base_vertex(b);
break; break;
case TGSI_SEMANTIC_INSTANCEID: case TGSI_SEMANTIC_INSTANCEID:
op = nir_intrinsic_load_instance_id; op = nir_intrinsic_load_instance_id;
load = nir_load_instance_id(b);
break; break;
default: default:
unreachable("bad system value"); unreachable("bad system value");
} }


load = nir_intrinsic_instr_create(b->shader, op);
load->num_components = ncomp;

nir_ssa_dest_init(&load->instr, &load->dest, ncomp, 32, NULL);
nir_builder_instr_insert(b, &load->instr);

src = nir_src_for_ssa(&load->dest.ssa);

src = nir_src_for_ssa(load);
b->shader->info.system_values_read |= b->shader->info.system_values_read |=
(1 << nir_system_value_from_intrinsic(op)); (1 << nir_system_value_from_intrinsic(op));



Loading…
Cancel
Save