Review Index:
Feedback

Microsoft Introduces us to DX12: My Thoughts on the Industry Moving Forward

Author: Josh Walrath
Subject: Editorial
Manufacturer: Microsoft
Tagged:

What We Know about DX12 So Far

Unfortunately, we know relatively little about DX12.  There was an initial assumption that DX12 would not require new hardware, as it would not have new features that relied on new hardware.  So any current DX11 compliant part will be DX12 compliant.  Well, part of this is true, and the rest is not.  Most current DX11 parts can take advantage of the low level efficiencies gained from DX12 programming (AMD GCN, NVIDIA Fermi and above, and Intel’s 4000 series and above), but Microsoft has yet to detail the other changes that WILL require new hardware to be fully DX12 compliant.  Throughout the next year and a half, we will get bits and pieces of what DX12 offers over DX11, other than the low level programming differences between the APIs.

View Full Size

A more granular look at what the driver overhead of DX11 does to performance and how it compares to what Microsoft is introducing with DX12.

Matt Sandy of Microsoft put up a nice little blog post that quickly details three major functions that DX12 will encompass.  These are pipeline state objects, command lists and bundles, and descriptor heaps and tables.  Matt describes these in a cursory, but effective manner.  I am afraid that I cannot compress the information any more than what he has done in his blog.  For a more detailed description, definitely look at his post.

I can try to summarize what Microsoft is aiming at with DX12, however.  Essentially the rendering pipeline in DirectX did a lot of the work for engines and applications, but did not exactly do so efficiently.  This high level abstraction of operations allowed for great portability because DX handles a lot of the low level work.  Unfortunately, one of the big issues is that the device driver has to wait for certain operations and state changes to occur before it can complete the current operation and submit more work.  The big hit comes with draw calls, which are negatively impacted by the relatively inefficient abstraction layer and driver interactions.  IHVs, like NVIDIA and AMD, work around this on a case by case basis, as is seen by the very frequent driver updates which improve performance (sometimes dramatically) for individual applications that have been recently released.

DirectX 12 will allow for some interesting work to go on in the background.  It will permit a much more low level of control of the hardware device from applications.  The really smart guys who design engines (Andersson, Sweeney, Yerli, etc.) can really optimize their engines to extract the greatest (or nearly greatest) amount of performance out of any hardware configuration.  They can control memory addresses for data assets directly, rather than having to ask DirectX to translate these addresses and handle all memory transactions.  This results in a lot of extra performance, but it is very intensive in terms of programming prowess and manpower.  Not every game developer has programmers that can handle that type of workload, and so they rely on engine level optimizations to achieve good performance.

View Full Size

What exactly a lower level API such as DX12 (and theoretically mantle) will provide for  developers and IHVs.

Even if a game developer does not institute lower level hardware control, the lower driver overhead and increased multi-thread aware software stack in DX12 will still allow for greater overall performance than what was seen in DX11.  A licensed engine which is developed for DX12 will still institute many low level operations that will take advantage of the much slimmer abstraction layer separating software from the driver/hardware.

Almost all DX11-compliant hardware will work in DX12 (the Radeon HD 5000 and 6000 series excepted).  These performance advantages will be applicable to current hardware, so users do not have to upgrade to see the benefits.  Unfortunately, they will still miss out on all the other features, requiring new hardware that will be designed specifically for DX12.  Considering that the first DX12 titles are not expected out until the Holiday season of 2015, there will be plenty of chances (and reasons) to upgrade before that time.

So what will become of Mantle?  AMD’s competitors believe that most development and porting engines over to Mantle will stop due to the (not so) impending release of DX12.  Personally, I think that quite the opposite will happen.  I believe we will see a few more developers start nosing around Mantle, not only for what performance advantages they can see from that API, but also to get their programmers experienced in going that close to the metal.  Porting from Mantle to DX12 should be relatively straight forward, due to the similar ways these APIs address hardware.  They certainly are not identical but, according to what we are hearing from developers, they are similar.  For AMD, Mantle allows them to more adequately tune drivers so that, when DX12 finally hits, they also have that experience under their belt.  Driver development for DX12 also takes a load off of the IHVs.  While performance improvements will continue through time, the onus of providing much of that performance through specialized drivers will be taken away from the IHVs.

View Full Size

