[Mesa-dev] [PATCH v2 04/78] i965/nir/vec4: Add setup of input variables in NIR->vec4 pass
Eduardo Lima Mitev
elima at igalia.com
Thu Jul 23 03:16:44 PDT 2015
This implementation sets up a map of input variable offsets to source registers
that are already initialized with the corresponding register offset.
This map will then be queried when processing load_input intrinsic operations,
to obtain the correct register source from which the input data will be loaded.
---
src/mesa/drivers/dri/i965/brw_vec4.h | 2 ++
src/mesa/drivers/dri/i965/brw_vec4_nir.cpp | 11 ++++++++++-
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h b/src/mesa/drivers/dri/i965/brw_vec4.h
index 6e40922..2ee841d 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4.h
+++ b/src/mesa/drivers/dri/i965/brw_vec4.h
@@ -407,6 +407,8 @@ public:
virtual void nir_emit_jump(nir_jump_instr *instr);
virtual void nir_emit_texture(nir_tex_instr *instr);
+ src_reg *nir_inputs;
+
protected:
void emit_vertex();
void lower_attributes_to_hw_regs(const int *attribute_map,
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
index 7ec2978..15a1805 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
@@ -68,7 +68,16 @@ vec4_visitor::nir_setup_system_values(nir_shader *shader)
void
vec4_visitor::nir_setup_inputs(nir_shader *shader)
{
- /* @TODO: Not yet implemented */
+ nir_inputs = ralloc_array(mem_ctx, src_reg, shader->num_inputs);
+
+ foreach_list_typed(nir_variable, var, node, &shader->inputs) {
+ int offset = var->data.driver_location;
+ unsigned size = type_size(var->type);
+ for (unsigned i = 0; i < size; i++) {
+ src_reg src = src_reg(ATTR, var->data.location + i, var->type);
+ nir_inputs[offset + i] = src;
+ }
+ }
}
void
--
2.1.4
More information about the mesa-dev
mailing list