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
Merged

rsx: Texturing improvements followup #5726

merged 12 commits into from
Mar 17, 2019

Conversation

kd-11
Copy link
Contributor

@kd-11 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 12 commits March 15, 2019 14:51
- 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
- Figured out why it breaks things, ofc can't actually check for coverage when there is no proper fbo data persistence
- 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
- The section needed starts at image origin, not transfer origin!
- 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
- 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 mentioned this pull request Mar 16, 2019
13 tasks
@hyperspeedgx
Copy link

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

@theoldsport
Copy link

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

@MarioSonic2987
Copy link
Contributor

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

Before:

After:
image

@uaqlover
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
Copy link

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

@paxsyr
Copy link
Contributor

paxsyr 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 has been minimized.

@uaqlover
Copy link

@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 : )

@stride21
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
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

7 participants