| // 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 |