blob: ab3e8c9e372363492eb556e44ef777e2c846fdc1 [file] [log] [blame]
// Copyright 2020-2021 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0
// Common Valid Usage
// Common to structs taking VkPipelineStageFlags2KHR and VkAccessFlags2KHR parameters to define scopes
// Set "stageMaskName" and "accessMaskName" attribute to the name of the stage and access mask to validate
* [[VUID-{refpage}-{accessMaskName}-03900]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR, pname:{stageMaskName}
must: include ename:VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR, or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
* [[VUID-{refpage}-{accessMaskName}-03901]]
If pname:{accessMaskName} includes ename:VK_ACCESS_2_INDEX_READ_BIT_KHR,
pname:{stageMaskName} must: include
ename:VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR, or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
* [[VUID-{refpage}-{accessMaskName}-03902]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR, pname:{stageMaskName}
must: include ename:VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR, or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
* [[VUID-{refpage}-{accessMaskName}-03903]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR, pname:{stageMaskName}
must: include ename:VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI,
ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR, or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
* [[VUID-{refpage}-{accessMaskName}-03904]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_UNIFORM_READ_BIT_KHR, pname:{stageMaskName} must:
include ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR, or one of the
etext:VK_PIPELINE_STAGE_*_SHADER_BIT stages
* [[VUID-{refpage}-{accessMaskName}-03905]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, pname:{stageMaskName}
must: include ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR, or one of the
etext:VK_PIPELINE_STAGE_*_SHADER_BIT stages
* [[VUID-{refpage}-{accessMaskName}-03906]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, pname:{stageMaskName}
must: include ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR, or one of the
etext:VK_PIPELINE_STAGE_*_SHADER_BIT stages
* [[VUID-{refpage}-{accessMaskName}-03907]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, pname:{stageMaskName}
must: include ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR, or one of the
etext:VK_PIPELINE_STAGE_*_SHADER_BIT stages
* [[VUID-{refpage}-{accessMaskName}-03908]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_SHADER_READ_BIT_KHR, pname:{stageMaskName} must:
include ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, or one
of the etext:VK_PIPELINE_STAGE_*_SHADER_BIT stages
* [[VUID-{refpage}-{accessMaskName}-03909]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_SHADER_WRITE_BIT_KHR, pname:{stageMaskName} must:
include ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR, or one of the
etext:VK_PIPELINE_STAGE_*_SHADER_BIT stages
* [[VUID-{refpage}-{accessMaskName}-03910]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR, pname:{stageMaskName}
must: include ename:VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR
ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR, or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
* [[VUID-{refpage}-{accessMaskName}-03911]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR, pname:{stageMaskName}
must: include ename:VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR
ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR, or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
* [[VUID-{refpage}-{accessMaskName}-03912]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR,
pname:{stageMaskName} must: include
ename:VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR, or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
* [[VUID-{refpage}-{accessMaskName}-03913]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR,
pname:{stageMaskName} must: include
ename:VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR, or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
* [[VUID-{refpage}-{accessMaskName}-03914]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_TRANSFER_READ_BIT_KHR, pname:{stageMaskName} must:
include ename:VK_PIPELINE_STAGE_2_COPY_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_BLIT_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
* [[VUID-{refpage}-{accessMaskName}-03915]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR, pname:{stageMaskName} must:
include ename:VK_PIPELINE_STAGE_2_COPY_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_BLIT_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
* [[VUID-{refpage}-{accessMaskName}-03916]]
If pname:{accessMaskName} includes ename:VK_ACCESS_2_HOST_READ_BIT_KHR,
pname:{stageMaskName} must: include
ename:VK_PIPELINE_STAGE_2_HOST_BIT_KHR
* [[VUID-{refpage}-{accessMaskName}-03917]]
If pname:{accessMaskName} includes ename:VK_ACCESS_2_HOST_WRITE_BIT_KHR,
pname:{stageMaskName} must: include
ename:VK_PIPELINE_STAGE_2_HOST_BIT_KHR
ifdef::VK_EXT_conditional_rendering[]
* [[VUID-{refpage}-{accessMaskName}-03918]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT,
pname:{stageMaskName} must: include
ename:VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT,
ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR, or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
endif::VK_EXT_conditional_rendering[]
ifdef::VK_EXT_fragment_density_map[]
* [[VUID-{refpage}-{accessMaskName}-03919]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT,
pname:{stageMaskName} must: include
ename:VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT,
ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR, or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
endif::VK_EXT_fragment_density_map[]
ifdef::VK_EXT_transform_feedback[]
* [[VUID-{refpage}-{accessMaskName}-03920]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT,
pname:{stageMaskName} must: include
ename:VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT,
ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR, or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
* [[VUID-{refpage}-{accessMaskName}-04747]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT,
pname:{stageMaskName} must: include
ename:VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT,
ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR, or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
* [[VUID-{refpage}-{accessMaskName}-03922]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT,
pname:{stageMaskName} must: include
ename:VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT,
ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR, or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
endif::VK_EXT_transform_feedback[]
ifdef::VK_NV_shading_rate_image[]
* [[VUID-{refpage}-{accessMaskName}-03923]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV, pname:{stageMaskName}
must: include ename:VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV,
ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR, or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
endif::VK_NV_shading_rate_image[]
ifdef::VK_HUAWEI_invocation_mask[]
* [[VUID-{refpage}-{accessMaskName}-04994]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI, pname:{stageMaskName}
must: include ename:VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI
endif::VK_HUAWEI_invocation_mask[]
ifdef::VK_NV_device_generated_commands[]
* [[VUID-{refpage}-{accessMaskName}-03924]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV, pname:{stageMaskName}
must: include ename:VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
* [[VUID-{refpage}-{accessMaskName}-03925]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV, pname:{stageMaskName}
must: include ename:VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
endif::VK_NV_device_generated_commands[]
ifdef::VK_EXT_blend_operation_advanced[]
* [[VUID-{refpage}-{accessMaskName}-03926]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT,
pname:{stageMaskName} must: include
ename:VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR
ename:VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR, or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
endif::VK_EXT_blend_operation_advanced[]
ifdef::VK_KHR_acceleration_structure,VK_NV_ray_tracing[]
* [[VUID-{refpage}-{accessMaskName}-03927]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
pname:{stageMaskName} must: include
ename:VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR, or one of the
etext:VK_PIPELINE_STAGE_*_SHADER_BIT stages
* [[VUID-{refpage}-{accessMaskName}-03928]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR,
pname:{stageMaskName} must: include
ename:VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR or
ename:VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
ifndef::VK_KHR_ray_query[]
ifdef::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
* [[VUID-{refpage}-{accessMaskName}-06254]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
pname:{stageMaskName} must: not include any of the
etext:VK_PIPELINE_STAGE_*_SHADER_BIT stages except
ename:VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
endif::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
ifndef::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
* [[VUID-{refpage}-{accessMaskName}-06255]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
pname:{stageMaskName} must: not include any of the
etext:VK_PIPELINE_STAGE_*_SHADER_BIT stages
endif::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
endif::VK_KHR_ray_query[]
ifdef::VK_KHR_ray_query[]
ifdef::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
* [[VUID-{refpage}-{accessMaskName}-06256]]
If <<features-rayQuery,pname:rayQuery>> is not enabled and
pname:{accessMaskName} includes
ename:VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
pname:{stageMaskName} must: not include any of the
etext:VK_PIPELINE_STAGE_*_SHADER_BIT stages except
ename:VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
endif::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
ifndef::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
* [[VUID-{refpage}-{accessMaskName}-06257]]
If <<features-rayQuery,pname:rayQuery>> is not enabled and
pname:{accessMaskName} includes
ename:VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR,
pname:{stageMaskName} must: not include any of the
etext:VK_PIPELINE_STAGE_*_SHADER_BIT stages
endif::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
endif::VK_KHR_ray_query[]
endif::VK_KHR_acceleration_structure,VK_NV_ray_tracing[]
ifdef::VK_KHR_video_decode_queue[]
* [[VUID-{refpage}-{accessMaskName}-04858]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR, pname:{stageMaskName} must:
include ename:VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR
* [[VUID-{refpage}-{accessMaskName}-04859]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR, pname:{stageMaskName}
must: include ename:VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR
endif::VK_KHR_video_decode_queue[]
ifdef::VK_KHR_video_encode_queue[]
* [[VUID-{refpage}-{accessMaskName}-04860]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR, pname:{stageMaskName} must:
include ename:VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR
* [[VUID-{refpage}-{accessMaskName}-04861]]
If pname:{accessMaskName} includes
ename:VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR, pname:{stageMaskName}
must: include ename:VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR
endif::VK_KHR_video_encode_queue[]
// Common Valid Usage