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

// Common Valid Usage
// common to all pipeline creations
ifndef::VKSC_VERSION_1_0[]
  * [[VUID-{refpage}-None-09497]]
    {empty}
ifdef::VK_KHR_maintenance5[]
    If the pname:pNext chain does not include a
    slink:VkPipelineCreateFlags2CreateInfoKHR structure,
endif::VK_KHR_maintenance5[]
    pname:flags must be a valid combination of
    elink:VkPipelineCreateFlagBits values
  * [[VUID-{refpage}-flags-07984]]
    If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT
    flag, and pname:basePipelineIndex is -1, pname:basePipelineHandle must:
    be a valid {pipelineType} sname:VkPipeline handle
  * [[VUID-{refpage}-flags-07985]]
    If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT
    flag, and pname:basePipelineHandle is dlink:VK_NULL_HANDLE,
    pname:basePipelineIndex must: be a valid index into the calling
    command's pname:pCreateInfos parameter
  * [[VUID-{refpage}-flags-07986]]
    If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT
    flag, pname:basePipelineIndex must: be -1 or pname:basePipelineHandle
    must: be dlink:VK_NULL_HANDLE
endif::VKSC_VERSION_1_0[]
ifdef::VKSC_VERSION_1_0[]
  * [[VUID-{refpage}-basePipelineHandle-05024]]
    pname:basePipelineHandle must: be dlink:VK_NULL_HANDLE
  * [[VUID-{refpage}-basePipelineIndex-05025]]
    pname:basePipelineIndex must: be zero
endif::VKSC_VERSION_1_0[]
  * [[VUID-{refpage}-layout-07987]]
    If a push constant block is declared in a shader, a push constant range
    in pname:layout must: match both the shader stage and range
  * [[VUID-{refpage}-layout-07988]]
    If a <<interfaces-resources,resource variables>> is declared in a
    shader, a descriptor slot in pname:layout must: match the shader stage
  * [[VUID-{refpage}-layout-07990]]
    If a <<interfaces-resources,resource variables>> is declared in a
    shader,
ifdef::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[]
    and the descriptor type is not ename:VK_DESCRIPTOR_TYPE_MUTABLE_EXT,
endif::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[]
    a descriptor slot in pname:layout must: match the descriptor type
  * [[VUID-{refpage}-layout-07991]]
    If a <<interfaces-resources,resource variables>> is declared in a shader
    as an array, a descriptor slot in pname:layout must: match the
    descriptor count
// Common Valid Usage
