VkPipelineRobustnessCreateInfo
The VkPipelineRobustnessCreateInfo
structure is defined as:
typedef struct VkPipelineRobustnessCreateInfo {
VkStructureType sType;
const void* pNext;
VkPipelineRobustnessBufferBehavior storageBuffers;
VkPipelineRobustnessBufferBehavior uniformBuffers;
VkPipelineRobustnessBufferBehavior vertexInputs;
VkPipelineRobustnessImageBehavior images;
} VkPipelineRobustnessCreateInfo;
or the equivalent
typedef VkPipelineRobustnessCreateInfo VkPipelineRobustnessCreateInfoEXT;
sType
is a VkStructureType value identifying this structure.pNext
isNULL
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 attributesimages
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 VkPipelineRobustnessCreateInfo
depends on
which structure’s pNext
chain it is included in.
VkGraphicsPipelineCreateInfo
,VkRayTracingPipelineCreateInfoKHR
,VkComputePipelineCreateInfo
:\
The robustness behavior described byVkPipelineRobustnessCreateInfo
applies to all accesses through this pipelineVkPipelineShaderStageCreateInfo
:\
The robustness behavior described byVkPipelineRobustnessCreateInfo
applies to all accesses emanating from the shader code of this shader stage
If VkPipelineRobustnessCreateInfo
is specified for both a pipeline and
a pipeline stage, the VkPipelineRobustnessCreateInfo
specified for the
pipeline stage will take precedence.
When VkPipelineRobustnessCreateInfo
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-VkPipelineRobustnessCreateInfo-pipelineRobustness-06926
If the pipelineRobustness
feature
is not enabled, storageBuffers
must be
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT
VUID-VkPipelineRobustnessCreateInfo-pipelineRobustness-06927
If the pipelineRobustness
feature
is not enabled, uniformBuffers
must be
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT
VUID-VkPipelineRobustnessCreateInfo-pipelineRobustness-06928
If the pipelineRobustness
feature
is not enabled, vertexInputs
must be
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT
VUID-VkPipelineRobustnessCreateInfo-pipelineRobustness-06929
If the pipelineRobustness
feature
is not enabled, images
must be
VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT
VUID-VkPipelineRobustnessCreateInfo-robustImageAccess-06930
If the robustImageAccess
feature
is not supported, images
must not be
VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS
VUID-VkPipelineRobustnessCreateInfo-robustBufferAccess2-06931
If the robustBufferAccess2
feature is not supported, storageBuffers
must not be
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
VUID-VkPipelineRobustnessCreateInfo-robustBufferAccess2-06932
If the robustBufferAccess2
feature is not supported, uniformBuffers
must not be
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
VUID-VkPipelineRobustnessCreateInfo-robustBufferAccess2-06933
If the robustBufferAccess2
feature is not supported, vertexInputs
must not be
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
VUID-VkPipelineRobustnessCreateInfo-robustImageAccess2-06934
If the robustImageAccess2
feature
is not supported, images
must not be
VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2
VUID-VkPipelineRobustnessCreateInfo-storageBuffers-10636
If storageBuffers
is
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
or
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
, and
either descriptorBindingStorageBufferUpdateAfterBind
or
descriptorBindingStorageTexelBufferUpdateAfterBind
is enabled on
the device, robustBufferAccessUpdateAfterBind
must be VK_TRUE
VUID-VkPipelineRobustnessCreateInfo-uniformBuffers-10637
If uniformBuffers
is
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS
or
VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2
, and
either
descriptorBindingInlineUniformBlockUpdateAfterBind
,
descriptorBindingUniformBufferUpdateAfterBind
or
descriptorBindingUniformTexelBufferUpdateAfterBind
is enabled on
the device, robustBufferAccessUpdateAfterBind
must be VK_TRUE
VUID-VkPipelineRobustnessCreateInfo-images-10638
If images
is
VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS
or
VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2
, and
either descriptorBindingStorageImageUpdateAfterBind
or
descriptorBindingSampledImageUpdateAfterBind
is enabled on the
device, robustBufferAccessUpdateAfterBind
must be VK_TRUE
Valid Usage (Implicit)
VUID-VkPipelineRobustnessCreateInfo-sType-sType
sType
must be VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO
VUID-VkPipelineRobustnessCreateInfo-storageBuffers-parameter
storageBuffers
must be a valid VkPipelineRobustnessBufferBehavior value
VUID-VkPipelineRobustnessCreateInfo-uniformBuffers-parameter
uniformBuffers
must be a valid VkPipelineRobustnessBufferBehavior value
VUID-VkPipelineRobustnessCreateInfo-vertexInputs-parameter
vertexInputs
must be a valid VkPipelineRobustnessBufferBehavior value
VUID-VkPipelineRobustnessCreateInfo-images-parameter
images
must be a valid VkPipelineRobustnessImageBehavior value