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

[Task] Implement surface pitch transformation to enable proper data inheritance. #10208

Open
3 of 8 tasks
kd-11 opened this issue Apr 28, 2021 · 11 comments
Open
3 of 8 tasks
Assignees
Labels
In Progress This issue is actively being investigated at the moment. RSX Unimplemented

Comments

@kd-11
Copy link
Contributor

kd-11 commented Apr 28, 2021

Relates to #9133
This causes data leaks which then become a serious problem when WCB/WDB interaction comes into play.

Flow:
Surface A, pitch X modifies memory.
Surface B, pitch Y also modifies the memory. Modifications at A should be present at B but due to pitch mismatch, they are lost with the current setup.
Surface B, which does not contain the correct data inherited from A, is written to CELL.
Surface A fails memory test later and is reconstructed using memory from CELL which now has holes in the render.

This is what causes games to render incorrectly when RCB/RDB is enabled. Pitch translation is critical for getting buffer recreation to load from memory instead of clearing to 0.

Workplan (new implementation)

NOTE: Sub-tasks restructured to remove aggressive changes that would have broken resolution scaling.

@kd-11 kd-11 self-assigned this Apr 28, 2021
@kd-11 kd-11 added In Progress This issue is actively being investigated at the moment. RSX Unimplemented labels Apr 28, 2021
@Augusto7743
Copy link

Thanks very much kd-11 :-)

@kd-11
Copy link
Contributor Author

kd-11 commented May 8, 2021

Implemented locally, but I need some other code to first get upstream before this can be introduced to the core product. I also have some minor performance concerns about this, but optimization is possible before submission.

@Linear524
Copy link

I waited loooooong for this changes :) WCB/WDB function broken in many games (GT6, Beyond Good&Evil, FC3, etc)
Hope those issues will be fixed too :)
Thank you KD-11 !

@Linear524
Copy link

@kd-11
Sorry for the dumb question, but - will you implement next goal "Implement surface cache read from the bo list. Read color buffers should integrate with this." in this year 2022 ?
I just hope to see missing screen dirt effects in TLoU and working MLAA in this title and Uncharted 3...

@kd-11
Copy link
Contributor Author

kd-11 commented Oct 12, 2022

Yea, it is mostly done, I just had some problems with it and took a break to work on other things first. It should be completed this quarter nonetheless.

@Triticum0
Copy link

Ultra Dimension NeptuneV WCB function is broken.

@Linear524
Copy link

Hi KD-11 ! :)
Is there any plans for RSX emulation improvements and fixes this year ?)
There is no news about new implementation (#10208 workplan) so we're a bit worried...

@kd-11
Copy link
Contributor Author

kd-11 commented Feb 28, 2023

Hi KD-11 ! :) Is there any plans for RSX emulation improvements and fixes this year ?) There is no news about new implementation (#10208 workplan) so we're a bit worried...

The workplan is still ongoing. I only paused briefly to work on other things for a while to avoid burnout. There are a couple of things I'm working on right now, I'll resume once that is done.

@Linear524
Copy link

Thank you !
(__/)
(='.'=)

@kd-11
Copy link
Contributor Author

kd-11 commented Jan 4, 2024

Move blit target resources to the surface cache. This will merge all GPU-resident data in one structure.

This has become increasingly more important as it is the only fix for the CPU-blit vs GPU-blit differences that we still have. It is an insane amount of work though so I won't rush it. I'll likely start working on it towards the middle of the year.

@Augusto7743
Copy link

Sincerely ... RPCS3 current version run all my PS3 disc games .. only few issues in some games not breaking the gameplay.
I need say thanks very much for you kd-11.
In Linux even if Nvidia video cards run with better performance than in windows the nvidia drivers not allow use system memory being video memory ... In Linux nvidia GPU memory is only in own video card ... windows is in video card and in system memory. Why you say it ? Simply you have done amazing optimizations so using less video ram for same work.

Your more recent work in WCB+RCB and others settings has done an boost in performance. Some games are having issues. After I post in correct topic WCB+RDB topic about it.
However not demanding an fix in your direction, but I wish good luck in your path and want an "company" seeing your work =)

and even if you not had done recent optimizations I wish goo luck for you ... You have done much work and need return in you path.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
In Progress This issue is actively being investigated at the moment. RSX Unimplemented
Projects
None yet
Development

No branches or pull requests

4 participants