A pipeline derivative is a child pipeline created from a parent pipeline, where the child and parent are expected to have much commonality. The goal of derivative pipelines is that they be cheaper to create using the parent as a starting point, and that it be more efficient (on either host or device) to switch/bind between children of the same parent.
A derivative pipeline is created by setting the
VK_PIPELINE_CREATE_DERIVATIVE_BIT flag in the
Vk*PipelineCreateInfo structure. If this is set, then exactly one of
basePipelineHandle or basePipelineIndex members of the structure
must have a valid handle/index, and indicates the parent pipeline. If
basePipelineHandle is used, the parent pipeline must have already
been created. If basePipelineIndex is used, then the parent is being
created in the same command. VK_NULL_HANDLE acts as the invalid handle
for basePipelineHandle, and -1 is the invalid index for
basePipelineIndex. If basePipelineIndex is used, the base
pipeline must appear earlier in the array. The base pipeline must have
been created with the VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT flag
set.