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 <jason@jlekstrand.net>
This commit is contained in:
Dave Airlie 2019-11-20 08:33:10 +10:00
parent b62a925ad1
commit 5375c30234
1 changed files with 4 additions and 1 deletions

View File

@ -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),
};
}