## C Specification

The VkComputePipelineCreateInfo structure is defined as:

// Provided by VK_VERSION_1_0
typedef struct VkComputePipelineCreateInfo {
VkStructureType                    sType;
const void*                        pNext;
VkPipelineCreateFlags              flags;
VkPipelineLayout                   layout;
VkPipeline                         basePipelineHandle;
int32_t                            basePipelineIndex;
} VkComputePipelineCreateInfo;

## Members

• sType is the type of this structure.

• pNext is NULL or a pointer to a structure extending this structure.

• flags is a bitmask of VkPipelineCreateFlagBits specifying how the pipeline will be generated.

• stage is a VkPipelineShaderStageCreateInfo structure describing the compute shader.

• layout is the description of binding locations used by both the pipeline and descriptor sets used with the pipeline.

• basePipelineHandle is a pipeline to derive from

• basePipelineIndex is an index into the pCreateInfos parameter to use as a pipeline to derive from

## Description

The parameters basePipelineHandle and basePipelineIndex are described in more detail in Pipeline Derivatives.

Valid Usage
• VUID-VkComputePipelineCreateInfo-flags-00697
If flags contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and basePipelineIndex is -1, basePipelineHandle must be a valid handle to a compute VkPipeline

• VUID-VkComputePipelineCreateInfo-flags-00698
If flags contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and basePipelineHandle is VK_NULL_HANDLE, basePipelineIndex must be a valid index into the calling command’s pCreateInfos parameter

• VUID-VkComputePipelineCreateInfo-flags-00699
If flags contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and basePipelineIndex is not -1, basePipelineHandle must be VK_NULL_HANDLE

• VUID-VkComputePipelineCreateInfo-flags-00700
If flags contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and basePipelineHandle is not VK_NULL_HANDLE, basePipelineIndex must be -1

• VUID-VkComputePipelineCreateInfo-stage-00701
The stage member of stage must be VK_SHADER_STAGE_COMPUTE_BIT

• VUID-VkComputePipelineCreateInfo-stage-00702
The shader code for the entry point identified by stage and the rest of the state identified by this structure must adhere to the pipeline linking rules described in the Shader Interfaces chapter

• VUID-VkComputePipelineCreateInfo-layout-00703
layout must be consistent with the layout of the compute shader specified in stage

• VUID-VkComputePipelineCreateInfo-layout-01687
The number of resources in layout accessible to the compute shader stage must be less than or equal to VkPhysicalDeviceLimits::maxPerStageResources

• VUID-VkComputePipelineCreateInfo-flags-03364
flags must not include VK_PIPELINE_CREATE_LIBRARY_BIT_KHR

• VUID-VkComputePipelineCreateInfo-flags-03365
flags must not include VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR

• VUID-VkComputePipelineCreateInfo-flags-03366
flags must not include VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR

• VUID-VkComputePipelineCreateInfo-flags-03367
flags must not include VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR

• VUID-VkComputePipelineCreateInfo-flags-03368
flags must not include VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR

• VUID-VkComputePipelineCreateInfo-flags-03369
flags must not include VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR

• VUID-VkComputePipelineCreateInfo-flags-03370
flags must not include VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR

• VUID-VkComputePipelineCreateInfo-flags-03576
flags must not include VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR

• VUID-VkComputePipelineCreateInfo-flags-04945
flags must not include VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV

• VUID-VkComputePipelineCreateInfo-flags-02874
flags must not include VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV

• VUID-VkComputePipelineCreateInfo-pipelineCreationCacheControl-02875
If the pipelineCreationCacheControl feature is not enabled, flags must not include VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT or VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT

• VUID-VkComputePipelineCreateInfo-pipelineStageCreationFeedbackCount-06566
If VkPipelineCreationFeedbackCreateInfo::pipelineStageCreationFeedbackCount is not 0, it must be 1

Valid Usage (Implicit)
• VUID-VkComputePipelineCreateInfo-sType-sType
sType must be VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO

• VUID-VkComputePipelineCreateInfo-pNext-pNext
Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkPipelineCompilerControlCreateInfoAMD, VkPipelineCreationFeedbackCreateInfo, or VkSubpassShadingPipelineCreateInfoHUAWEI

• VUID-VkComputePipelineCreateInfo-sType-unique
The sType value of each struct in the pNext chain must be unique

• VUID-VkComputePipelineCreateInfo-flags-parameter
flags must be a valid combination of VkPipelineCreateFlagBits values

• VUID-VkComputePipelineCreateInfo-stage-parameter
stage must be a valid VkPipelineShaderStageCreateInfo structure

• VUID-VkComputePipelineCreateInfo-layout-parameter
layout must be a valid VkPipelineLayout handle

• VUID-VkComputePipelineCreateInfo-commonparent
Both of basePipelineHandle, and layout that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice