The Forgotten API: Just What Is Going on with DX12?

hpstg, don't assume that a majority of developers are not good at optimizing. Deadlines and the definition of "good enough" are what most strive for. Years ago when hardware was so much weaker, it was important to optimize any little thing you could because the definition of "good enough" required that you did so. People went as far as to cache in tables (arrays) integer cosine, sine, arctangent, and inverse square root values. Now that CPUs handle things like this easily and GPU memory is so vast and fast, processing and managing resources has become far easier and less stressful. Also, if you look around at people who create games on things like Arduino, you'll see that people still understand how to optimize things when it's needed.

I will note that when I started game programming, I was initially very obsessed with optimizing everything. It stemmed from my younger days. After a few years, I noticed that I started caring less about optimizing and was more concerned about how fast I could make something happen. Now that it's been 10 years, I just want to see things happen. If I want to optimize, it's overwhelmingly on the low end of the todo list. Optimizing code is easily considered one of the major "not to do" behaviors because it decreases motivation and lacks exciting or interesting feedback (and also introduces bugs sometimes). It's kind of like the way most router manufacturers *cough, Netgear, cough* treat security. They are both equally considered as boring as one another.

Which is why after 10yrs we still can't push higher resolutions than 1080p consistently on a AAA PC title, and even many console titles barely achieve 30fps at 1080p. Because developers are lazy and don't like "boring" work.
 
Member how DX10 took forever to take off? I member.

DX11 was a thing before developers started moving away from DX9

Exactly. DX12 is DX10 all over again. DirectX 9 came out and was compatible with XP and 9x. We had DX9-only titles from major developers a year later. DX10 came out handcuffed to a controversial OS. It took about 6 years for major developers to start releasing titles that required anything higher than DX9. We're going to see a similar pattern with DX12. I've been predicting no major game publisher (besides Microsoft) will release a DX12-only title before 2020 at the earliest. There's just too many lost sales for them to consider it.

Feels like devs didn't really start switching to DX11 en masse until it became the lowest common denominator with the current-gen consoles, and the same with 64-bit.
 
Some brave AAA title making company just needs to do one for the pc gaming industry and make a DX12 title that would help to push the adoption forward.

Seems like adoption rates is still less than ideal for the CEOs who only sees $$$ instead of becoming the company remembered for pushing gfx one step forward. Crytek was a company who was daring at one point but it's not going particularly well anymore for those guys...
 
Which is why after 10yrs we still can't push higher resolutions than 1080p consistently on a AAA PC title, and even many console titles barely achieve 30fps at 1080p. Because developers are lazy and don't like "boring" work.

bos, most developers and especially AAA developers are not lazy. They work the most brutal hours trying to meet the requirement of "good enough" because they have no time to sit and play around optimizing when they are expected to finish another 10 features in the next couple of weeks. You only talk like this because you're ignorant of what's actually going on. If developers were given more time with less stressful hours, you'd likely see more optimized games. However, you don't want that and neither does the general public. They whine and whine about when the product will be coming out and if the development takes too long, interest can be lost, doing damage to expected revenue. So producers will push the develop teams so hard to meet given deadlines. Then when the product comes out and doesn't meet the arbitrary standards people have placed on them, then the same people who whined about it taking too long, whine about why it doesn't work as well as it should; and that the development team should have taken more time to optimize the game or that they're lazy. I mean really, I've been watching this circus of events happen over-and-over again and it's annoying.

Also, just because optimization is considered a generally boring task, was not my indication that it's completely ignored. What I meant by that statement is that fellow developers, people following development, and producers aren't that interested in looking at a something you did that wasn't flashy or interesting. No one strides around showing off their optimized code that took them a day to save 10 microseconds of processing.
 
Microsoft bought the Havok physics engine from Intel and ive been hoping ever since it would be integrated into directx so we could have a "standard" physics engine so more games would attempt to do semi proper physics. Im fairly happy about the graphics progression we have made over the years in games but the physics in a lot of games when they even try to do it is laughable
 
bos, most developers and especially AAA developers are not lazy. They work the most brutal hours trying to meet the requirement of "good enough" because they have no time to sit and play around optimizing when they are expected to finish another 10 features in the next couple of weeks. You only talk like this because you're ignorant of what's actually going on. If developers were given more time with less stressful hours, you'd likely see more optimized games. However, you don't want that and neither does the general public. They whine and whine about when the product will be coming out and if the development takes too long, interest can be lost, doing damage to expected revenue. So producers will push the develop teams so hard to meet given deadlines. Then when the product comes out and doesn't meet the arbitrary standards people have placed on them, then the same people who whined about it taking too long, whine about why it doesn't work as well as it should; and that the development team should have taken more time to optimize the game or that they're lazy. I mean really, I've been watching this circus of events happen over-and-over again and it's annoying.

