Nabla icon indicating copy to clipboard operation
Nabla copied to clipboard

Pipeline Libraries

Open devshgraphicsprogramming opened this issue 10 months ago • 0 comments

Description

A pipeline library is a special pipeline that was created using the VK_PIPELINE_CREATE_LIBRARY_BIT_KHR and cannot be bound, instead it defines a set of pipeline state which can be linked into other pipelines. https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#pipelines-library

Description of the related problem

Bits of pipelines are reusable but right now pipelines are not granular enough.

Solution proposal

The spec is a mess, it needs to be a separate object, almost a new asset class like something inbetween an IShader (to come in #839 ) and the ITypePipeline, basically ITypePipelineLibrary.

We don't need the pipeline creation bits of VK_PIPELINE_CREATE_LIBRARY_BIT_KHR

The application must maintain the lifetime of a pipeline library based on the pipelines that link with it.

Its almost like our old Specialized Shader.

We probably don't need VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT exposed as well, cause thats just a flag one passes whenever one creates a pipeline from libraries and those libraries were made with shader stage identifiers instead of spir-v. https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-06855

Additional context

Annoying thing, certain flags are common to Pipelines and Libraries, and have to match 🤦 https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VUID-VkRayTracingPipelineCreateInfoKHR-flags-04720