Could DX12 help DX9/DX11 titles?

Tarvaln

Senior member
Apr 28, 2004
311
2
81
I don't know much about API's so, this will probably be a silly question.

I'm guessing that DX12 would not help an older DX11 and DX9 titles with multi-threading by just running those games on Windows 10.
Would it be possible to inject or wrap a DX9 or Dx11 title to get the benefits of DX12 multi-threading or is this something that has to be done when the game is coded?
 

Gryz

Golden Member
Aug 28, 2010
1,551
204
106
No.

DX12 allows engine-developers to write a different style of engine. A style where they micro-manage everything more. Where they have more visibility on the hardware. The upside is that you are given the tools to write a more efficient rendering-engine. The downside is that if you want to do that, your job will be a *lot* more complex. It's fully possible that there will only be a very small set of software-engineers that will be able to really do that. Also, you probably need to rewrite large parts of your engine for every different hardware-gpu-architecture that is out there and that you want to support.

That's different from DX11 and earlier. For all those DXs there was one API for all different GPUs. That's less efficient. But a lot easier to program.

So no, DX9-DX11 games will not have any benefit of using DX12 technology. Unless the developer is willing to go back and rewrite their old engines.

I expect that even most *new* games that support DX12 will not actually implement a rendering engine that will make optimal use of the new DX12 features. I expect that most new games will behave just like the old DX9-DX11 games. Only a few high-profile games, and the high-tech engines (Unreal, CryEngine, Frostbite, etc) will actually make optimal use of the new possibilities.

On the other hand, I know f*all about rendering, so I might be completely wrong.
 

TheELF

Diamond Member
Dec 22, 2012
4,027
753
126
Also, you probably need to rewrite large parts of your engine for every different hardware-gpu-architecture that is out there and that you want to support.
You only write once, for DX,that's the whole point of DX in the first place.
What you say may hold true for the multicard setups ,where you can make different cards work together,but even there they said that they will sort cards into tiers,so devs will only have to programm once for every different pairing of tiers,there will be only 3 so not too much.
 

dave1029

Member
May 11, 2015
94
1
0
No.

DX12 allows engine-developers to write a different style of engine. A style where they micro-manage everything more. Where they have more visibility on the hardware. The upside is that you are given the tools to write a more efficient rendering-engine. The downside is that if you want to do that, your job will be a *lot* more complex. It's fully possible that there will only be a very small set of software-engineers that will be able to really do that. Also, you probably need to rewrite large parts of your engine for every different hardware-gpu-architecture that is out there and that you want to support.

That's different from DX11 and earlier. For all those DXs there was one API for all different GPUs. That's less efficient. But a lot easier to program.

So no, DX9-DX11 games will not have any benefit of using DX12 technology. Unless the developer is willing to go back and rewrite their old engines.

I expect that even most *new* games that support DX12 will not actually implement a rendering engine that will make optimal use of the new DX12 features. I expect that most new games will behave just like the old DX9-DX11 games. Only a few high-profile games, and the high-tech engines (Unreal, CryEngine, Frostbite, etc) will actually make optimal use of the new possibilities.

On the other hand, I know f*all about rendering, so I might be completely wrong.

My understanding was that DX 12 would emulate DX 9/11... but if it's emulating... shouldn't it still have less overhead and the multi-gpu support goodies?
 

TheELF

Diamond Member
Dec 22, 2012
4,027
753
126
No it won't emulate 9/11 (cough) it will be backwards compatible to those,just like windows 7 and 8 where you have to install directx9 if you want to play games that are based on that.
 

dave1029

Member
May 11, 2015
94
1
0
No it won't emulate 9/11 (cough) it will be backwards compatible to those,just like windows 7 and 8 where you have to install directx9 if you want to play games that are based on that.
That's so stupid. And here I thought we were making meaningful advances.
 

Carfax83

Diamond Member
Nov 1, 2010
6,841
1,536
136
DX12 can't do anything for older DX9/DX11 titles unless they receive a DX12 patch from the developer.

But, it's possible that WDDM 2.0 (Windows Display Driver Model) might help with performance, as it's a much more efficient driver model than previous versions..

It's conceivable that DX9 and DX11 games could run faster under Windows 10 than they did on Windows 7/8.1..
 

dave1029

Member
May 11, 2015
94
1
0
DX12 can't do anything for older DX9/DX11 titles unless they receive a DX12 patch from the developer.

But, it's possible that WDDM 2.0 (Windows Display Driver Model) might help with performance, as it's a much more efficient driver model than previous versions..

It's conceivable that DX9 and DX11 games could run faster under Windows 10 than they did on Windows 7/8.1..
That's already been proven by some guys with preview versions for testing.
 

Gryz

Golden Member
Aug 28, 2010
1,551
204
106
You only write once, for DX,that's the whole point of DX in the first place.
That was the point of DX. DX1 till DX11.
I agree with that point. You want to hide underlying complexity. Underlying details. Underlying diversity. To make the engine's programmer's job easier.

