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
Asyncevents #1992
Asyncevents #1992
Conversation
|
||
static AsyncRequests s_singleton; | ||
|
||
std::atomic<bool> m_empty; |
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
bbox, perf queries, and efb poke/peek are unlikely to happen if the GPU thread is actually busy (from the CPU's perspective, the results would be unpredictable). Is there some way we can optimize based on that? |
@magumagu likely. My primary goal right now is to support non-blocking events for swap request and efb pokes. |
|
||
AsyncRequests(); | ||
|
||
void PullEvents() { if (!m_empty) PullEventsInternal(); } |
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
Report: In OpenGL with AMD |
@ZephyrSurfer fixed. Could you please also try D3D? I guess there the performance difference could be bigger. |
@degasus This benchmark in D3D is so fast with this PR it makes no difference if Skip EFB Access or not. |
So any remaining reviews? |
Melee is a lot slower in this Pull Request as of my last check. |
What does Melee use? EFB pokes or peeks, XFB, perf querys or bbox? How can I reproduce this issue? |
@JMC47 oh, do I remember correctly that Melee was the game which had a slowdown because of the faster vertex loader jit? So this could be a dual core issue within this game... |
Yeah, perhaps. But, I am indeed getting slowdowns in some titles with this. |
Tested since weeks. This is really faster than master but force Paper Mario : The Thousand Door to crash after the opening scene.(With the boat) |
@Mullin This also happens for me on master. So does master works fine for you? |
JMC47> yeah, doesn't seem like a performance regression any more SO ready for merging |
This PR creates a new async event handling framework. It is used to queue swap events, efb access, bbox reads and perf querys reads into a single atomic read on the gpu thread.
There are likely still lots of optimizations remaining, so this PR tries to not be slower and to clean up the code a bit.