Also, just because optimization is considered a generally boring task, was not my indication that it's completely ignored. What I meant by that statement is that fellow developers, people following development, and producers aren't that interested in looking at a something you did that wasn't flashy or interesting. No one strides around showing off their optimized code that took them a day to save 10 microseconds of processing.

Also not all developers are the same. Two of my favorite activities are bug fixing and performance optimization (though I don't work on games).
 
The entire reason the APIs where developed in the first place is because programming low level code that talks directly to hardware is HARD. You have to think about every iteration of hardware possible... you have to be an actual programmer.

When the APIs like OpenGL Glide and DX where developed the idea was that it was simple enough Artists with some programming ability could handle it.

My questions on this is why then can't we see a greater distinction between game engines and the game themselves? That's what I thougt the idea behind the shared engines (crytek, unity, unreal, etc) was. One group of developers making the hard, technical side, then licensing that tech out to the more "artsy" guys who will draw the pretty pictures and make compelling stories. I guess that isn't happening anymore?
 
Multi gpu shouldn't even be a thing any more. To me it's like when you used to have to add a 3D card to your existing graphics to be able to play games. By now, they should be able to have 1 card powerful enough to do what you need to.

find a one card solution for 60fps steady 4k.

i dare ya.
 
Can you pin all the blame on Vista though? I remember trying Flight Simulator X's DX10 mode back when it came out. There was a significant performance hit and the visual effects didn't seem to be worth it.

That may be half of it, but I think you also need to look at the timing of the XBOX lineup releases and which API is on them. Right now, if you want to do cross platform, DX11 is the best bang for the buck. Do it once and be done.
 
This x1000. MS fooled a lot of gamers into impulse-installing Windows 10 on DX12 hype.

Handcuffed to a controversial, polarizing OS is right - it really is shades of Vista all over again, only worse: Vista didn't have forced telemetry, cortana, phone app bloat, ugly tiles, forced updates/reboots and the OS in a constant state of flux due to its perpetual beta nature.

What caught Microsoft offguard was just how abruptly Windows 10 uptake would fall off a cliff once they turned off the controversial forced upgrade (GWX) system. As the NMS stats show, Windows 7 and 8.1 users have dug in to await MS either toning down the consumer-hostile stuff in 10, or creating a proper Windows 7 successor that respects longtime desktop users.

DX12 just has everything working against it right now including Microsoft. Vulkan is the future because it works everywhere and doesn't discriminate.

You filter everything through my Windows 10 hatred and bias. Good luck with that, you will need it. I, on the other hand, just filter my perception through what actually works without an irrational hatred for things I do not understand.
 
This x1000. MS fooled a lot of gamers into impulse-installing Windows 10 on DX12 hype.

Handcuffed to a controversial, polarizing OS is right - it really is shades of Vista all over again, only worse: Vista didn't have forced telemetry, cortana, phone app bloat, ugly tiles, forced updates/reboots and the OS in a constant state of flux due to its perpetual beta nature.

What caught Microsoft offguard was just how abruptly Windows 10 uptake would fall off a cliff once they turned off the controversial forced upgrade (GWX) system. As the NMS stats show, Windows 7 and 8.1 users have dug in to await MS either toning down the consumer-hostile stuff in 10, or creating a proper Windows 7 successor that respects longtime desktop users.

DX12 just has everything working against it right now including Microsoft. Vulkan is the future because it works everywhere and doesn't discriminate.

Over half of the participants in the Steam Hardware Survey are on Windows 10. So....yeah...
 
I have switched almost every PC I manage over to one of the flavors of Win 10, mostly Pro and Education. The improved network functions alone for SSO have cut 3/4 of my daily support requests it also brought life into a crap ton of laptops that even fresh installs of Win 7 ran like garbage on and let me cut most of my AV licensing, so from my perspective Win 10 has been an outstanding win...

But yeah DX 11 has mature tools and an extensive support library and an unthinkable number of production man hours behind it. DX 12 on the other hand has none of these, the documentation for the functions is there but it will take most companies years to build their internal development tools up to work with DX 12 and until XBox is running it there is no reason to put the effort into it as they will still need to take the time to do the DX11 version and spending the time and resources to work on 2 code paths is beyond most developers. What it means for us is we are going to have to wait until Unreal and Crytek have all their ducks lined up and the Scorpio has its legs under it before we will start seeing DX12 titles that actually have the backing to show what DX12 can do.
 
Please elaborate. Because people are stacking two or more slower GPUs rather than purchasing one, faster GPU?

In a world where SLI works flawlessly, lets say the 1080 gets released for its $600+ pricetag. Someone with a 980 could have grabbed a 2nd-hand 980 for MUCH less money and ran them in SLI and had a similar experience to owning a 1080: in this situation, Nvidia does not make a penny, moreover, there is not a lot of incentive to grab a 1080, because you could easily grab cheaper, used parts and get a great experience.

Essentially, SLI allows too many options for people to upgrade. Nvidia wants you to buy their newest products NOW.
 
bos, most developers and especially AAA developers are not lazy. They work the most brutal hours trying to meet the requirement of "good enough" because they have no time to sit and play around optimizing when they are expected to finish another 10 features in the next couple of weeks. You only talk like this because you're ignorant of what's actually going on. If developers were given more time with less stressful hours, you'd likely see more optimized games. However, you don't want that and neither does the general public. They whine and whine about when the product will be coming out and if the development takes too long, interest can be lost, doing damage to expected revenue. So producers will push the develop teams so hard to meet given deadlines. Then when the product comes out and doesn't meet the arbitrary standards people have placed on them, then the same people who whined about it taking too long, whine about why it doesn't work as well as it should; and that the development team should have taken more time to optimize the game or that they're lazy. I mean really, I've been watching this circus of events happen over-and-over again and it's annoying.

Also, just because optimization is considered a generally boring task, was not my indication that it's completely ignored. What I meant by that statement is that fellow developers, people following development, and producers aren't that interested in looking at a something you did that wasn't flashy or interesting. No one strides around showing off their optimized code that took them a day to save 10 microseconds of processing.

Having enough time will never happen. I've been working on a hobbyist project for almost 20 years now, and I'm never satisfied with any part of it. Sure, APIs change, hardware changes, languages change, etc. but I also learn more. And I refuse to ever look at code I've written in the past that I considered finished. I was that cocky, arrogant, college graduate coder, along with many people, and a couple decades later, I cringe at how bad the code was. And professionally, the only time there's ever been enough time to work on a project is when a company has no more money to move forward, which is not a good sign in itself. If they have money, why spend time for one game when you could be working on the next game?

Also not all developers are the same. Two of my favorite activities are bug fixing and performance optimization (though I don't work on games).

I loved optimization when I was younger, and still love it. (One of my hobbies involves reverse engineering older games to see how they worked). I disagree with Goodlookinguy though in that I do think it's a lost art form. And I understand the concept of good enough, but I've seen some pretty terribly written code that should never have been written the way it was originally written, as there are some glaringly obvious low hanging pieces of fruit when it comes to being unoptimized. And I'm not talking shaving microseconds off. At one company I worked for, but it wasn't a game company, I managed to make one of their programs runtime go from 5 minutes to 2 seconds with one simple change. And honestly, it's the younger generation who's grown up with these powerful computers and languages who've never really bothered to take time to learn some basic concepts that aren't so basic anymore thanks to new languages (*cough* pointers *cough*) or new language features (e.g. smart pointers in C++). Don't get me wrong, I'd rather them use STL than raw pointers and chars for strings, but they should at least have a basic grasp of how things work.

I've started to find though that I enjoy embedded programming more and more lately, and fortunately, there are jobs in that area.
 
Last edited:
Frankly, DX12 makes no sense to me. DX 9/10/11 did all the hard lifting for devs. Why would you do all the work involved in making DX 12 performance great if you're limited to ONE OS? Granted, DX 11 covered everything pretty much down to Win7, so it made sense. Now? Vulkan requires the same work as DX12 and works everywhere. So of course DX12 isn't attractive.
They've done this multiple times before.
DX10 came with Windows Vista and was never supported on a prior OS.
DX11.0 came out with Windows 7 and did support Vista.
DX11.1 came out with Windows 8 and was not fully supported on a prior OS. Windows 7 got a cut down version of 11.1 via a patch. Vista and XP got nothing.
DX11.2 came out with Windows 8.1 and was only supported on 8 or newer.
 
Back
Top