From 5375c302347396666aa325bf67fbf7b972f7aca2 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 20 Nov 2019 08:33:10 +1000 Subject: [PATCH] spirv: get the correct type for function returns. This needs to be derived from the address format, not always 1/32. Suggested by Jason Reviewed-by: Jason Ekstrand --- src/compiler/spirv/vtn_cfg.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/compiler/spirv/vtn_cfg.c b/src/compiler/spirv/vtn_cfg.c index cf67893c6c8..67c3245126d 100644 --- a/src/compiler/spirv/vtn_cfg.c +++ b/src/compiler/spirv/vtn_cfg.c @@ -274,9 +274,12 @@ vtn_cfg_handle_prepass_instruction(struct vtn_builder *b, SpvOp opcode, unsigned idx = 0; if (func_type->return_type->base_type != vtn_base_type_void) { + nir_address_format addr_format = + vtn_mode_to_address_format(b, vtn_variable_mode_function); /* The return value is a regular pointer */ func->params[idx++] = (nir_parameter) { - .num_components = 1, .bit_size = 32, + .num_components = nir_address_format_num_components(addr_format), + .bit_size = nir_address_format_bit_size(addr_format), }; } -- 2.30.2