[AMD RX 5500 XT / RDNA1] Missing Geometry Due to Unsupported Mesh Shaders — Lichii Compute Shader Fallback Works #640
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
2 participants
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot#640
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The idea
[AMD RDNA1] Mesh Shader fallback request — RX 5500 XT renders missing geometry in Lichii
Hello Hookshot developers!
I'm using an AMD Radeon RX 5500 XT 8 GB (RDNA1), which does not support native Mesh Shaders.
Hookshot launches and runs on my PC, but significant parts of the environment are missing, including terrain, buildings, vegetation and certain objects.
I recently tested Lichii Build 117 on the same hardware and noticed an important difference:
Lichii has an experimental Mesh Shader fallback implementation that uses Compute Shaders and a conventional graphics pipeline.
Relevant implementation:
Would it be technically feasible to implement a similar fallback in Hookshot for RDNA1 GPUs and other hardware without native Mesh Shader support?
I understand this may require significant work and could have performance limitations. However, even a slower fallback would be valuable if it allowed the missing geometry to render correctly.
I can provide screenshots comparing both projects on the same GPU.
My PC specifications:
Thank you for your work and for considering compatibility with older GPUs!
Anything else
No response
I'll work on this
Fixed
Found what #640 changes on a GPU that has mesh shaders (re: the revert in
806c566). Inbuild_graphics()(gpu/vk/vk_draw.cpp), the new stage filter is not limited to fallback programs:With native mesh shaders, the task and mesh stages are the pipeline's own stages, so every mesh program gets built with only its fragment stage. In the fallback, those stages are already
VK_SHADER_STAGE_COMPUTE_BIT, so the TASK/MESH bits only ever match native mesh programs. This one-line change fixes it here:Tested on an RTX 3070 8 GB, Windows,
mainat2ff3cff(before the revert), loading an autosave at the Kakariko gate:2ff3cff2ff3cff+ the change aboveea4ecedwith itsgpu/vk/*.cpp/.hpart reverted (SPIR-V part kept)I found it by bisecting with timed input and the
GPU timelog line. The slowdown shows only when the save is loaded soon after the title screen. A run that waited about 100 s on the title stayed fast, which hid it in my first bisect. TheRX_VK_GPU_PROFILE=1breakdown during the slow frames shows all the 1536x864 colour+depth passes 5–10x slower, not a single program. That fits invalid mesh pipelines rather than a shader that is simply expensive.One more thing for #352 and #422: with #640 in, the floating Death Mountain trees were gone too, but only because nothing drawn by mesh programs was drawn anymore (grass, leaves, those trees). With the fix, the floating trees are back, so those two issues are still open.
#792 brings back the compute fallback for GPUs without mesh shaders (
ea4eced, reverted in806c566/b11058c). It also fixes the device loss on GPUs that do have mesh shaders, which caused the revert. It hasn't been tested on a real RDNA1 card, so a run on an RX 5500 XT would help.I just tested this on an RX 5500 XT, but the rendering issue persists—many models are still missing, making it unplayable.
tengo un ryzen 5 5600x, una rx580 de 8gb, 16 de ram, el juego abre, pero se van los fps por el suelo, no suben de 4fps.