But I think they let go of that idea with DX12.
Because on consoles, you could increase performance if you could do stuff that you can't do with an abstract API. Stuff that makes use of certain knowledge about the details under the API. In DX1-DX11 you could not access the stuff underneath the API.

But with DX12 you can. They added a bunch of stuff to the API. Stuff that you'd normally want to hide under an API. This lets the programmers to use the hardware more efficient. But at a cost. And that cost is that you need to program/design/adjust your engine for different families of hardware.

What you say may hold true for the multicard setups ,where you can make different cards work together,but even there they said that they will sort cards into tiers,so devs will only have to programm once for every different pairing of tiers,there will be only 3 so not too much.
I think you are correct that some cards are very similar to each other. But I think different generations from different vendors are different enough that you might need to have separate code paths for each of those groups of cards.

Maybe something like: Maxwell GPUs, Kepler, GCN1.0, GCN1.1, GCN1.2, Intel iGPUs, anything older. That's already 7 different code-paths you might need in your engine. That's gonna be a lot of extra work. And probably very complex work. Because I would guess that quite a few engine-developers know the DX API very well, but have less knowledge about what is underneath.

That's why I wrote that I think the large engines will have good support for DX12 (Unreal, CryEngine, Frostbite, maybe Unity). And maybe some engines from very large developers, with big budgets (Blizzard, RockStar). Or developers that focus on high-end graphics (CDPR, 4AGames). But for the rest ? They will probably just use the generic DX12 codepath. Which means they will benefit a lot less of all the new performance features of DX12.

A company like From Software can't even get their UI or mouse- and keyboard-input right on PC. Do you think they will bother with optimizing their game for DX12 ? Hell no.
 

TheELF

Diamond Member
Dec 22, 2012
4,027
753
126
The dx12 api will still be an api,devs will not have to low level code for specific cards,dx12 will be the one doing the low level "talking" to the cards.
Goes for both your points.
 

PrincessFrosty

Platinum Member
Feb 13, 2008
2,300
68
91
www.frostyhacks.blogspot.com
DX12 allows engine-developers to write a different style of engine. A style where they micro-manage everything more. Where they have more visibility on the hardware. The upside is that you are given the tools to write a more efficient rendering-engine. The downside is that if you want to do that, your job will be a *lot* more complex. It's fully possible that there will only be a very small set of software-engineers that will be able to really do that.

What will end up happening is that we'll see a big improvement in commercially available engines such as unreal engine, Unity, Cryek etc, these benefits will be sold to development houses who don't have the in house talent to optimize game engines for DX12.
 

FxSoap

Member
Jan 25, 2005
29
0
0
Speaking of DX12, why do they not allow the standard operating systems (windows xp when it was Dx11) to be updated to the new engine/api?

I had to buy windows 7 to be able to play games that required it at the time (BF3)
 

cmdrdredd

Lifer
Dec 12, 2001
27,052
357
126
Speaking of DX12, why do they not allow the standard operating systems (windows xp when it was Dx11) to be updated to the new engine/api?

I had to buy windows 7 to be able to play games that required it at the time (BF3)

Cause they make money when you buy a new OS. They dangle it as an incentive to upgrade plus it's easier for support purposes. The changes under the hood between XP and Win7 was major to begin with.
 

DaveSimmons

Elite Member
Aug 12, 2001
40,730
670
126
What will end up happening is that we'll see a big improvement in commercially available engines such as unreal engine, Unity, Cryek etc, these benefits will be sold to development houses who don't have the in house talent to optimize game engines for DX12.

Exactly. But this will almost certainly only happen for the latest versions of the engines.

So a game using Unity 4 instead of 5 will never get faster. A game out next month using Unity 5 might potentially get a major boost from DX12, but that still might require the developer to offer a patch that includes an updated EXE and libraries.
 

Gryz

Golden Member
Aug 28, 2010
1,551
204
106
Like cmdrdredd says, it's a way to make money. Although in this case, upgrading to Win10 will be free (for people who have a genuine copy of an older Windows version). So they don't do this to make money.

Often it is a *lot* of work to back-port new features to old software. Because the new feature often depends on other new features. E.g. DX12 probably heavily depends on WDDM2.0 (the new Windows Display Driver Model). So if you want to put DX12 in Windows 7, you probably have to put WDDM2.0 into Windows 7 too. And WDDM2.0 probably uses new features in the Win10 kernel or some Win10 drivers. So now you need to back-port the kernel and the new drivers into Win7 too. Etc, etc.

People who have never written software, or never written software that is bigger than a toy-program, have no real understanding of the complexities that is in modern software. (Toy-programs: anything under 10k lines, where less than 3 people have worked on it).

Sometimes you just have to draw lines. This far, and no further. In this case: DX12 goes into Win10, and not in anything older. I think that is 100% reasonable of MicroSoft.