cemu-project / Cemu

Cemu - Wii U emulator
https://cemu.info
Mozilla Public License 2.0
6.61k stars 505 forks source link

AMD 780M Vulkan renderer leads to corrupted textures #1176

Open Not4ce opened 2 months ago

Not4ce commented 2 months ago

Current Behavior

Enabling vulkan on rdna 3 based cards, such as 780m igpus break pebbles and textures in-game. Also broken shadows that eventually garble and have corrupted textures. Observed in MK8 and BOTW. No graphical or texture enhancements applied, can be replicated on two seperate 780m devices

Vram allocation does not change anything. Only fixed by changing renderer to OpenGL, and seems to be Rdna3/780m specific. Was unable to test on a discrete rdna3 card, no issue on Rdna2 and Nvidia counterparts (6800xt and 3070)

Expected Behavior

Nil graphical issues and not garbled textures

Steps to Reproduce

Enabling vulkan renderer Playing any game: Breath of the wild etc

System Info (Optional)

OS: Windows 11 22631.3374 KB5035942 GPU: 780M on Ryzen Z1 Extreme and 7840u

Emulation Settings (Optional)

Default with no mods or changed

Also Tested with: BCML enabled Second Wind enabled No graphical mods or changes on 1.2.6 and 2.0 cemu

Logs (Optional)

log.txt

Tested with OpenGl that had no issues, followed by switching to Vulkan with issues (UMA frame buffer set to 6gigs on system)

Exzap commented 2 months ago

AMD has a track record of needing 1-2 years to get their drivers up to standard (we have reports like this for every new generation). This combined with the fact that it works on everything else points towards an issue with their driver. However, we don't know for certain unless someone does some digging. I will keep this open for visibility and in case someone with the affected hardware and the necessary know-how wants to look into this.

Exzap commented 2 months ago

Something you can do to help in the meantime is upload a Vulkan validation log. The steps to do this are: 1) Download the Vulkan SDK and install it from here (you can uninstall it afterwards) 2) Restart your PC 3) Open Cemu (use a recent version like v2.0-78), in the menu tick Debug -> Logging -> Vulkan validation layer 4) Trigger the glitch (avoid doing too much other stuff, it makes the log harder to read) 5) Upload log.txt

Not4ce commented 2 months ago

AMD has a track record of needing 1-2 years to get their drivers up to standard (we have reports like this for every new generation). This combined with the fact that it works on everything else points towards an issue with their driver. However, we don't know for certain unless someone does some digging. I will keep this open for visibility and in case someone with the affected hardware and the necessary know-how wants to look into this.

Thank you for getting back. I had a similar line of thought and I found this very strange, as I am unable to replicate this on RDNA 2

As per AMDs own documentation, their vulkan implementation is the exact same on both RDNA 2 and 3. I wish I had a discrete RDNA 3 card to test this, but if a future driver update from AMD remedies the issue, I will update or close this ticket

As it stands, I am disappointed at amd, as all handheld devices use AMD Apus, and I am unable to distinguish if this is an APU driver or RDNA 3 issue

PS: I tried seperate driver versions and ddu with no success. Thank you for keeping an eye on this

Not4ce commented 2 months ago

Something you can do to help in the meantime is upload a Vulkan validation log. The steps to do this are:

1. Download the Vulkan SDK and install it from [here](https://sdk.lunarg.com/sdk/download/latest/windows/vulkan-sdk.exe) (you can uninstall it afterwards)

2. Restart your PC

3. Open Cemu (use a recent version like v2.0-78), in the menu tick `Debug -> Logging -> Vulkan validation layer`

4. Trigger the glitch (avoid doing too much other stuff, it makes the log harder to read)

5. Upload log.txt

The last version I tried which is this was broken

However, 2.0-78 has seemingly fixed the issue! Heres the log attached below with vulkan debugger

What I can conclude is the last version I had downloaded (2.0-46) just did not play nice. Strangely my 6800xt never had issues with any version (including 1.2.6), so its rdna3 driver related bug on older builds log.txt

Image of 1.2.6 corruption:

1 2 6f

Thank you for walking me through this

Not4ce commented 2 months ago

Welp, @Exzap turns out Cemu2.0-78 only fixes the pebbles or greatly reduces the amount of initial corruption. After further playing the game and wind waker, the issue is still present. I have recorded a video for reference and the prior vulkan debug log is still valid

As usual, I'm unable to replicate this on my desktops with rdna2 and ampere cards and can reliably repeat this on any 780m based device like Ally/Win. The only fix is using OpenGL and rolling back drivers doesn't change anything

Kindly let me know if you require further logs or information, kind regards

https://github.com/cemu-project/Cemu/assets/167106518/90821224-c345-43a7-bb59-38f82fcb9135

Squall-Leonhart commented 1 month ago

As per AMDs own documentation, their vulkan implementation is the exact same on both RDNA 2 and 3. I wish I had a discrete RDNA 3 card to test this, but if a future driver update from AMD remedies the issue, I will update or close this ticket

Their Hardware ISA however, is not. RDNA3 has an ISA bug with signedness reinterpretation for example.

More recent findings have come to light regarding the Gfx11 Delta colour changes and their assumption of a general compressed layout for resources + abitrary reinterpretation for DCC introduced somewhat of a perfect storm for graphical misbehavior if assumptions have been made, or if a particular sampler needs a particular layout when attempting to reuse it in a feedback loop.

RDNA2 is affected under very specific conditions, the van gogh in the steam deck for instance has artifacts in WWHD, and the same set of extensions that should resolve RDNA3's texture layout misbehavior resolved similar troubles DXVK had with RDNA2 in games such as GTA4, with RDNA3 no known operations will result in a DCC being disabled, which was not highlighted in the ISA manual but had to be dug out of their PAL or MESA commits. GPU-Open has not been updated for these ISA changes either.

Not4ce commented 3 weeks ago

As per AMDs own documentation, their vulkan implementation is the exact same on both RDNA 2 and 3. I wish I had a discrete RDNA 3 card to test this, but if a future driver update from AMD remedies the issue, I will update or close this ticket

Their Hardware ISA however, is not. RDNA3 has an ISA bug with signedness reinterpretation for example.

More recent findings have come to light regarding the Gfx11 Delta colour changes and their assumption of a general compressed layout for resources + abitrary reinterpretation for DCC introduced somewhat of a perfect storm for graphical misbehavior if assumptions have been made, or if a particular sampler needs a particular layout when attempting to reuse it in a feedback loop.

RDNA2 is affected under very specific conditions, the van gogh in the steam deck for instance has artifacts in WWHD, and the same set of extensions that should resolve RDNA3's texture layout misbehavior resolved similar troubles DXVK had with RDNA2 in games such as GTA4, with RDNA3 no known operations will result in a DCC being disabled, which was not highlighted in the ISA manual but had to be dug out of their PAL or MESA commits. GPU-Open has not been updated for these ISA changes either.

Hey, thank you for clarifying that and filling in the gaps. I assumed 2 and 3 used the same ISA but that certainly explains the discrepency here

As far as I can tell, all RDNA3 cards are affected including someone I know with a 7900XTX. Seems like its a waiting game for RDNA 3 users which is a shame, as a lot of portables are/will be based on RDNA 3/3.5