feat(vulkan): add Vulkan compatibility#564
Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds Vulkan compatibility across the shader compilation, live reload, resource upgrade, swapchain, render-pass, and devkit inspection paths, while adding/adjusting Smash Bros Ultimate Vulkan shader assets.
Changes:
- Adds Vulkan shader compilation/disassembly support via Slang/glslang/SPIR-V tooling and CMake integration.
- Extends shader/resource/render/swapchain utilities for Vulkan descriptor, push constant, render pass, and resource clone behavior.
- Adds and updates Smash Bros Ultimate Slang shaders and swapchain proxy setup for Vulkan/HDR10 workflows.
Reviewed changes
Copilot reviewed 63 out of 64 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| CMakeLists.txt | Adds Vulkan/SPIR-V tools, shader dependency analyzer, SPIR-V build rules, and Vulkan linkage. |
| src/analyze_shader_deps.cpp | Replaces HLSL-only dependency analyzer with generalized shader include dependency analyzer. |
| src/analyze_hlsl_deps.cpp | Removes old HLSL dependency analyzer. |
| src/addons/devkit/addon.cpp | Adds Vulkan shader disassembly/decompilation/resource bind support and live reload API wiring. |
| src/mods/swapchain_v1.hpp | Uses modern API helper and updates usage log formatting. |
| src/mods/swapchain_v2.hpp | Enables Vulkan swapchain format handling and DXGI-only flag formatting. |
| src/utils/bitwise.hpp | Adds HasAnyFlag/MaskFlags and keeps return-value flag mutation helpers. |
| src/utils/constants.hpp | Adds Vulkan-aware shader stage handling for push constants. |
| src/utils/descriptor.hpp | Adds Vulkan dynamic buffer descriptor cloning handling. |
| src/utils/device.hpp | Adds IsModernAPI helper for D3D12/Vulkan checks. |
| src/utils/draw.hpp | Adds Vulkan barriers and render pass load/store setup for swapchain proxy rendering. |
| src/utils/pipeline.hpp | Clones and destroys shader entry point strings with pipeline subobjects. |
| src/utils/pipeline_layout.hpp | Adds Vulkan injection metadata and descriptor table storage. |
| src/utils/render.hpp | Adds Vulkan descriptor layout/table behavior and render-pass load/store handling. |
| src/utils/resource.hpp | Adds Vulkan resource view helpers, minimum dimensions, and view usage normalization. |
| src/utils/resource_upgrade.hpp | Extends resource cloning/view upgrade/copy/clear/barrier behavior for Vulkan. |
| src/utils/shader.hpp | Adds entry point normalization and snapshots Vulkan pipeline layout metadata. |
| src/utils/shader_compiler_vulkan.hpp | Adds Slang/glslang/SPIR-V compile, disassemble, and decompile helpers. |
| src/utils/shader_compiler_watcher.hpp | Adds Slang/GLSL live reload parsing and Vulkan compile dispatch. |
| src/utils/trace.hpp | Updates usage log formatting and skips Vulkan dynamic buffer descriptor trace cases. |
| src/games/smashbros-ultimate/addon.cpp | Enables swapchain v2/resource upgrades and Vulkan-oriented Smash configuration. |
| src/games/smashbros-ultimate/shared.h | Adjusts push constants and HDR10 swapchain preset definitions. |
| src/games/smashbros-ultimate/swap_chain_proxy_vertex_shader.vert.slang | Adds Vulkan/Slang swapchain proxy vertex shader. |
| src/games/smashbros-ultimate/swap_chain_proxy_pixel_shader.frag.slang | Adds Vulkan/Slang swapchain proxy pixel shader. |
| src/games/smashbros-ultimate/tonemap/eden/tonemap_0xC3859336.frag.slang | Adds Eden tonemap shader. |
| src/games/smashbros-ultimate/outputs/eden/output_0xB9B0AD14.frag.slang | Adds Eden output shader. |
| src/games/smashbros-ultimate/outputs/ryubing/output_0xF3C7B934.frag.slang | Updates Ryujinx output include path and disables swapchain pass call. |
| src/games/smashbros-ultimate/outputs/ryubing/smaa_0xBDDC863F.comp.slang | Adds SMAA compute shader. |
| src/games/smashbros-ultimate/bloom/ryubing/blur_0x6F8D57E9.frag.slang | Fixes postprocess include path. |
| src/games/smashbros-ultimate/bloom/ryubing/blur_0xCC16E269.frag.slang | Fixes postprocess include path. |
| src/games/smashbros-ultimate/bloom/ryubing/blur_0xD09BE0D4.frag.slang | Fixes postprocess include path. |
| src/games/smashbros-ultimate/bloom/ryubing/blur_0xFDF58568.frag.slang | Fixes postprocess include path. |
| src/games/smashbros-ultimate/bloom/ryubing/composite_0x24DE6815.frag.slang | Fixes shared include path. |
| src/games/smashbros-ultimate/bloom/ryubing/mask_0x26FB90CB.frag.slang | Switches to postprocess common include and comments unused bindings. |
| src/games/smashbros-ultimate/bloom/ryubing/upscale_0x574C469C.frag.slang | Fixes postprocess include path. |
| src/games/smashbros-ultimate/bloom/ryubing/upscale_0xA6888F9A.frag.slang | Fixes postprocess include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0x0E55B73E.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0x15E86781.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0x184EDCF0.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0x1CB1BC38.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0x2F28B6FD.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0x2FDA3677.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0x49A57476.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0x5202C090.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0x5A9CBEC5.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0x62A90A5F.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0x65EF2115.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0x6663BDB0.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0x7525D6CA.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0x7BFE0326.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0x7FE28868.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0x85D1DB2F.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0x8D399572.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0xA0D2AFC8.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0xA376C572.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0xA63F36B1.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0xA79248F1.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0xA8DC96A8.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0xB18FD192.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0xB3B47AE5.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0xC1FB811D.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0xCC8CEB7C.frag.slang | Fixes common include path. |
| src/games/smashbros-ultimate/tonemap/ryubing/tonemap_0xF26A2193.frag.slang | Fixes common include path. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
11f1fd5 to
4c7b582
Compare
|
@clshortfuse I rebased and resolved the issues copilot found |
9ac8729 to
a18bc9e
Compare
2c56bed to
c6e5b6c
Compare
2ed266a to
d1543ca
Compare
clshortfuse
left a comment
There was a problem hiding this comment.
A comment might have been wiped, but mostly just cmake curiosities and heavy lookup and copies on hot paths.
76f84c6 to
ce06f55
Compare
|
Avoided copying full structs in OnCopyBuffer/OnCopyTexture. Both events reuse the exact same logic but mirrored so I moved most of it to inline functions to avoid future bugs. I can revert that if it doesn't fit renodx's code design. |
fix(resource): ensure Vulkan compatibility in buffer-to-texture copy and descriptor updates feat(render): enhance Vulkan descriptor handling and binding order feat(vulkan): Correct rebase errors feat(resource): implement FindViewUpgrade for centralized bitwise check format upgrades fix(shader): improve descriptor injection handling for Vulkan feat(shader): Add vulkan descriptor sets support feat(workflows): add Vulkan SDK setup to CI workflows fix(cmake): spv-dis depends on spv embed feat(setup): add Vulkan SDK installation and validation to setup script fix(cmake): prioritize vulkan sdk slangc over bin refactor(workflows): update Vulkan SDK setup and remove Slang binaries download
No description provided.