-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
vk: Enable use of a passthrough DMA layer if supported #9613
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
Conversation
GT5 crashes with out of video memory error |
That's an nvidia issue and he's already aware. Thanks for reporting it though. |
To clarify: there is a problem with nvidia drivers that I'll fix as soon as my PC is back to working order. I'll notify here when its safe to test on nvidia again. |
F1 2014 crashes when exiting the garage. |
This pull request is known to have problems, wait until kd asks for more testing |
The PR should be safe to test again (vulkan only). OpenGL side is still under development. |
how do i enable this? |
It's enabled by default, there's no setting |
Thanks ! Trying to test this ill post my experience soon |
On my i5 3470 gtx 750 ti it boost my fps from 30 fps on persona 5 attic room to 35 fps with windows 10 64 bit 8gb ram latest nvidia driver |
Also this is not present on master and reproducable, and 3d graphics work fine |
Poor performance was because of very bad settings I was using, turned out to be a false alarm. I believe that just leaves GT5 textures issue. |
@hvhbot I need your log file to replicate settings. |
RPCS3.log.gz |
- It is not possible to emulate passthrough memory cleanly, and we don't need to A stupid race condition appears when trying to synchronize DMA blocks with memory inheritance. Since the usage pattern is to acquire a range and then load or write+flush, this new data is going to be.. overwritten by the commandbuffer execution sequence later. Acquiring a scratch buffer to hold CPU content during the transition is not worth the effort.. as the data will be destroyed anyway during the transfer process immediately afterwards. Fixes data corruption when moving data around using the emulated DMA passthrough
@hvhbot Retest with new build once it compiles. |
Passthrough of cell memory has been disabled completely on NVIDIA and will use the slower copy mechanism. This is due to a driver quirk, nothing we can do about it. The driver seems to be caching page mapping until a block is erased, so unmapping a page and mapping it somewhere else doesn't work even if we create a new allocation. Since the first allocation still exists and cannot be removed until the draw calls are completed, it still uses the old mapping. This technically makes sense as an optimization but it really breaks games that do a lot of map/unmap/remap like GT series. |
Some spec violations fixes Make the option dynamic
- Fix range chaining. - Add validation checks that no overlaps exist.
- Just use the reversed type instead. The new uploader backend combines swizzle+swap so there is no need for tricks anymore
- The driver seems to cache page mapping as long as allocation has not been removed - This is undesirable as we cannot stop the emulator to remove stale allocations every time a page is unmapped
The Last of Us (BCUS98174) now has artifacts/flickering textures (including HUD), objects and even landscape after this PR... Confirmed using master 0.0.14-11605 (which is the one before this PR got merged). Here's the log for the 11605, before this PR: RPCS3.log And here's the log for the latest 11698 build: RPCS3.log |
Regression: Rainbow Flashing Textures on Killzone 3 on AMD #9791 |
Tag #9613 in the issue and note will appear in this pull request. There's one such example just above your message. It's annoying for the people who commented here to get notifications about new messages. |
This PR allows the GPU to read and write directly into host allocated memory which can give some performance improvements in some cases. It also includes misc fixes in other areas to tighten up the supporting implementation.
Summary
TODO