summaryrefslogtreecommitdiffstats
path: root/src/compiler/spirv/vtn_cfg.c
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2017-12-07 23:42:14 -0800
committerJason Ekstrand <[email protected]>2017-12-12 07:34:46 -0800
commite6ba457c9991490d2762d217d32b08f337e3dfbc (patch)
treea2c16a5041a91316c1df26b2f9f9f5457a4322de /src/compiler/spirv/vtn_cfg.c
parentaaeda8d7d4e78e9f9fb63c3ec6879a436871f51e (diff)
spirv/cfg: Be a bit more precise about function parameters
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.
Diffstat (limited to 'src/compiler/spirv/vtn_cfg.c')
-rw-r--r--src/compiler/spirv/vtn_cfg.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/compiler/spirv/vtn_cfg.c b/src/compiler/spirv/vtn_cfg.c
index 8ddd0f4a40d..182251358c9 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;