James Cameron's AVATAR™: THE GAME [BLUS30374] - Foliage Flickering
Quick summary
The foliage flickers on both my Windows PC and my Mac. Seems to be a revival of #11552 which should have been fixed by #11568.
Details
The foliage textures flicker a lot, everything else looks fine.
As outlined in #11552 and #11568 I enabled "Allow GPU Host Labels" in the config yet this didnt resolve the problem.
I tried it on version 0.0.28-15355-1371bf89 on both of my machines (W11 and macOS):
Windows 11 (22H2, build: 22621.1992) Intel Arc A770 16GB (driver: 31.0.101.4575 [latest as of writing this]) Ryzen 5600 32 GB RAM
macOS 13.4.1 (c) M1 Mac Mini 8 GB RAM
Attach a log file
Attach capture files for visual issues
BLUS30374_20230715193304_capture.zip
System configuration
My Windows PC: Windows 11 (22H2, build: 22621.1992) Intel Arc A770 16GB (driver: 31.0.101.4575 [latest as of writing this]) Ryzen 5600 32 GB RAM
My Mac: macOS 13.4.1 (c) M1 Mac Mini 8 GB RAM
Other details
No response
That's because arc and M1 do not support the feature needed here. There's really no other way around it, other than using strict rendering mode and running at very low fps.
·E 0:00:14.285845 RSX: INTEL driver does not support passthrough DMA buffers
Though now that I think about it, we're doing the check through a whitelist. Maybe arc fixed their issues? It's highly unlikely given that passthrough doesn't even work properly on NVIDIA cards. Only AMD has full support for this.
That's because arc and M1 do not support the feature needed here. There's really no other way around it, other than using strict rendering mode and running at very low fps.
Just tested with strict rendering mode toggled on: Performance neither degraded nor did it fix the flickering. Happens on my Mac as well (I turned GPU Host Labels off again on both). I guess its because they do not support double precision floats? (attached new log file). Not sure if I should report this to Intel or not. RPCS3.log.gz
I guess its because they do not support double precision floats? No, it's because the game actually starts overwriting VRAM based on when it sees labels.
You're right, even strict mode isn't strict enough here, because we'd actually get single digit framerates if we paused the pipe for real. The only solution is to configure the host GPU (arc/geforce/etc) to tell the game when it reaches the fence position. This means the GPU needs to have access to the vm memory. Most GPU drivers don't like our virtual memory because its meant for CPU use and comes in small memory mapped chunks.
Workarounds include having a separate CPU worker periodically unblock process threads but performance will be atrocious. I guess we can keep the ticket open until I have a working workaround committed at least.
I looked into this briefly a few weeks ago, M1 does expose the extension we need, but it doesn't seem to work right. Probably some other TBDR gotcha where I didn't flush the subpass when it wanted. I'll come up with a workaround to execute a host event pump via the FIFO puller.
I'm seeing the flickering as well in this game with Linux, RPCS3 0.0.32-1-1c16ada6 Alpha (Flathub), and AMD Vega 6 graphics. I enabled both "Allow GPU Host labels" and the strict mode. I'm guessing this is expected for now, but due to the GPU capabilities mentions above I just wanted to provide an additional data point in case for this GPU, this wasn't expected.
Update: I also tried the oldest version still on Flathub, 0.0.31-1-c02aae41 Alpha. It doesn't address this either.
@ell1e, @Azonnali is that still an issue?