[Mesa-dev] [PATCH 2/4] spirv/cfg: Be a bit more precise about function parameters

Jason Ekstrand jason at jlekstrand.net
Fri Dec 8 07:42:14 UTC 2017


Pointers with no storage type are converted to inout variables but SSA
values and pointers with a storage type (which turns into a uint or
uvec2) are just input variables.
---
 src/compiler/spirv/vtn_cfg.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/compiler/spirv/vtn_cfg.c b/src/compiler/spirv/vtn_cfg.c
index 25140ff..1b672bb 100644
--- a/src/compiler/spirv/vtn_cfg.c
+++ b/src/compiler/spirv/vtn_cfg.c
@@ -55,12 +55,11 @@ vtn_cfg_handle_prepass_instruction(struct vtn_builder *b, SpvOp opcode,
          if (func_type->params[i]->base_type == vtn_base_type_pointer &&
              func_type->params[i]->type == NULL) {
             func->params[i].type = func_type->params[i]->deref->type;
+            func->params[i].param_type = nir_parameter_inout;
          } else {
             func->params[i].type = func_type->params[i]->type;
+            func->params[i].param_type = nir_parameter_in;
          }
-
-         /* TODO: We could do something smarter here. */
-         func->params[i].param_type = nir_parameter_inout;
       }
 
       func->return_type = func_type->return_type->type;
-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list