Skip to content
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: Texturing improvements followup #5726

Merged
merged 12 commits into from Mar 17, 2019

Conversation

Projects
None yet
7 participants
@kd-11
Copy link
Contributor

kd-11 commented Mar 16, 2019

A follow-up to the last PR addressing a few issues

  • Tons of accuracy and stability/crash fixes in texture cache and blit engine
  • Vastly improved synchronization mechanism (DMA flush)
  • Implemented blit engine rotations on the GPU
  • Lays groundwork for the next task (variable sized framebuffers to preserve memory contents)

Tracker: #5708

kd-11 added some commits Mar 11, 2019

rsx: Fix zero-pitch textures
- Assumption here is that only texel (0, 0) is accessible. Inline with other pitch 0 operations.
- TODO: Verify pitch 0 does not advance in Y either
rsx/cache: Debugging bugs introduced by the atlas coverage check
- Figured out why it breaks things, ofc can't actually check for coverage when there is no proper fbo data persistence
vk/gl: Synchronization improvements
- Properly wait for the buffer transfer operation to finish before map/readback!
- Change vkFence to vkEvent which works more like a GL fence which is what is needed.
- Implement supporting methods and functions
- Do not destroy fence by immediately waiting after copying to dma buffer
rsx: Fix dst upload block region
- The section needed starts at image origin, not transfer origin!
vk/gl: Improve memory tag sync and test
- Properly pass parameters such as rsx-pitch to the surface store
- Do not crash if a surface fails verification in flip, use fall-back instead
rsx: Improvements to memory flush mechanism
- Batch dma transfers whenever possible and do them in one go
- vk: Always ensure that queued dma transfers are visible to the GPU before they are needed by the host
  Requires a little refactoring to allow proper communication of the commandbuffer state
- vk: Code cleanup, the simplified mechanism makes it so that its not necessary to pass tons of args to methods
- vk: Fixup - do not forcefully do dma transfers on sections in an invalidation zone! They may have been speculated correctly already

@kd-11 kd-11 referenced this pull request Mar 16, 2019

Closed

Regressions from #5675 #5708

13 of 13 tasks complete
@hyperspeedgx

This comment has been minimized.

Copy link

hyperspeedgx commented Mar 16, 2019

Ninja Gaiden Sigma 1 regression fixed in this PR, thank you!

@theoldsport

This comment has been minimized.

Copy link

theoldsport commented Mar 16, 2019

Supersonic Acrobatic Rocket-Powered Battle-Cars no longer requires CPU blit

@MarioSonic2987

This comment has been minimized.

Copy link

MarioSonic2987 commented Mar 16, 2019

Beyond Two Souls no longer needs CPU blit for proper textures.

Before:

After:
image

@uaqlover

This comment has been minimized.

Copy link

uaqlover commented Mar 16, 2019

  • 1- [Surf's Up [BLES00083] Regression is gone and it's playable - commit d42d0847
  • 2- Monster Jam: Path of Destruction [BLUS30561] Regression was fixed in 5d7b41a3 still broke in latest build
  • 3- Pro Evolution Soccer 8 games was fixed till latest build
  • 4- Ben 10™ Galactic Racing [BLUS30822] Fatal Error is gone and stable till latest build
  • 5- NASCAR® Unleashed [BLUS30806] it stable till latest build

Regression is gone and it's playable

FPS_ 29 56 _ Vulkan _ 0 0 6-7881 _ Surf's Up  BLES00083  16_03_2019 12_21_37 PM

still has a Regression Monster Jam: Path of Destruction [BLUS30561]

FPS_ 29 41 _ Vulkan _ 0 0 6-7881 _ Monster Jam_ Path of Destruction  BLUS30561  16_03_2019 12_20_29 PM

@theoldsport

This comment has been minimized.

Copy link

theoldsport commented Mar 16, 2019

DeS black flicker seems fixed- haven't encountered it in the last hour

@creeperjedi

This comment has been minimized.

Copy link
Contributor

creeperjedi commented Mar 16, 2019

H.A.W.X can now go ingame without the need for CPU Blit. OpenGL can get ingame but has issues, while Vulkan can't get ingame at all.

OpenGL Issues

The game manages to get ingame but suffers from weird texture corruption that only appears ingame:
Broken Graphics
Correct textures:
Correct Graphics

Please let me know if there is any more information you would like me to supply.
OpenGL Log: OpenGL RPCS3.7z.zip

Vulkan Issues

As the shaders are being compiled right before it would enter ingame, the screen freezes and spams the log with RSX: Blit request consists of an empty region descriptor!. It then proceeds to crash with RSX: class std::runtime_error thrown: Assertion Failed! Vulkan API call failed with unrecoverable error: Device lost (Driver crashed with unspecified error or stopped responding and recovered) (VK_ERROR_DEVICE_LOST).

Please let me know if there is any more information you would like me to supply.
Vulkan Log: RPCS3.7z.zip

@kd-11

This comment was marked as resolved.

Copy link
Contributor Author

kd-11 commented Mar 17, 2019

Just delete your shader cache and the far cry 2 issue should be fixed.

@uaqlover

This comment has been minimized.

Copy link

uaqlover commented Mar 17, 2019

@kd-11 this pr and #5675 fixed like 10 games with Fatal Error Issue and like 30 games overall improvement in graphics thanks a lot for the hard work and sorry if i post some games unrelated to this pr only was thinking maybe you could fixed : )

@kd-11 kd-11 merged commit 3ef16be into RPCS3:master Mar 17, 2019

2 checks passed

continuous-integration/appveyor/pr AppVeyor build succeeded
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
@stride21

This comment has been minimized.

Copy link

stride21 commented Mar 24, 2019

Beyond Two Souls also had an issue where cpu blit would make the colors look correct but when you using your ability the environment can randomly turn black. Since this PR makes it so you only need WCB now both look correct.

Before WCB only:
Capture
Before WCB and CPU blit:
before
After WCB only:
after
After WCB and CPU blit:
after with blit

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.