-
-
Notifications
You must be signed in to change notification settings - Fork 274
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
Steel Battalion & Line of Contact: pgraph_surface_invalidate: Assertion `surface != d->pgraph.zeta_binding' failed. #893
Comments
Can you get a backtrace (in a debug build) when that assert hits? |
|
Adding a pgraph trace as well |
It looks like the surface_put is evicting the overlapping zeta surface. Interestingly the zeta surface offset is set to 0 and depth testing and writes are both disabled, so it may be that the intent of the game is to ignore the zeta surface entirely and xemu is being unnecessarily protective of keeping a valid surface bound. I can't tell from the pgraph log what the actual address of the zeta surface is, can you run again with
and post the last 20 lines or so of output? I expect that it'll tell us the zeta surface is being evicted for overlapping, and it'll also tell us the actual vram addr. |
|
Thanks! What I see from the pgraph log (filtered for relevance) is: It sets Zeta to 0x2F7C000 in an operation where Color is set to 0. Color is masked off, depth is masked on.
A large number of draw operations occur (presumably it's building up a depth map for shadows or something) It then briefly sets
but sets Color to 0x303C000, Zeta to 0 and disables zeta writing/testing before doing any actual drawing.
As you can see from the last output before the assertion, it is attempting to evict 2f7c000, but for some reason it is still bound as the zeta surface despite the fact that the offset was set to 0. I assume this is the ultimate cause of the issue and will see if I can craft a test case to exercise this assertion. |
Also the original issue #116 |
I was able to create a test case that reproduces the conditions I see from the pgraph log (and in #932) |
Can confirm Line of Contact gets in game. The performance is awful at the moment, but the assert is no longer happening. |
Title
https://xemu.app/titles/43430002/#Steel-Battalion
https://xemu.app/titles/43430009/#Steel-Battalion-Line-of-Contact
Bug Description
Game Loads to Intro Screen, waiting for the "Demo" to load to preview gameplay/rendering causes the crash/freeze
Steps to Reproduce:
Launch Game
Wait for the Gameplay Demo to begin
Expected Behavior
Demo to Load and not crash.
I assume it does finish loading and just can't figure out how to render. It does get past this in CXBX but rendering is not correct.(Not sure if you share any render code).
https://i.imgur.com/kmLMx3N.png
xemu Version
Version: 0.7.0
Branch: master
Commit: 9c06980
Date: Sun May 8 01:23:05 AM UTC 2022
System Information
CPU: AMD Ryzen 7 2700X Eight-Core Processor
OS Platform: Linux
OS Version: Void Linux
Manufacturer: AMD
GPU Model: AMD Radeon RX Vega (VEGA10, DRM 3.44.0, 5.16.20_1, LLVM 12.0.1)
Driver: 4.6 (Core Profile) Mesa 21.3.7
Shader: 4.60
Additional Context
gdb
output:The text was updated successfully, but these errors were encountered: