diff options
author | Paul Berry <stereotype441@gmail.com> | 2013-01-11 14:39:32 -0800 |
---|---|---|
committer | Paul Berry <stereotype441@gmail.com> | 2013-01-24 16:30:30 -0800 |
commit | 42a29d89fd85c86387f0d119950e243b6de76d79 (patch) | |
tree | 9eee8f2d609855dc9c6813aac84f5fdcd6786a54 /src/glsl/lower_packed_varyings.cpp | |
parent | 7d51ead56e2b97d313c6a0fda22cc930b5c41e9d (diff) | |
download | external_mesa3d-42a29d89fd85c86387f0d119950e243b6de76d79.zip external_mesa3d-42a29d89fd85c86387f0d119950e243b6de76d79.tar.gz external_mesa3d-42a29d89fd85c86387f0d119950e243b6de76d79.tar.bz2 |
glsl: Eliminate ambiguity between function ins/outs and shader ins/outs
This patch replaces the three ir_variable_mode enums:
- ir_var_in
- ir_var_out
- ir_var_inout
with the following five:
- ir_var_shader_in
- ir_var_shader_out
- ir_var_function_in
- ir_var_function_out
- ir_var_function_inout
This eliminates a frustrating ambiguity: it used to be impossible to
tell whether an ir_var_{in,out} variable was a shader in/out or a
function in/out without seeing where the variable was declared in the
IR. This complicated some optimization and lowering passes, and would
have become a problem for implementing varying structs.
In the lisp-style serialization of GLSL IR to strings performed by
ir_print_visitor.cpp and ir_reader.cpp, I've retained the names "in",
"out", and "inout" for function parameters, to avoid introducing code
churn to the src/glsl/builtins/ir/ directory.
Note: a couple of comments in the code seemed to indicate that we were
planning for a possible future in which geometry shaders could have
shader-scope inout variables. Our GLSL grammar rejects shader-scope
inout variables, and I've been unable to find any evidence in the GLSL
standards documents (or extensions) that this will ever be allowed, so
I've eliminated these comments.
Reviewed-by: Carl Worth <cworth@cworth.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'src/glsl/lower_packed_varyings.cpp')
-rw-r--r-- | src/glsl/lower_packed_varyings.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/glsl/lower_packed_varyings.cpp b/src/glsl/lower_packed_varyings.cpp index 9e7f274..8f05752 100644 --- a/src/glsl/lower_packed_varyings.cpp +++ b/src/glsl/lower_packed_varyings.cpp @@ -135,8 +135,8 @@ private: ir_variable **packed_varyings; /** - * Type of varying which is being lowered in this pass (either ir_var_in or - * ir_var_out). + * Type of varying which is being lowered in this pass (either + * ir_var_shader_in or ir_var_shader_out). */ const ir_variable_mode mode; @@ -336,7 +336,7 @@ lower_packed_varyings_visitor::lower_rvalue(ir_rvalue *rvalue, unpacked_var, name)); ir_swizzle *swizzle = new(this->mem_ctx) ir_swizzle(packed_deref, swizzle_values, components); - if (this->mode == ir_var_out) { + if (this->mode == ir_var_shader_out) { ir_assignment *assignment = this->bitwise_assign_pack(swizzle, rvalue); this->main_instructions->push_tail(assignment); |