communications relay login

DirectX 12, Battle for Azeroth Pre-patch, and You

With the removal of true full screen in DirectX 12, how does that impact your gaming experience?

By Elnian Wed 25 Jul, 2018 2:41 PM - Last Updated: Wed 25 Jul, 2018 3:07 PM
The only constant thing about World of Warcraft (or any MMORPG for that matter) is change. Your gaming experience in MMOs is never truly the same from one moment to the next. Computers have more powerful components, developers are researching the best way to take advantage of the newer components, and games are becoming more immersive as a result. One of the leading software APIs (Application Programming Interface) is DirectX.

A Brief History of DirectX

DirectX is an API developed by Microsoft to handle multimedia tasks. Historically, all DirectX components began with the word Direct. For example: Direct3D, DirectMusic, DirectSound, DirectDraw, and so on. DirectX was created out of necessity, rather than convenience. Before the announcement of Microsoft Windows 95 in late 1994, many game programmers preferred MS-DOS as the preferred game development platform, since many games from Windows 3.11 and earlier ran on DOS.

Although Microsoft had developed WinG as a port of Windows 95's Device Independent Bitmaps (DIB) for Windows 3.x Operating Environments as a way for developers to easily port their games from DOS to Windows 3.x, such an undertaking was not received well by most developers. Instead, WinG was deprecated in favor of DirectX. WinG certainly had an interesting set of abilities, but it failed to deliver the functionality and performance that was available with Windows 95. Microsoft then discontinued WinG and built DirectX.

DirectX 1.0 - The Beginning

As already stated, DirectX was built out of necessity rather than convenience. While DOS allowed direct access to hardware; such as mouse, keyboard, video, sound devices, and other parts of the system, Windows 95 ran in a protected mode. That means Windows 95 applications cannot directly access the hardware that was readily available to DOS application developers. The first version of DirectX was named Windows Games SDK, and allowed developers to easily access protected functions in much the same way as they were already used to doing with DOS-based applications.

This initial version of DirectX was a direct replacement for both the legacy Windows 3.x display interface and WinG. With the release of the Windows Games SDK (DirectX 1.0), developers were finally able to release high-performing, rich multimedia applications without needing to jump through hoops and implement unstable workarounds that's not guaranteed to work on all computers. A good example of this would be the partnership between Disney and Compaq. Disney ported The Lion King from DOS to Windows, which used WinG. Many users were frustrated at the fact that the game kept crashing on Compaq Presario desktop computer because the graphics adapters used by the system was not thoroughly tested with WinG.

DirectX 2.0 - The Birth of 3D

DirectX 1.0 did not have any Function Calls (Subroutines) to handle the display of 3D graphics. As more game developers were joining the Windows 95 development scene, Microsoft quickly realized something else was needed.

First announced at the Computer Game Developer's Conference in 1996, Microsoft demonstrated the Direct3D and DirectPlay features of DirectX 2.0 with a multiplayer demo of Mechwarrior 2. This elaborate event was said to be akin to and indoor carnival, and featured real lions, togas, and had a Roman theme.

The DirectX team continued to work to ensure their API was compatible with an ever-growing list of devices and peripherals. A variety of graphics cards, sound cards, controller devices, and the like were tested to ensure continued compatibility. At the same time, Microsoft released a suite of test tools aimed at hardware developers that could be used to ensure compatibility with DirectX. Thus, the modern era of PC gaming was born.

DirectX 3.0 to 8.1 - The Modern Era of Gaming

Throughout DirectX's life-cycle, it has been used on a wide variety of devices, however it was restricted to Microsoft-developed software. DirectX has been confirmed to have been utilized on Microsoft's Xbox console, first released in 2001. As of today, DirectX is utilized on Xbox 360, Xbox One, and Windows Phone. With each successive version of DirectX, compatibility and the list of supported abilities grew greatly.

As the Shader Models increased in complexity, so did DirectX. In fact, DirectX was created in collaboration with graphics card developers NVidia and ATI. Going back to the early days of gaming, models were constructed using polygons. A sphere, for example, would be appear to be made up of many squares (or rectangles). Some developers chose to use triangles instead. Although it doesn't use DirectX, a good example of polygons would be with VirtuaRacing and VirtuaFighter.

Name:  Virtua_Racing_screenshot_2007.png
Views: 238
Size:  42.9 KB Name:  32X_Virtua_Fighter.png
Views: 199
Size:  7.6 KB

The polygons that make up the models can be clearly seen.

With the advances in shading technology (along with advanced made with DirectX), developers were able to used advanced techniques to make the sphere on the left look smooth:

Name:  bznNk.jpg
Views: 235
Size:  12.7 KB

It is easy to see the advances made in graphics development in general, thanks to DirectX.

DirectX 9.0 to 11.0 - The Discrete Graphics Card Era

Discrete graphics cards are those (sometimes expensive) cards gamers install in their computer. They are called Discrete because that is all they handle - the rendering and display of graphics information. Display devices such as the Intel HD series are known as integrated graphics. Integrated graphics, although making huge steps forward in terms of performance, are really intended for light usage. With the modern video games using more and more graphical resources, Discrete video processors (Graphics Processing Units, or GPUs) have made large advances as well. These cards boast upwards of 6GB of dedicated memory, and clock speeds rivaling even high-end CPUs. As the graphics card industry made advanced, so did DirectX.

