Newsgroup: it.comp.giochi.action
Titolo: Dx12, console, pc e conigli. Si, conigli.

John Hable, Filmic World’s boss and former Naughty Dog developer in an 
interview with GamingBolt, shares his thoughts on the improvements that 
DX12 and Vulkan will bring and states that console games will benefit 
less from the new APIs, because console games are mostly GPU bound 
whereas Hable claims that many PC games are bottlenecked by the CPU.
 
    “The short answer is that newer APIs will make the CPU faster, but 
will probably not have much effect on the GPU,” Hable said to 
GamingBolt. “The improved APIs change how long it takes for you to tell 
the GPU what you want it to do, but they have no effect on how long it 
takes the GPU to actually execute those instructions. “
 
Benefits in CPU restricted scenarios will be great, when GPU is the 
bottleneck though there won’t be any changes if any:
 
    “If your game is bottlenecked by the CPU, going to DirectX 12 or 
Vulkan will greatly help your game. But if you are bottlenecked by the 
GPU then the updated APIs will help little or not at all. Since many PC 
games are bottlenecked by the CPU, you will see massive gains there. 
However console games are usually bottlenecked by the GPU so I would 
not expect significant changes from newer APIs. The GPU is the same 
regardless of if you are using OpenGL, DirectX11/12, or Vulkan.”
 
Hable continues to clarify further:
 
    “Let’s say that you are drawing a cute little family of bunnies. 
These bunnies are made of triangles and each bunny has its own color 
map, normal map, etc. With OpenGL or DirectX 11 you would have to 
describe each of these bunnies one at a time. The first bunny has a red 
color map. The second bunny has a blue color map. The third bunny has a 
green color map. And every frame you have to tell the GPU the same 
thing over and over again.”
 
    “DirectX12 and Vulkan are much more efficient. In the first frame, 
you can describe all the bunnies to the GPU. You tell the GPU that 
there is a red one, a blue one, and a green one. Then they can all be 
drawn together. With DirectX 11 and OpenGL you have to describe all the 
bunnies every frame but with DirectX 12 and Vulkan you can just say 
“draw all the bunnies”. I’m oversimplifying but that is the idea.”
 
    “The key idea is that the communication between the application and 
the GPU is much more efficient. You can convey the same information 
with less overhead. But the amount of time that it takes to actually 
render those bunnies is the same. The GPU does not care if the commands 
came from DirectX 11/12, OpenGL or Vulkan. It takes the same amount of 
time to actually draw those triangles. But the communication (which 
takes CPU time) is much faster.”
 
DX12 and Vulkan will offer great gains for PC games
 
For PC games the more efficient APIs will offer a big advantage as they 
will assist in implementing direction to the GPU, whereas console games 
already have the GPU working hard so there would be fewer benefits and 
gains.
 
    “So if your game is bottlenecked by the overhead of telling the GPU 
what you want to do, then the APIs are a huge help. This situation 
happens a lot on PC games where you have a powerful card sitting idle 
because it can draw things faster than it can be told to draw them. But 
console games tend to keep the GPU working hard so there are less gains 
to be made.”
 
    “Although the GPU might make some gains along the way. Ideally you 
would render objects from front to back to minimize the amount of 
overdraw in a scene. Unfortunately that would have too many state 
changes and it would take DirectX 11 and OpenGL too long to translate 
those commands to the GPU. Many games are intentionally making “bad” 
decisions for the GPU to help out the driver on the CPU.”
 
    “For example, let’s say that your bunnies have multiplied and now 
you have 5 red bunnies, 5 blue bunnies, and 5 green bunnies. For the 
GPU, the ideal way to render the bunnies is front to back to minimize 
overdraw. But the cost of telling the driver to do that would be too 
slow with DirectX 11 and OpenGL.”
 
    “Telling the GPU to render red, blue, blue, green, red, blue, etc. 
would have too many state changes. So you have to render all the red 
bunnies together, followed by all the blue and green bunnies. With 
DirectX 12 and Vulkan, the overhead is low enough that we can render 
the bunnies in the optimal front to back order. Of course I’m 
oversimplifying and there are other considerations but the point is the 
same.”

 will probably not have much effect on the GPU,"
 
Questo pensavo fosse chiaro fin dal principio. Anche per Mantle era la
stessa identica cosa, il vero boost prestazionale lo dava sulle macchine
con CPU di cacca. Che poi rimanendo in casa AMD, TUTTE le CPU siano di
cacca, e' un altro paio di maniche.

Scriveva Topolaccio lunedì, 25/05/2015:

Il boost prestazionale c'era e c'è in tutti gli engine in cui si aveva 
e ha un picco in un solo thread e una non corretta distribuzione del 
carico computazionale e mi spiace davvero dirlo ma purtroppo ancora ne 
esistono un fottio di engine del genere. A 30fps magari riescono 
comunque a spingere quello che devono ma a 60 e passa spesso e 
volentieri ti ritrovi di fronte con un solo core che finisce a "muro" e 
gli altri che trotterellano mentre la gpu aspetta che qualcuno gli 
fornisca i frames da renderizzare. :D In tutti quei casi 
dx12/mantle/vulkan e', sarebbe e sara' una manna dal cielo.