-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
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
rsx: Restructure ZCULL handling #12020
Conversation
- It's over 1k lines of code in its own namespace; it really should be in its own file
- If nobody is reading RSX reports, do not be in a hurry to write them - Requires HLE of some methods (cellGcmGetTimestamp) to function correctly
- This is the only way to know if a report is being used for ZCULL or timestamps only. If the game is not reading the ZCULL data, the access guards will detect it and optimize usage around that.
- Pass a sync address to the backend - Ignore the hint if the query is running in lazy mode - Do not submit CBs too close to each other. Submits are expensive
- This has a negative impact when ZCULL is active due to spamming __rdtsc - While the method is fast, it is not free and some checks are done before the instruction can be emitted Let's use the saved time to actually get something useful done
- Do not acquire eng lock while holding the page lock RSXThread may be waiting on the page lock and will never ack the pause request
- Reset backend interrupt in core handler - Separate memory config interrupt from regular backend interrupt
RPCS3.zip |
|
||
check_state(ptimer, flush_queue); | ||
|
||
// Disabled since only ZPASS is implemented right now |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe add a TODO here
set_eval_result(pthr, failed); | ||
} | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
mssing newline
MGS4 crashes with this error (RTX 3070) |
Confirmed, I'm investigating. |
R&C (and infamous to some extent) have other issues related to high draw call count. I'm aware of the problems and investigating solutions. |
- This is much better than polling on atomics every cycle for something that happens a few times during gameplay
Sonic Unleashed crashes with Ignore what I said, the last commit fixes Sonic Unleashed, no crashes with Verification failed |
4 fps tests with before and after pics here https://docs.google.com/spreadsheets/d/1qKh85piJXA8JsSC_Hp8Fs2L3l9ouyhWHXWimyak1TGk/edit?usp=sharing . Uncharted 2 seems to be now broken for me with the exact same settings which are not the most stable but at least consistent in reaching the test zone. logs attached of the 2 issues that occur on PR when I attempt to reach save point. I do not even make it past the fist loading screen properly on the PR. Not sure if anyone else can test uncharted 2 and see if it is an issue for them. Going to retest on updated PR. |
Okay ignore my uncharted 2 comment. Seems to work with the latest version of the PR just posted for windows as per the below: Added to my google sheet for comparison https://docs.google.com/spreadsheets/d/1qKh85piJXA8JsSC_Hp8Fs2L3l9ouyhWHXWimyak1TGk/edit?usp=sharing |
Got this error in GTA V |
I know what's causing it, I'm working on fixing it without hurting performance. |
- The interrupts are for multithreaded signals andmake the main loop run more aggressively for the next cycle
A tentative fix is up for the crash. Let me know if you're still getting crashing once its done building. |
@kd-11 tested for half an hour in gta v crash seems gone |
@cipherxof, how did you fix MGS4 z-fighting issue on master builds ? Far ground textures is always flickering for me... |
They don't. Custom builds use an old hack with exaggerated polygon offset. |
All latest version keeps freezing on GoW3 and Ratchet & Clank titles... |
Please open a proper bug report ticket with appropriate logs and steps to reproduce. |
Introduced a new bug on mac os: |
The motivation behind this one is interesting. The reason ZCULL emulation is so slow is that NVIDIA lumped in timestamp reading with passing occlusion samples as one object called a report. So if a game is just using the reports to tell the RSX time or check on RSX progress using timestamps we cannot tell if it wants to read the timestamp or wants to know how many samples have been rendered so far. Timestamps are very cheap to calculate, but counting samples is very slow and punishing as we have to send work to the GPU and wait for the results to come back. However, while making a hacked build for debugging, I realized something - most games use a library call to read timestamps despite the fact that they can just read the values themselves! This gives us a semi-reliable way of knowing if the game just wanted to see the current timestamp allowing us to skip doing the expensive sample evaluation every time.
Changes: