KhronosGroup / KhronosGroup/Vulkan-Docs
Request for compute shader tile memory support
- Dominant language
- JavaScript
- Stars
- 3.3k
- Forks
- 549
- Avg merge
- 5d 5h
- Merged PRs (30d)
- 2
Description
Today saw the release of `VK_EXT_shader_tile_image`. This provides a new way for fragment shaders to access tile memory without all the formality of subpasses. It's a great step forward, but there's something missing
Compute shaders form the basis of many modern rendering techniques, including deferred lighting. However, mobile developers are forced to use fragment shaders to implement these techniques because there's no way for compute shaders to access tile memory
As an example of a more complex technique, consider the light propagation volume implementation from my personal renderer. I use a fragment shader to examine the RSM images and generate the virtual point light list in order to keep the RSM images in tile memory. This is very fast, but I'm forced to use a fragment shader with no color writes on a fullscreen triangle. CPU code [here](https://github.com/DethRaid/AndroidRenderer/blob/master/RenderCore/render/light_propagation_volume.cpp#L354), GPU code [here](https://github.com/DethRaid/AndroidRenderer/blob/master/RenderCore/shaders/lpv/rsm_generate_vpls.frag)
I'd like to request that Vulkan expose a way for compute shaders to read from and write to tile memory
Contributor guide
Research direction
Start by reading the VK_EXT_shader_tile_image context and the linked RenderCore/render/light_propagation_volume.cpp and RenderCore/shaders/lpv/rsm_generate_vpls.frag examples. Compare the fragment-shader approach with the requested compute-shader access to tile memory. Done means the Vulkan API design and required specification changes are defined and accepted.
Written by the indexing model from the issue text.
Assessment
- Domain
- computer-graphics, mobile-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100