Microsoft hinted a few more upcoming features for DX12 that will not see the light of day until 2015.  IHVs are likely quite pleased, as they can offer new and improved hardware to encompass these features.

DirectX 12 is a much needed improvement to the line.  It has been four years since DX11 was released with two minor iterations in that time.  We have seen the rise of extreme programmability and parallelism that requires new thinking on the software side in order to harness that type of horsepower.  My guess is that DirectX 12 will improve general computing in GPUs and APUs to a great degree as compared to what we have seen with DX11 and DirectCompute.  The ball has been rolling for some time, but now that the industry has seen the advances that DX12 brings to the table, I am sure it will lead to some interesting developments on both the hardware and software sides.  Good times await enthusiasts of this industry.

April 2, 2014 | 10:02 PM - Posted by Anonymous (not verified)

hello josh,
well i am kinda disapointed at your article, in my opinion it doesnt encompass all the possibilities, since you do not have any facts, and all you have is guessing, which is not a probleme, untill you start making it sound like facts.
" However, with the original timeline for DX12, AMD saw an opportunity to push these features as an exclusive for their hardware, thereby potentially increasing sales and support before the standardized DX12 is released."

the other possibility which is the most likely, giving the statements of AMD, Dice, Developpers, and the state of the annoncement of DX and how far it is, it goes as follow :
AMD Gpus are good, yes to cut the prices sometimes you get crapy cooler, but the architecture itself is often very good, sometimes better than Nvidia, but Nvidia has always been in front, because their Gpus get better drivers, and more often, fixing bugs, and increasing slightly fps.
so amd and devs asked microsoft for years to offer lower lvl Api, but never happened, so AMD decided to push the industry in this direction with Mantle.
1st hoping for Mantle to work and forces microsoft's hand to change the standard, or 2nd if it didnt to push for a new standard Api.
a lower level API strips Nvidia from it's Major tool, Drivers, and saves AMD resources and time, and AMD securing 3 major graphic Engines to support mantle shows that they didnt just plan on releasing it with couple games, just for the marketing, but they were planning the long run incase microsoft didnt give up.
all what AMD and johan andersson said during APU14, supports this theory, and the state of DX12 that microsoft showed 6 months after Mantle's announcement, also support, that all the talk about DX12 just meant ppl talking about the new DX and how it should be, not necessarily means they had any plans to go lower level before mantle showed up.

April 3, 2014 | 02:09 AM - Posted by wujj123456

I agree this is more likely. I don't see why a company would spend significant resources while they know all they can do is to spend a fraction and wait.

It's also possible that given current competitive environment, AMD feels rushing out Mantle is both helpful in later DX12 development and catching up the performance gap if any. However, this is assuming Mantle doesn't consume significant amount of resources, which only AMD knows.

April 3, 2014 | 01:15 PM - Posted by Josh Walrath

It is hard to say, from an outside perspective, what exactly happened in those DirectX meetings with all of the IHV's putting in their $0.02.  I know that developers and IHVs have been unhappy with the state of the abstraction layer, and how much performance it sucks up.  How poorly threaded it is... etc. etc.

Something else to consider is that AMD started developing Mantle quite a while ago as well.  Perhaps talks about DX were not going to their liking, so they started their own little path.  Obviously between here and there things have changed... but yeah, what was the initial impetus for AMD to develop Mantle in the first place?  Would love to hear some more inside scoop from all sides.

BTW, it is entirely appropriate to be disappointed in my article.  Feedback is good, sharing info is better!

April 4, 2014 | 06:52 AM - Posted by Anonymous (not verified)

in a completely unrelated Note, AMD's Freesync is on the way.
VESA has validated the SCR (Specification Change Request) made by AMD in novembre, to change Displayport 1.2a , the demande was listed as "DP1.2a Extend MSA Tmg Para AMD SCR"
and now the change shows up in the aprouved list "DP1.2a Extend MSA Tmg Param Ignore Option AMD"
sources:
http://www.hardware.fr/news/13640/amd-freesync-proposition-adoptee-par-v...

so if i understood correctly, everyone who has monitor with displayport 1.2a, would be able to download firmware for the monitor, and driver or software to enable it.

April 4, 2014 | 07:05 AM - Posted by renz (not verified)

so does freesync work on games yet? last time when AMD make the demo they never demo real game running the demo machine

April 4, 2014 | 07:32 AM - Posted by Anonymous (not verified)

well that's basicly the point of it, games xD
and it works the same way G-sync does.
the good news is, the vesa change makes it a standard, and a free one at that, so manufacturers will adopt it very fast, because it adds value for free...so better margins.
this is not proprietary technology, since AMD is busy with mantle, intel could offer support for it faster.
and i am guessing nvidia will just wait for devs to add the option ingame, i dont see nvidia offering an option to enable it through drivers, when they asked ppl to pay 600$ monitor for it 4 months ago

April 3, 2014 | 03:46 AM - Posted by Anonymous (not verified)

All these PcPerspective write ups forget or ignore what Nvidia said themselves about DX12 lower-level abstraction, that its optional.

April 3, 2014 | 12:44 PM - Posted by Josh Walrath

I think I did sorta cover that.  Perhaps in not so many words... but basically devs have the option of not worrying about the low level stuff and letting DX handle that functionality.

April 3, 2014 | 03:11 PM - Posted by Anonymous (not verified)

What ?

DX doesn't automaticly do it for them. That's crazy.

There wouldn't be a need to drop it for backwards compatibility because as you said it be handled by DX magicly.

Engine and game still have to be coded to take advantage of it and Nvidia wont push it because its on the CPU side which they don't have at the moment.

April 3, 2014 | 03:46 PM - Posted by Josh Walrath

Whoa, whoa, whoa... I didn't mention anything about magically doing anything.  I am looking at a high level when saying "DX will handle" stuff like memory addressing and transactions.  Eg. hey, the engine wants to access this texture data, but it does not need to define the addresses.  So, the abstraction layer does all that translation.  Not entirely sure what the rest of your statement actually refers to, sorry.

April 3, 2014 | 07:59 AM - Posted by Ophelos

I don't see why microsoft is even going down this road with DX12 for the simple fact that most game engines will be running on Linux. Like currently Epic Games is working on getting a port of UE4 working on linux, an i'm sure Crytek is doing the samething with the CryEngine which will be supporting Mantle.

So unless Microsoft opens up DX12 for more platforms other then it's own products this will become useless before it gets released to public.

April 3, 2014 | 12:46 PM - Posted by Josh Walrath

Well, the vast majority of PC gaming still happens on Windows, for better or for worse.  DX12 will be across PC, mobile, and xbox one.  I guess that is their idea of opening up to different platforms...

April 3, 2014 | 02:52 PM - Posted by Anonymous (not verified)

well microsoft doesnt really have a choice, win8 failed, and xbox failed, and dx being seriously threatened, what do you think they can do ?
the consoles ps4 sells twice as much, xbox api and tools sucks in addition to the spec, so microsoft need somehow to attract more devs to it's console, reworked api is a must since devs hated the current one, better games and exlusive games need larger player base, unifiying dx12 on desktop and xbox, allows devs to have larger player base consol+pc, with easier porting, could save xbox and give a boost to windows sells, as for them to expanding linux/mac not gonna happen, you dont ask a company that has monopole on a market to give it up.

April 3, 2014 | 08:07 AM - Posted by Anonymous (not verified)

""So did Mantle motivate Microsoft to create DX12? No, that project has been in the works for quite some time,""

Bullshit!! how did you know? how did you assume that MS is telling the truth and AMD is liying?

I'm not a direcx or Microsoft hater, but the quality of writing @ PCPER is headed downhill. Which is very sad nonetherless.

April 3, 2014 | 09:07 AM - Posted by renz (not verified)

so what about you? did you believe MS never have any planned on DX12 before AMD become public with Mantle? or you simply don't believe both?

April 3, 2014 | 09:46 AM - Posted by brisa117

What I think he meant was that it's completely irrational to think that Microsoft started development (from scratch) on DX12 because of Mantle. Mantle more than likely accelerated their plans for developing DX12, but you can't create a new API in six months. They clearly were working on it, at some level, prior to the Mantle announcement.

Also, don't criticize the writing on this website when half of your sentences aren't capitalized, you have way too many quotation marks around the article quote, you misspelled "DirectX", and you use the "@" symbol like the actual word "at". Do you know how much crap the writers would take here if they submitted articles like your post?

