-
Notifications
You must be signed in to change notification settings - Fork 184
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Native Wayland Support V2 + Minor Nvidia/Performance Optimisations #325
Add Native Wayland Support V2 + Minor Nvidia/Performance Optimisations #325
Conversation
Needed to fix Wayland stability on Mesa/RADV Driver
1eb8bfa
to
e9ca823
Compare
I cannot break it in any way. It passed all stress tests and tested in real life scenarios with just playing it. Rock stable. Platform detection also works as expected. |
tysm for the RADV fixes, finally somebody figured out what the issue was after 2 years
I tried to make a PR for this and it never got merged lol, even though the code back then wasn't following spec |
works as expected and working better than the main branch is on RADV, tysm once again |
56e8dab
to
8b589c7
Compare
Apologies for the huge Use Queue Enum commit It has a very minor FPS improvement and it also fixes VSync on old Nvidia GPUs, |
8b589c7
to
7eee159
Compare
I would state that right now this PR is giving seamless from Vanilla experience both on Wayland and X11. The only one difference is monstrous amount of frames per second. The only times my GPU not hitting 100% load is in locations with a large number of entities, but this is completely different story. There is only problem with Nvidia being BAD on Wayland. I hope this will be fixed soon by Nvidia itself. Last bug that do not affect gameplay in any way but still irritates is swapchain destroy bug, when game is closed by user and this cause instance lag and crash with error 6. But this is not that's PR explicit bug. It appears in stable release too. |
350f64a
to
f0382e3
Compare
(i.e. Wayland is fussy about the order, and Window handle must be destroyed after the Swapchain and vkInstance, and not before) Rebase This reverts commit 7eb7a5f. Refactor Chunk rendering + Improve Draw Direct Performance Make PushConstants per ChunkArea instead of per RenderSection; Reduces PushConstant CPU usage by over 100x in DrawCall heavy scenarios Use compile time length for ChunkArea SectionQueues to improve JIT Optimisations Merge Direct/Indirect Shaders: Use same shader for both Direct and Draw Indirect + remove Indirect Pipeline Skip 0 index (i.e. empty draw calls) checks + reduce DescriptorSet binding Frequency Faster Gaussian Sky Blending [GPU Optimisation]: Separate VertexBuffers per RenderType Use Queue Enum + Split CommandPools based on Queue/Operation Type Dedicated Transfer Queue specific fixes Enable VK12 VMA Features Bizarrely Improves Performance by at least 15/20% according to initial testing Optimise Chunk Shader (May either have no performance improvement and/or have possible Shader/Visual artefacts) Early-Z Optimisations + Reduce AreaBuffer Fragmentation + Final Cleanup (Quick Summary) * Align Sizes to power of 2 * Reduce Pipeline Binding Frequency * Refactor ChunkTask to use RenderType enums to reduce CPU + * improve JIT optimisations * Try to use Early-Z on Translucent RenderType Fix Segfault on Wayland when closing the client (i.e. Wayland is fussy about the order, and Window handle must be destroyed after the Swapchain and vkInstance, and not before) Revert "Rebase" This reverts commit f0382e3.
f0382e3
to
66bcb0a
Compare
Reverted alot of the performance optimisations as one of them was causing specific errors on Staging buffer copies, and due to this PR being a mess the breaking commit couldn't be tracked down. So used a Squash to delete/nuke the commits, including the breaking change(s). Don't mind doing this as I have the unedited original + commits in a separate "backed up" branch made yesterday. (So nothing was lost anyway TBH) |
2469467
to
57e2f83
Compare
Despite what I said above, i did decide in the end to re-add some of the optimisation-related changes, |
0a0db52
to
5feef2a
Compare
5feef2a
to
5b86221
Compare
This is similar to the prior PR, but with some various technical enhancements over the original
Use Alternate Swapchain System
Much more reliable display server detection
FastSync (aka Mailbox Mode) is used by default for VSync Off
Minor performance optimisations