Reviewed-by: Iago Toral Quiroga <ito...@igalia.com> On Mon, 2015-09-07 at 00:30 -0700, Kenneth Graunke wrote: > This code is all pretty much identical. We just needed the translation > from one enum value to the other. > > Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> > --- > src/mesa/drivers/dri/i965/brw_fs_nir.cpp | 47 > +++++++----------------------- > src/mesa/drivers/dri/i965/brw_vec4_nir.cpp | 30 +++++-------------- > 2 files changed, 17 insertions(+), 60 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > index 419ab6d..dbf10d6 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp > @@ -1408,35 +1408,16 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, > nir_intrinsic_instr *instr > case nir_intrinsic_load_vertex_id: > unreachable("should be lowered by lower_vertex_id()"); > > - case nir_intrinsic_load_vertex_id_zero_base: { > - fs_reg vertex_id = nir_system_values[SYSTEM_VALUE_VERTEX_ID_ZERO_BASE]; > - assert(vertex_id.file != BAD_FILE); > - dest.type = vertex_id.type; > - bld.MOV(dest, vertex_id); > - break; > - } > - > - case nir_intrinsic_load_base_vertex: { > - fs_reg base_vertex = nir_system_values[SYSTEM_VALUE_BASE_VERTEX]; > - assert(base_vertex.file != BAD_FILE); > - dest.type = base_vertex.type; > - bld.MOV(dest, base_vertex); > - break; > - } > - > - case nir_intrinsic_load_instance_id: { > - fs_reg instance_id = nir_system_values[SYSTEM_VALUE_INSTANCE_ID]; > - assert(instance_id.file != BAD_FILE); > - dest.type = instance_id.type; > - bld.MOV(dest, instance_id); > - break; > - } > - > - case nir_intrinsic_load_sample_mask_in: { > - fs_reg sample_mask_in = nir_system_values[SYSTEM_VALUE_SAMPLE_MASK_IN]; > - assert(sample_mask_in.file != BAD_FILE); > - dest.type = sample_mask_in.type; > - bld.MOV(dest, sample_mask_in); > + case nir_intrinsic_load_vertex_id_zero_base: > + case nir_intrinsic_load_base_vertex: > + case nir_intrinsic_load_instance_id: > + case nir_intrinsic_load_sample_mask_in: > + case nir_intrinsic_load_sample_id: { > + gl_system_value sv = nir_system_value_from_intrinsic(instr->intrinsic); > + fs_reg val = nir_system_values[sv]; > + assert(val.file != BAD_FILE); > + dest.type = val.type; > + bld.MOV(dest, val); > break; > } > > @@ -1449,14 +1430,6 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, > nir_intrinsic_instr *instr > break; > } > > - case nir_intrinsic_load_sample_id: { > - fs_reg sample_id = nir_system_values[SYSTEM_VALUE_SAMPLE_ID]; > - assert(sample_id.file != BAD_FILE); > - dest.type = sample_id.type; > - bld.MOV(dest, sample_id); > - break; > - } > - > case nir_intrinsic_load_uniform_indirect: > has_indirect = true; > /* fallthrough */ > diff --git a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp > b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp > index f3dc112..751ec73 100644 > --- a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp > +++ b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp > @@ -533,30 +533,14 @@ vec4_visitor::nir_emit_intrinsic(nir_intrinsic_instr > *instr) > case nir_intrinsic_load_vertex_id: > unreachable("should be lowered by lower_vertex_id()"); > > - case nir_intrinsic_load_vertex_id_zero_base: { > - src_reg vertex_id = > - src_reg(nir_system_values[SYSTEM_VALUE_VERTEX_ID_ZERO_BASE]); > - assert(vertex_id.file != BAD_FILE); > - dest = get_nir_dest(instr->dest, vertex_id.type); > - emit(MOV(dest, vertex_id)); > - break; > - } > - > - case nir_intrinsic_load_base_vertex: { > - src_reg base_vertex = > - src_reg(nir_system_values[SYSTEM_VALUE_BASE_VERTEX]); > - assert(base_vertex.file != BAD_FILE); > - dest = get_nir_dest(instr->dest, base_vertex.type); > - emit(MOV(dest, base_vertex)); > - break; > - } > - > + case nir_intrinsic_load_vertex_id_zero_base: > + case nir_intrinsic_load_base_vertex: > case nir_intrinsic_load_instance_id: { > - src_reg instance_id = > - src_reg(nir_system_values[SYSTEM_VALUE_INSTANCE_ID]); > - assert(instance_id.file != BAD_FILE); > - dest = get_nir_dest(instr->dest, instance_id.type); > - emit(MOV(dest, instance_id)); > + gl_system_value sv = nir_system_value_from_intrinsic(instr->intrinsic); > + src_reg val = src_reg(nir_system_values[sv]); > + assert(val.file != BAD_FILE); > + dest = get_nir_dest(instr->dest, val.type); > + emit(MOV(dest, val)); > break; > } >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev