RPCS3 / rpcs3

PS3 emulator/debugger
https://rpcs3.net/
GNU General Public License v2.0
15.17k stars 1.89k forks source link

Some thoughts towards rendering support #2592

Closed komawoyo closed 7 years ago

komawoyo commented 7 years ago

http://www.tomshardware.com/news/star-citizen-vulkan-api-support,33955.html

This is regarding to most of the issues I see for RPCS3 on github

Although I think its great that support for multiple back end is great - I believe that to see great progress in terms of performance, there should be a focus on specific renderer such as the decision made by the developers of star-citizen. Its seems more feasible to support something that gives you the best performance in the long run similar to the idea of why integrated graphics support is not recommended vs Nvidia/AMD cards. Vulkan supports both Windows 10 + Linux, DX12 is only on Windows - time and effort wise, I see that it makes sense to put more effort into finding bugs on Vulkan

AniLeo commented 7 years ago

If you see latest pull requests they're mostly for OGL and VK, OpenGL being the focus as the most accurate render atm

kd-11 commented 7 years ago

Reverse engineering requires alot of experimentation which means alot of backtracking as well. For every feature that lands in, we end up rewriting it over and over until it breaks no games. Add in the complexity of vulkan (which I've coded for since the very hour it was lauched) and the process will actually become slower and more tedious. Its much easier to experiment with OGL where you dont get punished too heavily for implementing things wrong and once it works, it gets ported to vulkan and Dx12.

komawoyo commented 7 years ago

Ah yes, I mean when users are reporting bugs, I feel like they should be focusing more on reporting bugs on Vulkan/OGL renderer because I feel that its more time efficient since Vulkan/OpenGL by itself can already target a plethora of platforms. I think time spent to port to DX12 is extra risky time spent - like what you said - sometimes you have to rewrite everything (which means you would have to port it once again to DX12)

Personally I feel that the porting process to other renderers (if needed) should be done after it seems to become stabilized (in terms of comparability)

But I suppose this is something testers should keep in mind too - it wouldn't make much sense to report the issues on DX12 yet... but instead find more bugs on the main renderer - Vulkan/OGL(?) because spending the time to fix the bugs in DX12 is time "wasted" towards advancement in performance gains

As for as I know, the Cemu emulator is able to make extreme progress with their renderer is because they stick and focus on one - OpenGL

twdarkeh commented 7 years ago

Cemu is also closed source. RPCS3 is open source. If you disagree with the path the developers are taking, you're more than welcome to fork the repository and start developing yourself.

As for supporting all three renderers, I disagree with you wholeheartedly. Developing for all three now, at the same time, will ultimately save time later. By doing the work for all three a little at a time, you're not trying to catch one up when it's several years worth of commits behind.

komawoyo commented 7 years ago

yes I have already started taking some of the ideas from the unofficial builds of dolphin and applied them to rpcs3 - seems interesting in terms of performance gains - although not publicly published as it needs more work

fagoatse commented 7 years ago

Vulkan spec is still WIP so there might be breakages whereas OGL is pretty much done so there's two are essential. D3D12, on the other hand, doesn't make much sense but if there's a person willing to maintain it then why not.

On top of it there are driver issues so the ability to compare results with different rendering paths is invaluable.

komawoyo commented 7 years ago

Nice, i'm sure Vulkan specs are still improving but not sure if its still consider as WIP. I do see production games and games engines with Vulkan

kd-11 commented 7 years ago

I think they mean that the spec is updated every 2 weeks with new features and/or clarifications. Its not that big a deal if you stick to a given spec version, In our case its 1.0.3 but I use spec documents from about version 1.0.23. Trying to keep up with every new extension is not feasible, but not a big issue. @komawoyo I agree with you iiuc; the problem would be splitting effort across backends, but currently opengl is the focus, with vulkan and dx12 getting features ported over when work on GL is light, e.g I am yet to port over texture cache rewrites to vulkan and dx12 and that might not happen any time soon since another rewrite is in the works (OGL only again as well)

ghost commented 7 years ago

I completely agree with komawoyo. RPCS3 should really only have 1 backend and that's Vulkan. There is no need for DX12 since Vulkan is supported on both Windows and Linux. Focusing on more than 1 backend is slowing down progress greatly.

ghost commented 7 years ago

If I recall correctly, I believe that KD-11 said that there are certain bugs that happen when using the Vulkan API that cannot be fixed as of this time. I unfortunately don't know the specifics of the matter, but I think that pretty much the reason why we can't fix these bugs are because we weren't the ones to develop the game in first place, and we can't change the code the game uses. Hopefully KD-11 can provide further insight on this if this is indeed still the case.

AniLeo commented 7 years ago

@Nikorasu95 Just because Vulkan is brand new, shiny and can have better performance than OpenGL doesn't mean that RPCS3 should have it as the only render. OpenGL shouldn't be removed as it's needed to implement and fix stuff as kd previously mentioned.

RainKikyou commented 7 years ago

Vulkan in the amd gpu(GCN3+)there are many problems