For Vulkan the process of upgrading was considerably more complicated. In Vulkan, we need the following objects:
- Render passes
- Graphics pipelines
Another complication is related to the restriction of updating descriptor sets on bound command buffers: Updating a descriptor set that is in a command list that is either being recorded or executed on the GPU will invalidate the command buffer, causing undefined behaviour unless the debug layers are enabled. Ideally, we would create all combinations of textures we use in all render calls and take the one for the specific combination we are interested in. However, for now we simply have a single descriptor set per mesh per frame.