Function Prototype

vkCreateRayTracingPipelinesNV

Creates a new ray tracing pipeline object

To create ray tracing pipelines, call:

VkResult vkCreateRayTracingPipelinesNV(
    VkDevice device,
    VkPipelineCache pipelineCache,
    uint32_t createInfoCount,
    const VkRayTracingPipelineCreateInfoNV* pCreateInfos,
    const VkAllocationCallbacks* pAllocator,
    VkPipeline* pPipelines);
  • device is the logical device that creates the ray tracing pipelines.
  • pipelineCache is either VK_NULL_HANDLE, indicating that pipeline caching is disabled, or the handle of a valid pipeline cache object, in which case use of that cache is enabled for the duration of the command.
  • createInfoCount is the length of the pCreateInfos and pPipelines arrays.
  • pCreateInfos is a pointer to an array of VkRayTracingPipelineCreateInfoNV structures.
  • pAllocator controls host memory allocation as described in the Memory Allocation chapter.
  • pPipelines is a pointer to an array in which the resulting ray tracing pipeline objects are returned.

Pipelines are created and returned as described for Multiple Pipeline Creation.

Valid Usage

VUID-vkCreateRayTracingPipelinesNV-device-09677

device must support at least one queue family with the VK_QUEUE_COMPUTE_BIT capability

VUID-vkCreateRayTracingPipelinesNV-flags-03415

If the flags member of any element of pCreateInfos contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the basePipelineIndex member of that same element is not -1, basePipelineIndex must be less than the index into pCreateInfos that corresponds to that element

VUID-vkCreateRayTracingPipelinesNV-flags-03416

If the flags member of any element of pCreateInfos contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, the base pipeline must have been created with the VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT flag set

VUID-vkCreateRayTracingPipelinesNV-flags-03816

flags must not contain the VK_PIPELINE_CREATE_DISPATCH_BASE flag

VUID-vkCreateRayTracingPipelinesNV-pipelineCache-02903

If pipelineCache was created with VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT, host access to pipelineCache must be externally synchronized

VUID-vkCreateRayTracingPipelinesNV-pNext-09616

If VkPipelineBinaryInfoKHR::binaryCount is not 0 for any element of pCreateInfos, pipelineCache must be VK_NULL_HANDLE

VUID-vkCreateRayTracingPipelinesNV-pNext-09617

If a VkPipelineCreateFlags2CreateInfoKHR structure with the VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR flag set is included in the pNext chain of any element of pCreateInfos, pipelineCache must be VK_NULL_HANDLE

VUID-vkCreateRayTracingPipelinesNV-binaryCount-09620

If VkPipelineBinaryInfoKHR::binaryCount is not 0 for any element of pCreateInfos, VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BITmust not be set in the flags of that element

VUID-vkCreateRayTracingPipelinesNV-binaryCount-09621

If VkPipelineBinaryInfoKHR::binaryCount is not 0 for any element of pCreateInfos, VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT must not be set in the flags of that element

VUID-vkCreateRayTracingPipelinesNV-binaryCount-09622

If VkPipelineBinaryInfoKHR::binaryCount is not 0 for any element of pCreateInfos, VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT must not be set in the flags of that element

VUID-vkCreateRayTracingPipelinesNV-pNext-10150

If a VkPipelineCreateFlags2CreateInfoKHR structure is included in the pNext chain of any element of pCreateInfos, VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR flag must not be set

Valid Usage (Implicit)

VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parameter

If pipelineCache is not VK_NULL_HANDLE, pipelineCache must be a valid VkPipelineCache handle

VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-parameter

pCreateInfos must be a valid pointer to an array of createInfoCount valid VkRayTracingPipelineCreateInfoNV structures

VUID-vkCreateRayTracingPipelinesNV-pAllocator-parameter

If pAllocator is not NULL, pAllocator must be a valid pointer to a valid VkAllocationCallbacks structure

VUID-vkCreateRayTracingPipelinesNV-pPipelines-parameter

pPipelines must be a valid pointer to an array of createInfoCount VkPipeline handles

VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent

If pipelineCache is a valid handle, it must have been created, allocated, or retrieved from device