feat(vulkan): add Vulkan compatibility#564
Open
MohannedElfatih wants to merge 1 commit into
Open
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
Contributor
Author
|
@clshortfuse I rebased and resolved the issues copilot found |
9ac8729 to
a18bc9e
Compare
clshortfuse
requested changes
Jun 16, 2026
2c56bed to
c6e5b6c
Compare
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.