4 Days Ago
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