Experimental: Support SPV_KHR_untyped_pointers
- Dominant language
- LLVM
- Stars
- 729
- Forks
- 110
- Avg merge
- 17h 51m
- Merged PRs (30d)
- 23
Description
[SPV_KHR_untyped_pointers](https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/main/extensions/KHR/SPV_KHR_untyped_pointers.html) provides similar functionality in SPIR-V to opaque pointers in LLVM. There is currently no corresponding Vulkan extension, but work in clspv can begin in the interim.
Necessary changes:
* Supported SPIR-V storage classes:
* StorageBuffer/PhysicalStorageBuffer
* Uniform
* Workgroup
* Implicit pointer casts in affected storage classes can be left in place
* SPIRVProducer needs to layout Workgroup/local data types
* Support SPV_KHR_workgroup_memory_explicit_layout
* Add workgroup to 8- and 16-bit storage options
* Add workgroup scalar layout option
* SPIRVProducer needs to generate new instructions
* Allocate descriptors can disregard types in most cases to share more descriptors
* Probably the untyped variable should just use a placeholder data type (I expect Vulkan to require some type on the variable)
* Maybe use uint4 for simplicity to work with every storage class
* Direct resource access might be less necessary
* Others?
Contributor guide
Assessment
This issue has not been assessed yet.