1// Copyright 2019-2024 The Khronos Group Inc.
2//
3// SPDX-License-Identifier: CC-BY-4.0
4
5// Common Valid Usage
6// common to all pipeline creations
7ifndef::VKSC_VERSION_1_0[]
8  * [[VUID-{refpage}-None-09497]]
9    {empty}
10ifdef::VK_KHR_maintenance5[]
11    If the pname:pNext chain does not include a
12    slink:VkPipelineCreateFlags2CreateInfoKHR structure,
13endif::VK_KHR_maintenance5[]
14    pname:flags must be a valid combination of
15    elink:VkPipelineCreateFlagBits values
16  * [[VUID-{refpage}-flags-07984]]
17    If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT
18    flag, and pname:basePipelineIndex is -1, pname:basePipelineHandle must:
19    be a valid {pipelineType} sname:VkPipeline handle
20  * [[VUID-{refpage}-flags-07985]]
21    If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT
22    flag, and pname:basePipelineHandle is dlink:VK_NULL_HANDLE,
23    pname:basePipelineIndex must: be a valid index into the calling
24    command's pname:pCreateInfos parameter
25  * [[VUID-{refpage}-flags-07986]]
26    If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT
27    flag, pname:basePipelineIndex must: be -1 or pname:basePipelineHandle
28    must: be dlink:VK_NULL_HANDLE
29endif::VKSC_VERSION_1_0[]
30ifdef::VKSC_VERSION_1_0[]
31  * [[VUID-{refpage}-basePipelineHandle-05024]]
32    pname:basePipelineHandle must: be dlink:VK_NULL_HANDLE
33  * [[VUID-{refpage}-basePipelineIndex-05025]]
34    pname:basePipelineIndex must: be zero
35endif::VKSC_VERSION_1_0[]
36  * [[VUID-{refpage}-layout-07987]]
37    If a push constant block is declared in a shader, a push constant range
38    in pname:layout must: match both the shader stage and range
39  * [[VUID-{refpage}-layout-07988]]
40    If a <<interfaces-resources,resource variables>> is declared in a
41    shader, a descriptor slot in pname:layout must: match the shader stage
42  * [[VUID-{refpage}-layout-07990]]
43    If a <<interfaces-resources,resource variables>> is declared in a
44    shader,
45ifdef::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[]
46    and the descriptor type is not ename:VK_DESCRIPTOR_TYPE_MUTABLE_EXT,
47endif::VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type[]
48    a descriptor slot in pname:layout must: match the descriptor type
49  * [[VUID-{refpage}-layout-07991]]
50    If a <<interfaces-resources,resource variables>> is declared in a shader
51    as an array, a descriptor slot in pname:layout must: match the
52    descriptor count
53// Common Valid Usage
54