vfx_vulkan: Separate the shared VS/PS/GS dynamic descriptor set into per-stage dynamic sets
Reworks the single uber dynamic descriptor set containing every stage
into 3 much smaller sets for each stage (VS/PS/GS).
The main purpose of this is to remove the restrictions of not being able
to use VK_EXT_graphics_pipeline_library with uniform texel buffers,
storage images, storage buffers, storage texel buffers.
(And we use a lot of dynamic StructuredBuffers now)
Previously the only solution would be forced usage of a static descriptor
set, however that isn't feasible for UGC or an easy to use engine.
The layout now is:
Dynamic set 0 - VS/CS
Dynamic set 1 - PS
Dynamic Set 2 - GS
Set 3+ - static sets
rendersystemvulkan/materialsystem2: support dynamic descriptor sets
Backport latest CPipelineManagerVulkan from Valve mainly
providing support for dynamic descriptor sets and additional
graphics pipeline library support.
Backport some materialsystem2 changes to support dynamic descriptor sets
although there is a lot of divergance.
Force rebuild all shaders with descriptor set changes
rendersystemvulkan: descriptor pool sizes match VFX_MAX enums
materialsystem2: Do not add UAVs from external descriptor sets
materialsystem2: Only MapOpBindTexture for dynamic descriptor sets
rendersystemvulkan: Fix validation error loading from the pipeline cache - DanG
rendersystemvulkan: Reset constant buffer bindings
materialsystem2: Mark explicit fallthrough
materialsystem2: Fix logic for updating CBs in descriptor sets
Temp: All layers get per view lighting constants (these are probably worthy of a static descriptor set)
Some debugging..
Temp: Disable bloom layer - throwing too many errors which makes debugging impossible