spirv: use a pointer sized int type for opencl event_t

llvm16 + opaque pointers uses a ptr to event for the opaque type,
llvm 17 fixes this properly, but the fix doesn't look too backportable.

Cc: mesa-stable
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Jesse Natalie <jenatali@microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25165>
(cherry picked from commit f423d91790)
This commit is contained in:
Dave Airlie 2023-09-11 16:53:55 +10:00 committed by Dylan Baker
parent 8ac453ea15
commit d3b688005c
2 changed files with 6 additions and 2 deletions

View file

@ -3724,7 +3724,7 @@
"description": "spirv: use a pointer sized int type for opencl event_t",
"nominated": true,
"nomination_type": 0,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": null,
"notes": null

View file

@ -1944,7 +1944,11 @@ vtn_handle_type(struct vtn_builder *b, SpvOp opcode,
case SpvOpTypeEvent:
val->type->base_type = vtn_base_type_event;
val->type->type = glsl_int_type();
/*
* this makes the event type compatible with pointer size due to LLVM 16.
* llvm 17 fixes this properly, but with 16 and opaque ptrs it's still wrong.
*/
val->type->type = b->shader->info.cs.ptr_size == 64 ? glsl_int64_t_type() : glsl_int_type();
break;
case SpvOpTypeDeviceEvent: