Posts: 12
Threads: 2
Joined: Oct 2011
Reputation:
0
I'm a bit of a new coder and I have been teaching myself by trying different things and learning by doing. I was looking at DirectX 12 and the Vulkan API and want to see what I can do to help. It may be a few months before I have anything workable, but what features would be beneficial to PCSX2 from Vulkan to help reduce driver overhead and provide some possible optimizations. Just to make sure I was going through everything correctly, PCSX2 is written in C++ not C# correct?
Posts: 20.369
Threads: 405
Joined: Aug 2005
Reputation:
555
Location: England
You are correct in your language observation.
As for Vulkan, all we need is the API, we don't need any specific optimisations. The only use the new API's are to us is the reduction of overhead for AMD graphics cards in OpenGL when compared to Direct3D 11. That is about the only enhancement it will bring us (which is why we haven't jumped on it)
Posts: 12
Threads: 2
Joined: Oct 2011
Reputation:
0
12-29-2016, 12:04 AM
(This post was last modified: 12-29-2016, 12:06 AM by Shinmegumi.)
Well, I was looking over the implementation of it and I still have a lot of learning to do when it comes to C++. I think the API calls shouldn't be too difficult and it will be a great learning experience for me. If it improves things for AMD users, it may be a worthwhile to get it running and use it over OpenGL as the performance difference I have seen between Vulkan and OpenGL on Nvidia is non-existant in most cases.
--Edit/Sidenote--
I've been using PCSX2 since v.96 and even earlier and I've always enjoyed all the hard work you guys put into it. If I can improve my skills while helping you guys, I'm happy to do it.
Posts: 3.526
Threads: 6
Joined: Dec 2013
i dunno what to expect from vulkan. the only game i got right now is zoe2. i know that you claim it's got a mean drawcall penalty. could vulkan help with that?!? i assume tiny drawcalls are nothing that should run thru any of the vertex or command buffer pipelines at all. just immediate drawcalls. that should remove that api (lock, write, release, transfer, draw) overhead. maybe?!?
Posts: 12
Threads: 2
Joined: Oct 2011
Reputation:
0
12-29-2016, 12:30 AM
(This post was last modified: 12-29-2016, 12:32 AM by Shinmegumi.)
I'm sure refraction can answer that question better then I. Which leads me to another question. I know that the perfomance boost when using multiple cores isn't the greatest because of how the VU and other systems in the PS2 are threaded, but would there be any benefit to completely integrating core detection and utilization into PCSX2 and using some of the multithread features available to Vulkan and DX12?
--Edit--
I think async compute is possible and very well handled in Vulkan from the documentation I have been reading on it. Not 100% sure though as I am working from memory after a few hours of reading, so don't quote me.
Posts: 1.473
Threads: 26
Joined: Jan 2016
Reputation:
42
Also for Vulkan. Isn't it possible to port OpenGL to Vulkan? I think it can be done , I read about it somewhere. First porting the basic functionality which in performance will be the same as opengl or maybe a bit worse , and after that the vulkan features can be added like multithreading , async compute and such ..
Posts: 12
Threads: 2
Joined: Oct 2011
Reputation:
0
I hope to figure all of this out. I plan on pulling a copy of the code and compiling and testing it myself and hopefully, if it meets standards, have it implemented as part of PCSX2. I know multi-threading can be huge if I can offset the threads properly in my testing. I just hope to see performance increases across multiple types of hardware.