mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 07:28:11 +02:00
spirv: Allow constants and NULLs in SpvOpConvertUToPtr
We were accidentally asserting that the value had to be a vtn_ssa_value which isn't true if it, for instance, comes from a spec constant. Fixes:fb282a68bc"spirv: Implement OpConvertPtrToU and OpConvertUToPtr" Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com> Acked-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4675> (cherry picked from commit64e4297629)
This commit is contained in:
parent
a2776c24c7
commit
cacb0c0268
2 changed files with 4 additions and 3 deletions
|
|
@ -1255,7 +1255,7 @@
|
|||
"description": "spirv: Allow constants and NULLs in SpvOpConvertUToPtr",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": "fb282a68bc46a1e28eaedb2670be241401f2b9da"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -2751,7 +2751,7 @@ vtn_handle_variables(struct vtn_builder *b, SpvOp opcode,
|
|||
case SpvOpConvertUToPtr: {
|
||||
struct vtn_value *ptr_val =
|
||||
vtn_push_value(b, w[2], vtn_value_type_pointer);
|
||||
struct vtn_value *u_val = vtn_value(b, w[3], vtn_value_type_ssa);
|
||||
struct vtn_value *u_val = vtn_untyped_value(b, w[3]);
|
||||
|
||||
vtn_fail_if(ptr_val->type->type == NULL,
|
||||
"OpConvertUToPtr can only be used on physical pointers");
|
||||
|
|
@ -2761,7 +2761,8 @@ vtn_handle_variables(struct vtn_builder *b, SpvOp opcode,
|
|||
"OpConvertUToPtr can only be used to cast from a vector or "
|
||||
"scalar type");
|
||||
|
||||
nir_ssa_def *ptr_ssa = nir_sloppy_bitcast(&b->nb, u_val->ssa->def,
|
||||
struct vtn_ssa_value *u_ssa = vtn_ssa_value(b, w[3]);
|
||||
nir_ssa_def *ptr_ssa = nir_sloppy_bitcast(&b->nb, u_ssa->def,
|
||||
ptr_val->type->type);
|
||||
ptr_val->pointer = vtn_pointer_from_ssa(b, ptr_ssa, ptr_val->type);
|
||||
vtn_foreach_decoration(b, ptr_val, ptr_decoration_cb, ptr_val->pointer);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue