Skip to content
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

[Regression] GOW3 Demo - persistent rendering error. #14106

Closed
JohnLoveJoy opened this issue Jun 27, 2023 · 20 comments · Fixed by #14107
Closed

[Regression] GOW3 Demo - persistent rendering error. #14106

JohnLoveJoy opened this issue Jun 27, 2023 · 20 comments · Fixed by #14107
Assignees
Labels
Driver: AMD Vulkan Proprietary or amdvlk AMD Vulkan driver Workaround To be fixed properly in the future.

Comments

@JohnLoveJoy
Copy link

Quick summary

After the last modifications in the vk*, GOW3(Demo) started to show rendering errors, overlapping objects and smoke as if there was incorrect transparency. The error continues after corrections: #14101

Details

When standing still without moving the rendering issues go up for an instant, the issue appear mostly in motion.

Build with regression

v.0.0.28-15255-Alpha

Attach two log files

RPCS3.log.gz

Attach capture files for visual issues

GPU_GW3_Static
IssueGPUGW3

System configuration

Specs 5500U @ Vega 7 + 12GB ram
Latest drivers.
Windows 10.

Other details

No response

@kd-11
Copy link
Contributor

kd-11 commented Jun 28, 2023

Luckily AMD's drivers are open source (mostly) so we can see why the split barriers don't work:
image

Without split barriers it just aggregates the incoming stages and emits a regular event which we already know doesn't work. This means the extension is functionally useless for anything older than RDNA1 and might as well be disabled to use a slower fallback.

@kd-11 kd-11 self-assigned this Jun 28, 2023
@kd-11 kd-11 added Driver: AMD Vulkan Proprietary or amdvlk AMD Vulkan driver Workaround To be fixed properly in the future. labels Jun 28, 2023
@kd-11
Copy link
Contributor

kd-11 commented Jun 28, 2023

Try #14107

@JohnLoveJoy
Copy link
Author

Try #14107

Thank you. I can test it if someone please send me a build with this pull. I'm having trouble compiling this, Sorry.

@MSuih
Copy link
Member

MSuih commented Jun 28, 2023

Follow these instructions

@JohnLoveJoy
Copy link
Author

Follow these instructions

Thank you. I tested, the issue is still there:

TELA000

RPCS3.log.gz

@kd-11
Copy link
Contributor

kd-11 commented Jun 28, 2023

Thanks. I guess we can just give up on everything pre-rdna as I initially feared.

@JohnLoveJoy
Copy link
Author

Thanks. I guess we can just give up on everything pre-rdna as I initially feared.

This game ran a bit faster before VK sync was implemented anyway. Just out of curiosity, would the semaphores and fences synchronization introduced in Vulkan 1.2 not fit in this case?

_"Now that we’ve gone through some mechanisms for setting up dependencies within a single device queue, let’s check out how we can orchestrate synchronization across different queues.

The Vulkan API provides two options, each with different purposes: semaphores and fences.

Note that Vulkan 1.2 introduced timeline semaphores, which is the new and preferred approach to semaphores going forward."_

https://www.khronos.org/blog/understanding-vulkan-synchronization

@kd-11
Copy link
Contributor

kd-11 commented Jun 28, 2023

The Vulkan API provides two options, each with different purposes: semaphores and fences.

Note that Vulkan 1.2 introduced timeline semaphores, which is the new and preferred approach to semaphores going forward."_

https://www.khronos.org/blog/understanding-vulkan-synchronization

In this case we need asynchronous host-signaling without fences. That's a bit of a rare use case and the spec is very vague about it. What we actually need is labels which work more like opengl fences. No submit, but host can poll to get signaled/unsignaled state. Events are supposed to do this but drivers are not implementing it the way we need so we just have to roll our own stuff for a bit longer.

@kd-11
Copy link
Contributor

kd-11 commented Jun 28, 2023

I've restored the custom labels. You can test the next build available on the PR.

@JohnLoveJoy
Copy link
Author

I've restored the custom labels. You can test the next build available on the PR.

It's back to working almost completely correctly as before, the only issue is on the character's head where the texture has become darkened with small blue fragments.

TextureGPUissue

How Kratos' head looks when rendered correctly(Master Build):

GPUissue2

RPCS3.log.gz

@kd-11
Copy link
Contributor

kd-11 commented Jun 29, 2023

How repeatable is it? I've simply returned the sync to the way it was before the first PR. I also cannot see any bugs when spoofing a vega igpu.

@kd-11
Copy link
Contributor

kd-11 commented Jun 29, 2023

If you can, try to reproduce this one #12021. That game triggers the bug immediately in the loading screens.

@kd-11
Copy link
Contributor

kd-11 commented Jun 29, 2023

@JohnLoveJoy How frequently can you reproduce this problem? Like if you boot the game 5 times is it broken 5/5 times?
EDIT: To clarify I mean with the PR, not master which we know is broken.

@JohnLoveJoy
Copy link
Author

JohnLoveJoy commented Jun 29, 2023

@JohnLoveJoy How frequently can you reproduce this problem? Like if you boot the game 5 times is it broken 5/5 times? EDIT: To clarify I mean with the PR, not master which we know is broken.

I tested it a few more times and the darkened texture issue no longer appeared. But those blue lines (as if the edges of the polygons are leaking) appear every time. Maybe this bug existed before and I didn't realize it, Since in the master it also appears...
GPU_Issue3

@kd-11
Copy link
Contributor

kd-11 commented Jun 29, 2023

@JohnLoveJoy Can you reproduce with 100% resolution scale? That could just be mesh-trimming artifacts that appear if the game is upscaled without patches.

@JohnLoveJoy
Copy link
Author

When I switch to the console's native resolution, blue lights start popping all over the scene. The strangest point is that when I try to record with Msi Afterburner, the bug appears much less, so I recorded with my cell phone: https://uploadnow.io/f/pvFggQF
With afterburner too:
https://streamable.com/jxmkd9

@kd-11
Copy link
Contributor

kd-11 commented Jun 29, 2023

I think those glitches are caused by enabling asynchronous texture streaming.

@kd-11
Copy link
Contributor

kd-11 commented Jun 29, 2023

Ok, I think I see a problem on the fallback path that is only present in the PR. This explains why async streaming is broken now but was ok in master.

@kd-11
Copy link
Contributor

kd-11 commented Jun 29, 2023

Should be fixed now, once the builds are ready.

@JohnLoveJoy
Copy link
Author

Should be fixed now, once the builds are ready.

The problem shown in the video was corrected, but the small blue edges on Kratos were still there... however, on Master there is the same defect, after investigating a little, this ends up being corrected when switching to ASMJIT

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Driver: AMD Vulkan Proprietary or amdvlk AMD Vulkan driver Workaround To be fixed properly in the future.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants