diff options
author | Jason Ekstrand <[email protected]> | 2014-12-08 17:34:52 -0800 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2015-01-15 07:20:21 -0800 |
commit | 534d145e5ea039d57833395a36eed90721f6b272 (patch) | |
tree | 0e08819ec9aa87417e8a5fe499e75828cbfa1406 /src/glsl/nir/glsl_to_nir.cpp | |
parent | 6a5604ca6a7346278188cb05996444a5091070b5 (diff) |
nir: Use a source for uniform buffer indices instead of an index
In GLSL-to-NIR we were just setting the base index to 0 whenever there was
an indirect so having it expressed as a sum makes no sense. Also, while a
base offset may make sense for the memory location (first element in the
array, etc.) it makes less sense for the actual uniform buffer index. This
may change later, but it seems to make more sense for now.
Reviewed-by: Connor Abbott <[email protected]>
Diffstat (limited to 'src/glsl/nir/glsl_to_nir.cpp')
-rw-r--r-- | src/glsl/nir/glsl_to_nir.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/glsl/nir/glsl_to_nir.cpp b/src/glsl/nir/glsl_to_nir.cpp index 70f0c851f2a..78070afe8e5 100644 --- a/src/glsl/nir/glsl_to_nir.cpp +++ b/src/glsl/nir/glsl_to_nir.cpp @@ -897,11 +897,11 @@ nir_visitor::visit(ir_expression *ir) } nir_intrinsic_instr *load = nir_intrinsic_instr_create(this->shader, op); load->num_components = ir->type->vector_elements; - load->const_index[0] = ir->operands[0]->as_constant()->value.u[0]; - load->const_index[1] = const_index ? const_index->value.u[0] : 0; /* base offset */ - load->const_index[2] = 1; /* number of vec4's */ + load->const_index[0] = const_index ? const_index->value.u[0] : 0; /* base offset */ + load->const_index[1] = 1; /* number of vec4's */ + load->src[0] = evaluate_rvalue(ir->operands[0]); if (!const_index) - load->src[0] = evaluate_rvalue(ir->operands[1]); + load->src[1] = evaluate_rvalue(ir->operands[1]); add_instr(&load->instr, ir->type->vector_elements); /* |