KhronosGroup / KhronosGroup/Vulkan-Docs
Ability to create pointers to Workgroup/Shared memory in shaders
- Dominant language
- JavaScript
- Stars
- 3.3k
- Forks
- 549
- Avg merge
- 5d 5h
- Merged PRs (30d)
- 2
Description
Feature request for workgroup/shared memory pointers.
Ideally we could get pointers to workgroup/shared memory like in cuda/opencl.
```
void foo(float * ptr){
...
}
...
shared float x[32];
foo(&x);
```
On the vulkan discord there was discussion after the first vulkanized event about the fact in hardware, there are performance considerations for being able to deal with *both* shared/global pointers in a function. So for the purposes of this feature request, the only thing actually being requested is the features of PhysicalStorageBuffer, but for *just* the workgroup storage class.
This would allow us to
* re-interpret cast data
* more easily target SPIR-V as a language
* more easily write functions in GLSL (as BufferDeviceAddress/and physicalstoragebuffer allowed us to do)
Contributor guide
Research direction
Start with issue 1756 and review the requested workgroup/shared memory pointer behavior alongside the mentioned PhysicalStorageBuffer, SPIR-V, GLSL, CUDA, and OpenCL concepts. Determine the required Vulkan specification changes and how support should be described; done means the feature is specified consistently with the requested workgroup-only scope.
Written by the indexing model from the issue text.
Assessment
- Domain
- backend-api-design
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100