Coty's got it.
So how AMD and NVIDIA operate to design the software and hardware they create for their customers, are vastly different. AMD works by designing their hardware to the software spec. They look at whats available in the OPENGL, DX, and etc software packages, and create hardware cores that utilize the standards. Nvidia does their own thing. They take their hardware, and manipulate the software layer so that it can be translated correctly to the hardware.
Nvidia does this change so that they can reduce some of the software load with similar hardware. Basically they take similar instructions and combine the hardware resources. Reduces cost on hardware, and you can pack more of the same cores together, but this causes a nightmare on the software layer. This is why Nvidia has always been better with software (they hire lots of people to fix their mucked-up designs).
Nvidia's plan worked great up until DX12. Now that more low level control is given to the firmware/wrapper level, Nvidia does not have to re-package instructions. This also means that their hardware needs to be adapted to this style. Their current 1000s GeForce starts this trend, but they have a long way to catchup with AMD.
AMD has always written hardware to spec of software, thus why they are considered more of a hardware company, and rely more on other companies to bring in better software (AMD GPUs vs Nvidia Gameworks). If you start to look at DX12 benchs, you'll see that the Fury-X isn't that far behind the 1080. Same thing with the rest of the cards. AMD has a huge lead in DX12 with the hardware they have. They are now focusing on software packages that will enable DX12 further. Nvidia has the right everything, but it will take them a gen or two before they can start to control DX12 as they have with DX9-11.