And if you want to jab at anyone's writing on this site, it should clearly be directed towards Scott Michaud. Half of his sentences don't make sense. His writing is very emotionally charged and fully of weird opinions (but of course, everyone is welcome to their own opinions).

April 3, 2014 | 11:15 AM - Posted by Allyn Malventano

...so you guys think that Microsoft knee jerked after Mantle launched, and somehow managed to get DX12 up and running, along with a game running under it, this quickly? Apparently you guys are not familiar with the (lack of) speed with the Microsoft development cycle...

April 3, 2014 | 01:18 PM - Posted by Anonymous (not verified)

hello allyn,
well i remember johan andersson saying that Dice needed to rewrtite the whole BF4 on Mantle, in about 4 months(even if it took a month delay still), you can go double check, and i am talking about the whole game, playable, not a single map, with a single car on a single graphic card or a system, on a video run, that we dont even know the specifications, it's not like if forza is now available on PC anytime soon, is it possible to setup such a demo in such short time in these conditions, yes i do believe so.
and i do believe they heard about mantle way before apu14 annoncement, these are big companies, they have ways to have info leaks, to adapt before hand, but i strongly doubt there was any kind of low level dx in developement in 2012 period, and i wouldn't believe otherwise untill they say it loud and clear, and explain why no devs or major manufacturers have been kept in the dark, especialy when another party states the opposite, and i rather listen to the other one who make a statement and wait for me to, come up with a conclusion he didnt even say.
just show me where microsoft stated they were working on lower level DX, not talking about it, but developing it, as far as i know nowhere.
beside microsoft lazyness isn't an option here, you are forgeting the failure of the xbox1, they stand to lose alot more than just an API, with all the money they spent on the console, and windows 8, they cant just keep failing, i bet microsoft is putting everything they got to save the xbox1, ie API, they have nothing more important right now

April 3, 2014 | 10:25 PM - Posted by Anonymous (not verified)

Bravo.. And this is what most people are saying and thinking. It would be soo funny if AMD leaked the info to a third party and made Nvidia and tech sites look silly as usual

April 4, 2014 | 08:30 AM - Posted by Allyn Malventano

...and in your example, that gives Microsoft 2 months to come up with a new API, as well as implementing it sufficiently enough for the game developer to start coding for it. It only seems less realistic in your case.

Thinking about these timelines, consider that AMD was more than likely in some of these supposed early meetings with Microsoft and NVidia. What if, hypothetically, Microsoft proposed the idea first, or it came up at a group meeting among the three. How does that make AMD look for coming up with your own API that does something very similar, which aside from making them look good for a few months, could arguably unnecessarily fragment the codebases. Windows developers might have been less likely to adopt Mantle if they knew DX12 was coming earlier (and gave similar or even increased benefits), and if AMD has claimed they were working with Microsoft earlier than the date they released Mantle, it makes them look even more underhanded.

April 4, 2014 | 10:18 AM - Posted by Anonymous (not verified)

allyn,
well if i said some other company did this, a company that doesnt own an API on desktop, owns a Console with a similar Api, who ran last year at E3 a demo for the same game on DX11.
if we knew the state of developement of DX12....there are so many things that makes it doable.
the person posting couple comments bellow, gave also a valide theory, game running on DX11 last, so they updated the renderer for DX12 this year.
or what do you really know about the state of developement of DX12 ? nothing!
we know that DX12 will have optional close to metal feature + traditional DX11, so i could very well rename and tweak DX11 into DX12, and call it DX12 beta developement.

and allyn, do you really believe that Nvidia wouldnt have used this against AMD ? this doesnt seem a sensitive information to be under NDA, everyone knows about lower level, everyone know it was in the talks for over a decade, just spill out when developement started...well untill then i still believe AMD and Dice who gave me a clear answer, i have the right the ignore, Nvidia's vague statement open to interpretations.

April 3, 2014 | 12:49 PM - Posted by Josh Walrath

Everyone is keeping pretty tight lipped about the timeline, but there really is no way to entirely flesh out an API of this nature in the 6 months since AMD released Mantle.  NV mentioned that they started doing driver development on initial DX12 builds about a year ago.  It certainly looks to have been in the pipeline for longer than that, but I do believe that Mantle did help to push MS to accelerate their introduction of DX12.

