-
-
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
AAA fixes #4973
AAA fixes #4973
Conversation
kd-11
commented
Aug 12, 2018
•
edited
Loading
edited
- Separate texture read barrier from full pipeline barriers and avoids a lot of unnecessary sync/work caused by doing a full sync for texture read barriers. Applications tend to spam a lot of the texture read barriers so its better to let the cache deal with a raw miss than to try and optimize with a barrier hint.
- ZCULL: Implement targeted synchronization to avoid stalling for too long gathering results that may be unused.
- ZCULL: Defer conditional render evaluation to avoid a hard stall whenever a conditional render register is touched.
- ZCULL: Change from arbitrary counters to microsecond counters to determine evaluation deadlines. The result is much more consistent throughput and latency.
- Improve aliased memory contention evaluation. It is common for the same memory address to be used as both a color target and depth target in a draw, but configuration registers ultimately determine whether the hardware will write depth or color, or both and one overwrites the other.
- Fix a vulkan regression (Regression: Castle Crashers after #4469 #4923)
- Improve rsx timestamp accuracy to simulate nanosecond timing.
- Fix blit engine writes to active rendertargets for vulkan.
- Improve vm deadlock evasion; should avoid some situations that would cause the emulator to lock up and die (e.g prince of persia, warrior within)
- Improve memory tracking so that writing to a large block of memory should reach any framebuffers that live in the disturbed range. Only basic invalidation has been done right now.
- Enable swizzle formats for all textures unless proven otherwise. Tests have shown that Z scanning is valid for almost all formats except some special compressed ones like DXT.
- vk/gl: Several minor optimizations to hash functions and resource management to squeeze out a few more frames in some applications.
Far Cry 2 |
Edit: Now Fixed |
[Update] For the AAA fixes PR, observations:
|
@legend800 freeze for Wipeout HD no relate this PR, is old regression |
@Zangetsu38 Wipeout HD has no stability issues for the past year. I test it almost every week. Rock solid for me. I finally traced it down to TSX and disabling it fixed the game and probably unrelated to this PR. I'll do a pass on everything again with this off and update the previous comments in the next hour. |
This PR also fix an issue with the game hanging so now you can progress further in the story. |
GCC build on Ubuntu 16.04 (Travis is borked atm to get this far).
|
The last of us crashes when WCB is enabled. |
@legend800 Very likely caused by #4920 same issue is seen with RDR if TSX is enabled you can't go ingame after SPU Realms merged. Delete comment if this is true, lets keep this PR clean of anything unrelated. |
@legend800 that problem happens without tsx also, it has happened to me alot of times testing Wipeout, so it's not related to this pr |
i am using ryzen and i don't have the problem of TSX so all games are displaying very good graphics Wipout is going okay with Little glitches but is working |
@Lagahan while SPU realms has been merged into master, the xfloat accuracy has to be manually enabled in config.yml [Accurate xfloat: true]. Anyway, neither that or the TSX regression is related to this PR. For reporting on this PR, test against the latest master builds (after SPU realms merge). |
RDR no longer locks up the whole emulator for AMD cards, you can get past the title screen and into the game now. Still tends to desync and crash withing the first 20 seconds of gameplay, but at least there's some progress. |
After fighting my way through #4974, now even with the optimal settings (that work on master) and caches built, GoW: Collection managed to regress in a third way now: GoW2 is now really prone to crashing in the menus, and the most likely offender is the full frame option in the game settings, that causes graphical glitches too. Ah yeah, system is: i7 7700HQ, 16 gigs of ram, gtx1060m with 6 gigs of vram and on vulkan backend. Win10. Logs: Edit: Managed to have it stay in the menu without crashing. Now I can show you a log about it, and a pic: Edit 2: Tested with manual libs too (spurs_jq and libsre), to no avail. The graphical artifacts only occur if I turn on the "full frame mode" in the game settings. Edit 3: Issue also exists with accurate xfloats enabled. Doesn't seem to have regressed with SPU Realms, especially as things were working fine on master. I managed to have it crash without pulling RPCS3 with itself, here's the log:
Edit 5: The issue persists in a slightly different form on OpenGL as well. |
I noticed last month when I was experimenting with zcull that the zcull sample report_to_main_memory does not work in RPCS3. It does not work with this PR either (build rpcs3-v0.0.5-0a30c563_win64). @kd-11 - maybe you could take a look at this since you are currently improving zcull. If you prefer, I can open a new issue...let me know. |
951799a
to
fa51306
Compare
How i see that pictures, in every picture is lower framerate over 2-3 fps |
Tekken tag 2 also got graphical errors in this PR like in some stages there is a green screen and in some stages characters are not rendered properly and in master build it works fine but there is a fps boost in this PR |
Among my games i've found GoW HD and Ninja Gaiden 3 demo regressed graphicaly the same way as on the screens above. found out both regressed from 23c74a3 |
tested i am having the same issue |
- A possible deadlock is still present if rsx is trying to get a super_ptr whilst the vm lock holder is in an access violation This patch makes this scenario very unlikely since each block need only be touched once
- Use proper time checking; depending on what is being done one 'tick' can be almost a millisecond long or several nanoseconds - Avoid spamming the system timer unless necessary
- Some third party programs fall apart when multiple contexts are created
- Cascade memory writes by invalidating 'downstream' subsurfaces - Fixup; always resolve for overlapping surfaces before sampling (force atlas gather test)
- Some formats are proven to ignore swizzle flag - DXT compressed textures - COMPRESSED_BG_GB class textures - Some applications are using swizzled wide integer formats so those are confirmed to swizzle
- WIP optimizations for GL backend
- Tags framebuffer resources on first use (when on_write is called to verify memory) - Texture cache now selects the best match and even sorts atlas writes with memory write order to avoid older data showing over newer one
- Some games overflow the program buffer e.g Resistance games The observed overflow is one instruction longer, likely an engine bug with counting instructions
Batman: Arkham Asylum |
@EmulationChannel have you tested against master? I don't see a log for master. What is the error? What system do you use? Your contributions are so often not helpful, because you are missing information and your tests are very superficial (missing comparisons with master etc.). People are making fun of you with emojis on Github and Discord, because of that. Please change that. |
Reported regressions remaining are likely caused by other changes already merged in master. I'm merging this as-is and if there are problems remaining please open an issue tracker. |
Prince of persia broken too. But i managed to boot the game by installing games update than copying files to main game then all other files to POP0 folder. But as you can see rendering is bugged old log https://github.com/RPCS3/rpcs3/files/2299920/RPCS3.log.gz |