DirectX 9.0c was released in 2002 and supported Shader Model 3.0. Most industry professionals consider DirectX 9 to be the first time video games were able to be rendered in a realistic way. DirectX 9 had all the features of its predecessors, and was able to display even the most demanding games comfortably. There are functions available that reduce the complexity of objects far away from the player, which improves performance - especially in terms of FPS (Frames per Second).

DirectX 10 through 11.1 were compatible with Windows 7, and DirectX 11.1 and 11.2 were compatible with Windows 8 and Windows 8.1, respectively. It wasn't until DirectX 12 that things really took a turn, and removed a feature a lot of gamers enjoyed.

DirectX 12 - The New Kid on the Block

DirectX 12 isn't "new". It was included with the release of Windows 10, although many consumer graphics cards only supported DirectX up to version 11. DirectX 12 is definitely a game changer!

This new version of DirectX allows developers to have even finer control over low-level (device level) hardware functions, and reduces display driver overhead. The main goal of DirectX 12 is to create a console-level experience on PCs through the use of parallel computing and general improvements in driver architecture.

As Windows 10 received its regular updates, so did DirectX 12. As of Windows 10 and DirectX 12 version 1803, playing 4k (2160p) and 8k (4320p) videos is possible with frame rates as high as 120 frames per second. However, that does not change the fact that something many gamers enjoyed is suddenly gone.

Where has Full Screen Gone?

If you're technologically inclined, Microsoft has an article that speaks greatly about this subject: DXGI Best Practices. Here is the gist of the article:

In the past, DirectX 9 through 11 attempted to handle full-screen mode by setting the resolution of the display buffer, forcing the device (the monitor) into full-screen exclusive mode, and then setting the back buffer to match. This caused some display issues and was responsible for many driver crashes due to conflicts.

The main problem experienced was the differences in the refresh rate of the device. Often, developers choose a default refresh rate of 60 / 1, meaning 60 Hz (60 cycles per second) is the refresh rate of the application and 1 ms (millisecond) is the latency (the time it takes for the monitor to respond) of the device.

This is the important bit here: If the device's refresh rate does not match the application's expected 60 Hz refresh rate, DirectX will perform a blit (a harsh change seen when using Alt+Tab in a full-screen application, often accompanied by a blank screen for a short time), instead of a flip (the seamless transition from one application to another, as is seen when using Alt+Tab in a Windowed Full-screen application). Using the blit might unload some resources the full-screen application was using due to changes in the refresh rate. When one goes back to the full-screen application, it would then have to reload all of the resources that were unloaded, which causes a noticeable performance drop.

On the other hand, using Windowed Full-screen mode will always perform the flip because the application's refresh rate and the devices refresh rate wouldn't change. As a result, true full-screen mode is disabled by default with DirectX 12, but it is still there. Developers just have an extra step they need to perform to support it.

The Conclusion

If you've made it this far, congratulations! This was definitely a lot to write about, and it's been on my mind for quite some time. I just had to find the time to sit down and get everything out. Wikipedia was a huge help, especially with the history of DirectX. The rest came from my experience as a game developer and outlines everything I need to be concerned about when ensuring forward-compatibility.

So, does DirectX 12 support full-screen? Yes, in a way. As previously stated, developers have to enable a special flag in order to support true full-screen modes. It is not something that most developers would be happy doing, especially an MMORPG such as World of Warcraft, with an engine that has been used since the original release of the game back in 2004. Although improvements were made in the engine, the core issues still remains. The engine is old and would not be able to take advantage of the latest technologies available without a complete rewrite.

Finally, a brief case study: At my (Elnian) house, we run two computers. We have one computer that is 7 years old (custom built), and a gaming laptop that is 3 years old. Prior to the Battle for Azeroth Pre-patch and DirectX 12 support, the 7 year old computer was barely able to run Legion content on graphics setting 4 (in full screen mode). Now, it can run 40 to 45 frames per second at graphics setting 5, including Broken Isles Dalaran. Loading screens are faster (might be due to other factors) and general performance is much better. The gaming laptop was able to use graphics setting 7 and achieved 30 to 40 frames per second in Dalaran (45 to 55 outside of Dalaran), 15 frames per second in Raids, and 60+ frames per second in areas outside of Legion content. After the pre-patch, it now runs graphics level 7 at 50 frames per second in Dalaran, 25 to 30 frames per second in Raids, and over 100 frames per second outside of Legion content.

Yes, both computers were running in exclusive full-screen mode prior to the patch. With the removal of that mode, I have seen performance increases across the board.

What are your thoughts?

There was a lot of fact finding in this article, and didn't really state many opinions (which was intentional). However, I would like to hear from you! What are your thoughts on these changes? How has this change affected you?

Sources:


WRITTEN BY Elnian
EDITED BY Infinity
3 Comments
Wed 25 Jul, 2018 3:07 PM
Very nice article!

Apologies it took a day to get out! Tongue Out
Wed 25 Jul, 2018 3:16 PM
I don't run games in Fullscreen exclusive mode. Haven't for years, and I think the last time I did was around the time SW KOTOR II came out. And I ESPECIALLY don't with MMOs, as having a browser window a keystroke away is too much of a benefit. The performance hit is negligible at worst on my rig (7th gen intel proc, Nvidia 1070), non-existent at best with newer titles that support DX11 or higher.
Wed 25 Jul, 2018 7:34 PM
Haven't been using real full-screen for quite some while aswell. Using windowed full-screen as I have 2 screens.