Skip to content

Proposal: Introducing vkCreateRayTracingPipelinesKHR API support #85

Description

@mrparmesan01

Context & Goal

To support performing hardware-accelerated ray tracing within our wrapper, we need to have APIs that support for creating these Vulkan handles. This includes handling the boilerplate for creating handles for the ray tracing pipelines.

vulkan-cpp should only expose the parameters that are going to be necessary for the user to create their handles and automatically use them to perform some operation with minimal setup.

This issue is to introduce API's for specifically the ray tracing pipeline where we may wrap around the creating the pipeline handles created via VkRayTracingPipelineCreateInfoKHR.

Enabling Ray Tracing Pipelines

We would need to enable the VK_KHR_ray_tracing_pipeline extension to have this be enabled.

Parameters to set for vkCreateRayTracingPipelineKHR

typedef struct VkRayTracingPipelineCreateInfoKHR {
    VkStructureType                                      sType;
    const void*                                          pNext;
    VkPipelineCreateFlags                                flags;
    uint32_t                                             stageCount;
    const VkPipelineShaderStageCreateInfo*               pStages;
    uint32_t                                             groupCount;
    const VkRayTracingShaderGroupCreateInfoKHR*          pGroups;
    uint32_t                                             maxPipelineRayRecursionDepth;
    const VkPipelineLibraryCreateInfoKHR*                pLibraryInfo;
    const VkRayTracingPipelineInterfaceCreateInfoKHR*    pLibraryInterface;
    const VkPipelineDynamicStateCreateInfo*              pDynamicState;
    VkPipelineLayout                                     layout;
    VkPipeline                                           basePipelineHandle;
    int32_t                                              basePipelineIndex;
} VkRayTracingPipelineCreateInfoKHR;

Expected for Task Completion

This proposal will require a stable working wrapper that allows for immediate successfully in creating a ray tracing pipeline with minimal effort.

As for what form that will take, is tbd as the API designs and how these gets created are going to be updated via a comment for this issue or part of the details associated with the PR for this issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    📐designTasks that involve the core systems. Highly involve in API design.

    Fields

    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions