Structures

VkPipelineRobustnessCreateInfoEXT

Structure controlling the robustness of a newly created pipeline shader stage

The VkPipelineRobustnessCreateInfoEXT structure is defined as:

typedef struct VkPipelineRobustnessCreateInfoEXT {
    VkStructureType sType;
    const void* pNext;
    VkPipelineRobustnessBufferBehaviorEXT storageBuffers;
    VkPipelineRobustnessBufferBehaviorEXT uniformBuffers;
    VkPipelineRobustnessBufferBehaviorEXT vertexInputs;
    VkPipelineRobustnessImageBehaviorEXT images;
} VkPipelineRobustnessCreateInfoEXT;
  • sType is a VkStructureType value identifying this structure.
  • pNext is NULL or a pointer to a structure extending this structure.
  • storageBuffers sets the behavior of out of bounds accesses made to resources bound as:
    • VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
    • VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
    • VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
  • uniformBuffers describes the behavior of out of bounds accesses made to resources bound as:
    • VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
    • VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
    • VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
    • VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
  • vertexInputs describes the behavior of out of bounds accesses made to vertex input attributes
  • images describes the behavior of out of bounds accesses made to resources bound as:
    • VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
    • VK_DESCRIPTOR_TYPE_STORAGE_IMAGE

Resources bound as VK_DESCRIPTOR_TYPE_MUTABLE_EXT will have the robustness behavior that covers its active descriptor type.

The scope of the effect of VkPipelineRobustnessCreateInfoEXT depends on which structure’s pNext chain it is included in.

  • VkGraphicsPipelineCreateInfo, VkRayTracingPipelineCreateInfoKHR, VkComputePipelineCreateInfo:\
    The robustness behavior described by VkPipelineRobustnessCreateInfoEXT applies to all accesses through this pipeline
  • VkPipelineShaderStageCreateInfo:\
    The robustness behavior described by VkPipelineRobustnessCreateInfoEXT applies to all accesses emanating from the shader code of this shader stage

If VkPipelineRobustnessCreateInfoEXT is specified for both a pipeline and a pipeline stage, the VkPipelineRobustnessCreateInfoEXT specified for the pipeline stage will take precedence.

When VkPipelineRobustnessCreateInfoEXT is specified for a pipeline, it only affects the subset of the pipeline that is specified by the create info, as opposed to subsets linked from pipeline libraries. For VkGraphicsPipelineCreateInfo, that subset is specified by VkGraphicsPipelineLibraryCreateInfoEXT::flags. For VkRayTracingPipelineCreateInfoKHR, that subset is specified by the specific stages in VkRayTracingPipelineCreateInfoKHR::pStages.

Valid Usage

VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06926

If the pipelineRobustness feature is not enabled, storageBuffers must be VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT

VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06927

If the pipelineRobustness feature is not enabled, uniformBuffers must be VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT

VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06928

If the pipelineRobustness feature is not enabled, vertexInputs must be VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT

VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06929

If the pipelineRobustness feature is not enabled, images must be VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT

VUID-VkPipelineRobustnessCreateInfoEXT-robustImageAccess-06930

If the robustImageAccess feature is not supported, images must not be VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT

VUID-VkPipelineRobustnessCreateInfoEXT-robustBufferAccess2-06931

If the robustBufferAccess2 feature is not supported, storageBuffers must not be VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT

VUID-VkPipelineRobustnessCreateInfoEXT-robustBufferAccess2-06932

If the robustBufferAccess2 feature is not supported, uniformBuffers must not be VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT

VUID-VkPipelineRobustnessCreateInfoEXT-robustBufferAccess2-06933

If the robustBufferAccess2 feature is not supported, vertexInputs must not be VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT

VUID-VkPipelineRobustnessCreateInfoEXT-robustImageAccess2-06934

If the robustImageAccess2 feature is not supported, images must not be VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT