// Copyright 2019-2021 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

// Common Valid Usage
// Common to VkPipelineStageFlags parameters
// Set "stageMaskName" attribute to the name of the stage mask to validate
  * [[VUID-{refpage}-{stageMaskName}-04090]]
    If the <<features-geometryShader,geometry shaders>> feature is not
    enabled, pname:{stageMaskName} must: not contain
    ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
  * [[VUID-{refpage}-{stageMaskName}-04091]]
    If the <<features-tessellationShader,tessellation shaders>> feature is
    not enabled, pname:{stageMaskName} must: not contain
    ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or
    ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
ifdef::VK_EXT_conditional_rendering[]
  * [[VUID-{refpage}-{stageMaskName}-04092]]
    If the <<features-conditionalRendering,conditional rendering>> feature
    is not enabled, pname:{stageMaskName} must: not contain
    ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
endif::VK_EXT_conditional_rendering[]
ifdef::VK_EXT_fragment_density_map[]
  * [[VUID-{refpage}-{stageMaskName}-04093]]
    If the <<features-fragmentDensityMap,fragment density map>> feature is
    not enabled, pname:{stageMaskName} must: not contain
    ename:VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
endif::VK_EXT_fragment_density_map[]
ifdef::VK_EXT_transform_feedback[]
  * [[VUID-{refpage}-{stageMaskName}-04094]]
    If the <<features-transformFeedback,transform feedback>> feature is not
    enabled, pname:{stageMaskName} must: not contain
    ename:VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
endif::VK_EXT_transform_feedback[]
ifdef::VK_NV_mesh_shader[]
  * [[VUID-{refpage}-{stageMaskName}-04095]]
    If the <<features-meshShader,mesh shaders>> feature is not enabled,
    pname:{stageMaskName} must: not contain
    ename:VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV
  * [[VUID-{refpage}-{stageMaskName}-04096]]
    If the <<features-taskShader,task shaders>> feature is not enabled,
    pname:{stageMaskName} must: not contain
    ename:VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV
endif::VK_NV_mesh_shader[]
ifdef::VK_NV_shading_rate_image[]
  * [[VUID-{refpage}-{stageMaskName}-04097]]
    If the <<features-shadingRateImage,shading rate image>> feature is not
    enabled, pname:{stageMaskName} must: not contain
    ename:VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
endif::VK_NV_shading_rate_image[]
  * [[VUID-{refpage}-{stageMaskName}-04098]]
    Any pipeline stage included in pname:{stageMaskName} must: be supported
    by the capabilities of the queue family specified by the
    pname:queueFamilyIndex member of the slink:VkCommandPoolCreateInfo
    structure that was used to create the sname:VkCommandPool that
    pname:commandBuffer was allocated from, as specified in the
    <<synchronization-pipeline-stages-supported, table of supported pipeline
    stages>>
ifdef::VK_KHR_synchronization2[]
  * [[VUID-{refpage}-{stageMaskName}-03937]]
    If the <<features-synchronization2, pname:synchronization2>> feature is
    not enabled, pname:{stageMaskName} must: not be `0`
endif::VK_KHR_synchronization2[]
ifndef::VK_KHR_synchronization2[]
  * [[VUID-{refpage}-{stageMaskName}-04996]]
    pname:{stageMaskName} must: not be `0`
endif::VK_KHR_synchronization2[]
// Common Valid Usage
