KhronosGroup / Vulkan-Docs

The Vulkan API Specification and related tools
Other
2.72k stars 457 forks source link

Ability to execute shaders from within shaders outside of raytracing #1758

Open Cazadorro opened 2 years ago

Cazadorro commented 2 years ago

Currently we can (and are required to) execute shaders from within shaders with vulkan raytracing https://nvpro-samples.github.io/vk_raytracing_tutorial_KHR/

And Nvidia devices have supported this functionality in compute for the better part of a decade.

Metal also supports this functionality in the kind of general context asked for here.

This feature request asks for the ability to execute, at the very least compute shaders from within other compute shaders.

marty-johnson59 commented 2 years ago

@cazadorro, thanks for the input and sorry for the delayed reply. We are just now gearing up for the next round of projects, and will add this request to the discussion queue to determine how it fits into plans/priorities.

fhoenig commented 1 year ago

I'd love to see this feature as well in VK.

mbarriault commented 1 year ago

Has there been any movement on this? We have a feature idea we'd love to implement but is going to require callable shaders in raster pipelines to do efficiently.

DethRaid commented 5 months ago

Nvidia's Device Generated Commands extension lets the GPU write an indirect command buffer that contains pipeline binding in addition to resource bindings and drawcalls. AMD's Shader Enqueue extension lets you prepare a graph of compute shaders, and dynamically decide which nodes in the graph to push work to. Neither get us all the way to callable shaders in raster pipelines, but they're steps in the right direction imo