NVIDIA, AMD, Intel, and others all work extensively with NVIDIA to help define and develop DirectX... so they all know what the timelines were for this release.  

April 3, 2014 | 10:29 PM - Posted by Anonymous (not verified)

Nvidia actually said 4 years (Its on MS and Nvidia site). Which I don't believe for one second. Intel and AMD mentioned no time frame.

We have MS and Nvidia saying 4 years, and we have Intel and AMD saying no time frame... Hmm Who to believe

PS I think Nvidia and MS are telling Ponies

April 3, 2014 | 02:12 PM - Posted by Anonymous (not verified)

"Bullshit!! how did you know?"

Because this sort of thing isn't developed into a working state in the timeframe it took them to "respond" to mantle. The idea itself isn't new but making it work take a lot longer than the few months between mantle's release and the dx12 forza demo.

Even if microsoft were the evil beings we want to label them and they've had this technology working but hidden away from the public all along, they have been doing low level hardware coding for their consoles for way longer than mantle has existed and have waaay more experience doing so. Bringing it to PC as a vendor-locked option would be breaking the cease-fire on that front, which AMD isn't guaranteed to win now but will be beneficial to PC gaming as a whole.

April 3, 2014 | 03:42 PM - Posted by Anonymous (not verified)

The Forza Demo is a joke.

Microsoft showed a Forza Demo at E3 on Nvidia hardware last year. Microsoft got a lot of flak for it and now conveniently everyone forgets.

It took them 4man months to update the renderer from DX11.x to DX12 and that's all they did. Update the renderer for one circuit so they can demo it as a DX12 render tech demo.

There was no HUD no different views cycled just one 3rd person view and the constant 60fps weren't even constant. Throughout the demo the fps kept dropping in corners and the biggest fps came on a straight away.

How easily this site and people are fooled.

April 3, 2014 | 10:37 PM - Posted by Anonymous (not verified)

This site and everyone else running with the DX12 story aren't fooled whatsoever. What gave you that idea?

April 3, 2014 | 10:35 PM - Posted by Anonymous (not verified)

Exactly! And AMD came out and said no DX12.. Suddenly Nvidia, MS and Intel went in to overdrive and out pops news of DX12.

I honestly think DX12 will not have an easy time as in past. After all its just anther proprietary API which this article conveniently forgot to mention alongside Glide and Mantle etc.

Mantle will work on Windows, Linux and most others, so I don't see the problem, but I do see problems for DX12

April 4, 2014 | 07:13 AM - Posted by renz (not verified)

but they only work on AMD GCN cards only. AMD said they want to bring Mantle to linux but we will see how that goes. DX12 is only for windows platform but it works with any hardware.

April 3, 2014 | 09:26 AM - Posted by JoeJoe (not verified)

I have managed to upgrade my entire system to haswell and i am saving up to finally get a new GPU, i was basically waiting for the GTX800 series to come out. I'm just very gutted that they rushed out there (for the reasons mentioned above, like mantle, xbone) to announce DX12 a whole year ahead and make "news", but havent thought that they might be hurting their sales.

IN THEORY dx11 capable cards post fermi will be dx12 compliant, but u'll need newer hardware to access some features of the API...with dx12 hitting the shelves with a AAA title an entire year from now, im not so sure buying a maxwell based gpu is a good idea anymore.

Holidays 2015 is gonna be a year after maxwell comes out and probably a good time for nvidia to release a re-iteration of that chip (a-la keppler, 6xx-7xx series). What i'm scared of is that ill buy the 870, for example, expecting that card to last for at least 3 years and instead i get obsolete because maxwell 2.0 is now "FULL DX12", where as maxwell 1.0 i bought a year ago is "PARTIAL DX12".

I don't trust them, API upgrades used to drive card sales bi-annualy prior to dx11, im sure they'll be more than happy to move back to that, and with maxwell around the corner, im almost sure they're gonna eff-up the customer.

Somebody needs to ask nvidia about this.

April 3, 2014 | 09:31 AM - Posted by JoeJoe (not verified)

***edit- prior to dx9, not dx11

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Lines and paragraphs break automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote><p><br>
  • Web page addresses and e-mail addresses turn into links automatically.

More information about formatting options

By submitting this form, you accept the Mollom privacy policy.