* pname:sType must: be ename:VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
* pname:pNext must: be `NULL`
* pname:flags must: be a valid combination of elink:VkPipelineCreateFlagBits values
* pname:stage must: be a valid sname:VkPipelineShaderStageCreateInfo structure
* pname:layout must: be a valid sname:VkPipelineLayout handle
* Each of pname:layout and pname:basePipelineHandle that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice
* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineIndex is not `-1`, pname:basePipelineHandle must: be dlink:VK_NULL_HANDLE
* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineIndex is not `-1`, it must: be a valid index into the calling command's pname:pCreateInfos parameter
* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not dlink:VK_NULL_HANDLE, pname:basePipelineIndex must: be `-1`
* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not dlink:VK_NULL_HANDLE, pname:basePipelineHandle must: be a valid sname:VkPipeline handle
* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not dlink:VK_NULL_HANDLE, it must: be a valid handle to a compute sname:VkPipeline
* The pname:stage member of pname:stage must: be ename:VK_SHADER_STAGE_COMPUTE_BIT
* The shader code for the entry point identified by pname:stage and the rest of the state identified by this structure must: adhere to the pipeline linking rules described in the <<interfaces,Shader Interfaces>> chapter
* pname:layout must: be <<descriptorsets-pipelinelayout-consistency,consistent>> with all shaders specified in pname:pStages