Will GSDX update for DX12?
#41
GPU Drivers, if implemented correctly, uses multithread to send command to the GPU (they didn't wait DX12 to use your CPU Wink )

In short VU ~~ vertex shader, GS ~~ raserizer + fragment shader.

DX12/Vulkan won't have any effect on upscaling (well nearly). The new API will accelerate the 1x BASE because it is all about jobs submission (not the jobs done by your GPU [0]). The new API allows you to send more vertex data to the GPU and to use more draw call. The PS2 have already a maximum number of draw calls and it isn't 1 million Wink Still sending/streaming vertex data to the GPU is quite costly, I think it might save some CPU cycles for GS emulation.

[0] actually there is a new way to better dispatch jobs to your GPU but very hard to use / likely unapplicable for us.
Reply

Sponsored links

#42
Actually I am a bit stupid..
For sure the gs seems to be cpu depending... otherwise you wouldn't need different instructions sets or they wouldn't make any difference (at least in HW mode).

Still I thought that 99% GS means that the GS thread on the cpu is busy waiting ( while(waitforgpu()) {} ) for response and therefore consumes the cpu. So even if the cpu is at full performance it is still a gpu bottleneck and an artificial cpu bottleneck that would be solved in the instant the gpu would respond.

(I would guess pcsx2 uses a lot of busy waiting to remove latency)
Reply
#43
(03-20-2015, 09:52 AM)gregory Wrote: The new API allows you to send more vertex data to the GPU and to use more draw call. The PS2 have already a maximum number of draw calls and it isn't 1 million Wink
yeah, by the given reports the draw call rate is nine times faster but, I don't know how it will offer performance boost since, it doesn't help in the switching of the render targets. care to explain the process In-depth ?
We're supposed to be working as a team, if we aren't helping and suggesting things to each other, we aren't working as a team.
- Refraction
Reply
#44
The new API won't remove the way. You can do them differentely (and be more clever). In the end you still need to wait the rendering if you want to read the texture. You still need to flush current stuff if you change target/alpha/ (aka hardware stuff)

The thing is the drawing pipeline of GSdx is based on the drawing pipeline of the ps2. For example the ps2 sends textures/changes blending/.... every draw. It was efficient on ps2, it isn't on PC. Vulkan allows you to use the pipeline in a different way that it is better suited to new architecture.

Anyway don't worry, I'm sure globally it will increase the perf but maybe not a factor 2×-10×. However it will increase a lot the complexity. It will move thousands of line of codes from the drivers to GSdx.

Which in-depth process?
Reply
#45
(03-20-2015, 01:14 PM)gregory Wrote: Which in-depth process?
On how the faster draw call rate will provide to be a Increase in performance. (since, render targets are used as texture in the draw calls,I'm not sure on how it will provide to be a performance boost) so, could you provide a brief explanation on that ?
We're supposed to be working as a team, if we aren't helping and suggesting things to each other, we aren't working as a team.
- Refraction
Reply
#46
A draw call is 3 big steps.
1/ validate the cmd
2/ send the cmd to the gpu
3/ do the draw

First step will be removed so it will decrease cpu usage. However a debug mode of the driver would have been enough.... Note on APU, less cpu => less watt => more watt for gpu => less throttle of the gpu => fps++ (actually - instead of --)

On 2nd step, maybe it would be more efficient to send a batch of draw call instead one. Driver likely does this kind of stuff but if you want to read a texture during the transfer you're screwed. Driver doesn't know the future. The application can predict it, therefore you can group some transfers in an efficient way.

Api won't change the behavior of step3.
Reply
#47
If I understand your statement correctly then, fewer draw calls means that gpu can transform and render much faster than you can submit them. If we submit fewer Textures with each call, then the CPU will be almost full of usage and the GPU will be idle. so, The CPU won't be able to keep up with the GPU fast enough. hence, this process will put the whole toll on the CPU. what DX12 does is entirely opposite to it, isn't it ? Is this concept correct ?
We're supposed to be working as a team, if we aren't helping and suggesting things to each other, we aren't working as a team.
- Refraction
Reply
#48
(03-20-2015, 09:52 AM)gregory Wrote: GPU Drivers, if implemented correctly, uses multithread to send command to the GPU (they didn't wait DX12 to use your CPU Wink )

According to the picture, the API calls of Direct3D 11 are multithreaded but the UM driver and KM driver aren't. Do you mean the driver of Iris Pro Graphics 5200 is implemented incorrectly?

Do you mean some GPU drivers that support up to Direct3D 11 support multithreading for the UM driver and KM driver? Do you have a reference? Which drivers support that?
Reply
#49
I don't know for directx but I'm sure they use a bit of multithread (Direct 3D). I mean when you call any opengl command, it often returns very quickly. Honestly you don't need a new API to multithread a sub-layer of the driver. Beside what does this layer exactly do ? I think you can run the full driver into another thread than the rendering thread. Most of the time you don't need any sync (all write). So when the driver send the data to the GPU, the application ask the driver more work. Reality is more complex than this picture. The real gain of this new API is on mobile and APU. Desktop will gain new effect but I won't expect a 3x gain on frame rate (or in low resolution/filtering situation)...
Reply




Users browsing this thread: 1 Guest(s)