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
ogl bringup part 1 #12114
ogl bringup part 1 #12114
Conversation
- There is special handling for some cross-aspect bitcasts in vulkan, but this is not possible using OpenGL
- Gets rid of spammy BindBuffer calls on every draw
- Avoids making too many invocations, especially given the 1D nature of some GPU dispatch handlers
…alize - This cuts down processing time significantly by eliminating calls to memset_stosb
- Keep buffers around longer to allow driver heurestics to work - Properly initialize the shaders to allow optimal workgroup dispatch size
- Turns out the AMD driver really hates it if you render with a mapped index buffer. The driver internally seems to make a copy of the consumed indices and uses that. Very slow. I was able to isolate this after observing that glDrawArrays is not entirely shit, but glDrawElements duration scaled linearly with the number of vertices.
This PR doesn't resolve all OpenGL issues, there is still a ton of work to be done there. But at least I now know what the main problems are and how to resolve them. Some redesign will have to be done for this backend in the coming days to at least make it usable as a fallback. |
This PR fixes the menus on Uncharted 1 on OpenGL, but framerate got nuked out of orbit (from 60fps to 4). Log if it's worth anything: Edit: Same deal with Split/Second: |
Marked draft. I'll investigate all the regressions reported:
Even if I cannot fix them right now if the scope is too large, I'll try and find out the root cause and open a tracker with pending work. |
- Remove rogue glBindTexture calls and use gl commandstate object instead
@kd-11, |
Time for a retest @RainbowCookie32 @Realmantik |
|
That's enough for this PR. The last main remaining issue is AMD performance doing untyped copy (for bitcasts). That will need custom compute or graphics pipelines to basically reimplement glGetTexSubImage/glTexSubImage in shaders. |
Just a heads up @kd-11, I've seen multiple people on AMD GPUs with RPCS3 crashing with this error that's solved by reverting to 0.0.22-13670 (the build before this PR)
|
No new code was added doing a f32 conversion, which means it was always broken but another bug prevented the code from being run. Please open a ticket with steps on how to reproduce so I can investigate. |
Resident Evil Code Veronica still has artifacts. Many tickets have already been opened about regression, so I will open a ticket if it will not be fixed in future patches. |
A rather large set of OpenGL fixes. Initially I was investigating one bug, but this backend has suffered from a lot of rot and is missing a lot of features. Highlights:
Fixes some issues too:
Fixes #12083
Fixes #12082
Also partially addresses #11197
And hopefully #11941