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.