KhronosGroup / KhronosGroup/Vulkan-Docs

Request for compute shader tile memory support

Open
#2,093 2 comments 7 reactions 0 assignees View on GitHub
Feature Request
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.