Class VkRayTracingPipelineCreateInfoKHR

java.lang.Object
org.lwjgl.system.Pointer.Default
org.lwjgl.system.Struct<VkRayTracingPipelineCreateInfoKHR>
org.lwjgl.vulkan.VkRayTracingPipelineCreateInfoKHR
All Implemented Interfaces:
AutoCloseable, org.lwjgl.system.NativeResource, org.lwjgl.system.Pointer

public class VkRayTracingPipelineCreateInfoKHR extends org.lwjgl.system.Struct<VkRayTracingPipelineCreateInfoKHR> implements org.lwjgl.system.NativeResource
Structure specifying parameters of a newly created ray tracing pipeline.
Description

The parameters basePipelineHandle and basePipelineIndex are described in more detail in Pipeline Derivatives.

When PIPELINE_CREATE_LIBRARY_BIT_KHR is specified, this pipeline defines a pipeline library which cannot be bound as a ray tracing pipeline directly. Instead, pipeline libraries define common shaders and shader groups which can be included in future pipeline creation.

If pipeline libraries are included in pLibraryInfo, shaders defined in those libraries are treated as if they were defined as additional entries in pStages, appended in the order they appear in the pLibraries array and in the pStages array when those libraries were defined.

When referencing shader groups in order to obtain a shader group handle, groups defined in those libraries are treated as if they were defined as additional entries in pGroups, appended in the order they appear in the pLibraries array and in the pGroups array when those libraries were defined. The shaders these groups reference are set when the pipeline library is created, referencing those specified in the pipeline library, not in the pipeline that includes it.

The default stack size for a pipeline if DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR is not provided is computed as described in Ray Tracing Pipeline Stack.

If a VkPipelineCreateFlags2CreateInfoKHR structure is present in the pNext chain, VkPipelineCreateFlags2CreateInfoKHR::flags from that structure is used instead of flags from this structure.

Valid Usage
  • If the pNext chain does not include a VkPipelineCreateFlags2CreateInfoKHR structure, flags must be a valid combination of VkPipelineCreateFlagBits values
  • If flags contains the PIPELINE_CREATE_DERIVATIVE_BIT flag, and basePipelineIndex is -1, basePipelineHandle must be a valid ray tracing VkPipeline handle
  • If flags contains the PIPELINE_CREATE_DERIVATIVE_BIT flag, and basePipelineHandle is NULL_HANDLE, basePipelineIndex must be a valid index into the calling command’s pCreateInfos parameter
  • If flags contains the PIPELINE_CREATE_DERIVATIVE_BIT flag, basePipelineIndex must be -1 or basePipelineHandle must be NULL_HANDLE
  • If a push constant block is declared in a shader, a push constant range in layout must match both the shader stage and range
  • If a resource variables is declared in a shader, a descriptor slot in layout must match the shader stage
  • If a resource variables is declared in a shader, and the descriptor type is not DESCRIPTOR_TYPE_MUTABLE_EXT, a descriptor slot in layout must match the descriptor type
  • If a resource variables is declared in a shader as an array, a descriptor slot in layout must match the descriptor count
Valid Usage (Implicit)
See Also

VkPipelineDynamicStateCreateInfo, VkPipelineLibraryCreateInfoKHR, VkPipelineShaderStageCreateInfo, VkRayTracingPipelineInterfaceCreateInfoKHR, VkRayTracingShaderGroupCreateInfoKHR, CreateRayTracingPipelinesKHR

Layout


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