branchsbox/vk-dynamic-descriptor-sets-per-stagecancel

11 Commits over 31 Days - 0.01cph!

Today
Do a full checkout for a Steam branch build
Today
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). This is primarily a backport from the latest Source 2 branch, however this diverges on materialsystem2, on rendersystemvulkan threading and quite heavily vfx_vulkan where we use mostly our own compiler code using DXC instead of Slang. 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. 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 (Would also be used for mesh shaders) Dynamic set 1 - PS Dynamic Set 2 - GS Set 3+ - static sets The index of static sets remains the same because sets 1/2 are reused from previously deprecated materialsystem2 owned descriptor sets. Other changes include: * VFX_MAX_SAMPLERS: 16 -> 32 * VFX_MAX_UAVS: 8 -> 16 FIXME: CRayTracePipelineVulkan needs to be upgraded but is unused currently Up SHADER_COMPILER_VERSION to 3 and refuse to load older shaders scenesystem: All layers get lighting constants, there are buffers that need to always be bound here and there is no overhead Recompile all shaders Debug: Spew when a shader doesn't support pipeline library so hitches can be blamed on geometry shaders
Today
Can't workflow_dispatch on a branch
Today
Steam branch
Today
Debug: Spew when a shader doesn't support pipeline library so hitches can be blamed on geometry shaders
Yesterday
Maybe don't leave debug prints in and be confused at the extra 2ms
Yesterday
scenesystem: All layers get lighting constants, there are buffers that need to always be bound here and there is no overhead Up SHADER_COMPILER_VERSION to 3 and refuse to load older shaders Recompile all shaders
Yesterday
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). This is primarily a backport from the latest Source 2 branch, however this diverges on materialsystem2, on rendersystemvulkan threading and quite heavily vfx_vulkan where we use mostly our own compiler code using DXC instead of Slang. 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. 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 (Would also be used for mesh shaders) Dynamic set 1 - PS Dynamic Set 2 - GS Set 3+ - static sets The index of static sets remains the same because sets 1/2 are reused from previously deprecated materialsystem2 owned descriptor sets. Other changes include: * VFX_MAX_SAMPLERS: 16 -> 32 * VFX_MAX_UAVS: 8 -> 16 FIXME: CRayTracePipelineVulkan needs to be upgraded but is unused currently Temp: All layers get per view lighting constants (these are probably worthy of a static descriptor set) Temp: Disable bloom layer - throwing too many errors which makes debugging impossible
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
6 Days Ago
▍▄█_▅▇▆▋▌▋: ▍▄▇▌▌▅▌▋ ▅▉▊ ▋▌▄▇█▄ ▊▆/▌▉/▍▉ ▌▄▉▅▇▋█ ▆▅█▍▇▍█▌▆▋ █▇▅ ▌▍▋▄ ▄▄▋-▇▊▉▄▅ ▍▉█▋▆▄█ ▄▋▇▉ ▇▌▋█▄▅█ █▇▅ ▋▋▍▇█▄ ▇▄▅▉ ▉█▌▇█▍▅ ▍▊▍▇███▇▅▇ ▉▊▅ ▆▄▊▍▅▌▉▇▌▍ ▅▍▊▋▍ ▌▄▇▄▅ ▄█▋█ ▌ ▇▆▉▄ ▆▋▌▇▍▇█ ▌▌▅▉ ▇▋▅ ▋▌█▌ ▊██▅▍ (█▉/▅▋/▇▅). ▅▌▉ ▄▇▉▆ ▆▉▋▇█▄▆ ▆█ ▋▆▇▄ ▉▇ ▉▉ ▄▉▅▌▇▌ ▋▊▅ ▊▊▇▄▆█▉█▉▌▄▇ ▍█ ▌▋▄ ▌▌▇▆▊ ▋▇▄▍ ▌█ ▇▍▋ ▍▊_▇█▉_▍██▌▋▉▍▉_█▆▅▅▆▅▇▄_▌▇▍▍▌▄▄ ▇▉▅▅ ▊▄▅▊▊▍▆ ▌▉▇▄▉ ▊▊▆▌▋▌▋, ▅▆▊▋▄▇▇ ▉▊▍█▅▇, ▊█▇█▇▊█ ▅▄▇▋▊▌▌, ▇▆▊▅▆█▌ ▄▌▍▇▄ ▆▇▇▉▍▅▅. (▊▍▅ ▇▋ ▉▅█ ▉ ▅▍▌ ▄▅ ▉▄▆▄▋▅▊ ▉▉▊▇▅▆▇▅▌█▇▊█▆▌▅▍ ▌▉▅) ▄▆▍▍▅▆▍▋▆▅ ▉▅▍ █▅▇▉ ▍▊▇▌▆▋▋▉ ▆▊▍▊▌ ▆▅ ▅▄▊▆▊▊ ▆▌▆▉▌ ▊▌ ▆ ▊▍▄█▉▄ ▅▆▇▋█▆▇▌▊▍ ▅█▌, ▇▍▍▌▍▋▌ ▊▌▄▆ █▄▌'▇ ▊▊▍▅▆▆▄▍ ▋▌▋ ▇▇█ ▆▆ ▇█ ▌▉▆▊ ▅▄ ▊▋█ ▇▅▄▇██. ▄▆▄ ▄▍▅▊▇▄ ▆▍▅ █▉: ▆▊▋▌▍▆▇ ▄▍█ ▌ - █▉/▋▊ ▌▊▉▇▍▇▅ ▆▆▇ ▇ - ▅▅ ▆█▅▌▆▆▆ ▋▇▅ ▇ - ▅▄ ▍▆▉ ▅+ - ▉▉▌▊▆▉ █▌█▅ ▄▇▉█▊▅▅▌█▇▍▅▇▉▍█▉▅/▆▌▇▍▋▅▌▋▆▉▄▌▋▄▌: ▄▅▇▌▊▋▍ ▍▅▌▅▅▇▅ ▆▋▋▄▆▉▉▌▅▊ █▊▌▌ ▊▌▊▉▍▇▇▇ ▊▊▌█▆▍ ▆▅▉▍█▊▍▌▆▌██▆▅▄▊█▄▌▅▇▇ ▅▊▆▄ ▌▌▄▅▆ ▋▇▊▉▄▅ █▅▆▌▌▉▌▅█ ▅▅▇▍▅▌▉ ▅▉▌ ▍▍▊█▌▄▋ ▄▉▊▅▉▉▄█▍▌ ▊▆▉▋ ▇█▌ ▌▊▉▅▍█▅▅▅▋ ▄▆▌▋█▋▅█ ▆█▆▉▉▆█▆ ▍▍▍▄▅▉█ ▌▉▅▉▉▄▅. █▍█▌▍▆▅▅ ▆██▆ ▅▄▉▆▄▇▊▋█▆▆▄▉▉▌ ▄▅▆▆▉█▄ ▍▆ ▅▊▆▆▅▌▋ ▉▊▌█▇▆▆ ▄▅▍▇▊▆▋▇▇█ ▇▄▍▍ ▅▌▌▄▅▆▅▇ ▄▇▊▊▉ ▋▇ ▋ ▅▉▋ ▍▅ ▄▉▄█▊▉▋▇▌▍. ▄▍▋▇▋ ▄▇▅▍▅▊▅ ▉▋▄ ▋▄▍▊▇▌▇ ▄▌▄▇ ▋▊█▋▇▄▆█▉▋ ▋▇▊ ▊▋▇▌▋█▍ [ ! ] ▄▇▇▍█▌▋ █▅▋▌▍ ▆█▆▋▊ - ▆▌▊▌▅▅▇▍ ▊▇▍ ▉██▆ ▇▅▆█▇▉ ▇▉▆▋▇ ▌▌▌▅▅ █▄▊▉▍▌▅▌▆ ▍▍▋█▌▍▊▆▉▉ ▅▅▌█▅▌▇█▄▌▇▉▅▉▅█▉▌: ▌▇▉▍█▆▇▊▉▄ ▇▌▊▉ ▆▇▄▍▊ ▊▉▋▊▇ ▄▄▌_█▋▆ ▆▇▇▋▇ ▆▍▅▋ ▊▄█▇▆▄▆▅▋.. ▆▌█▆▌▍▇▅▋▅▍█▇▍▌: ▆▋ ▄█▍ ▆▄▇ ▍▆▍▉ ▄▇▇▇ ▌▌▄▅▍▌▄▉ ██▅▉▌▆▇▆▅▊ ▄█▍▋ ▅▉▆██▍▌▇▇▌▇▋▄▉▆: ▋▌█▋ █▄▉▄█▉▋▍▋██▇▌▇▄▊ ▉▍▉ ▇▅▊▄▅▇▆ ▄▅▋▄▇▋▉▋█▋ ▊▉▋▍ ▋▍▅▍▌██▇▄▌▋▋▇▅▊▌▄█: ▊▆█ ▊▅▊▄▊▋▅▍▇▄ ▍▆▊▉▅ █▄▆▌▋▊▄ ▍▆▉█ █▅▊ ▋▆▌██▅▋█ ▍▆▋▇█ - ▋▌▋▉
10 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