The process of creating a graphics pipeline may take a (relatively) long time. Shader compilation takes place during the pipeline creation, the driver checks if compiled shaders can be properly linked together and if a state is properly specified for the shaders to work correctly. That's why, especially when we have lots of pipelines to create, it is good to split this process into multiple threads.
But when we have lots of pipelines to create, we should use a cache to speed up the creation even further. Here we will see how to use a cache for multiple concurrent pipeline creations and how to merge the cache afterwards.