New Diagnostic Tools Available For DirectX 12 Developers

One of the main features for gaming on Windows 10 is the DirectX 12 API, which some developers use to create titles that Microsoft says has better performance and stability. However, the finished product isn’t perfect, and it’s still susceptible to numerous error and crashes. In order to better understand the actual causes of these game-breaking issues, Microsoft released two new tools for DirectX 12 developers.

The new commands center around the CPU and "device removed" or "device lost" errors, which affect a GPU when a driver update is installed during gameplay or if there are errors in the game’s programming code. Before the launch of the Fall Creators Update, an app couldn’t get access to the system resource memory, which is crucial when one of the aforementioned errors occur. Now, a developer can add the “OpenExistingHeapFromAddress” command to their game; it gathers information from the resource memory that can be used to determine the source of the device error.

Sometimes the problem might not be in the GPU, but in the information sent to the card from the CPU. Microsoft added a “WriteBufferImmediate” method that records the commands executed and in progress from the CPU. If a crash occurs, developers can use the script to look at the CPU’s activity during that time and determine which command was active during the error.

Other additions to the Fall Creators update include bugfixes and a monthly update to PIX, the company’s graphics software used for debugging.

With better diagnostic methods, developers have a clearer view of the problems plaguing their games, which results in better patches in future updates. Depending on the nature of the crash, a fix could take a few hours or days, but at least there’s more information available to help developers create a suitable solution.

  • photonboy
    I remember when people were rushing to buy AMD cards because of the Mantle promotion. It takes a LOOOOOONNNG time to shift to a new API successfully. Of course it's also hard to break from DX11 so mixing new and old complicates things too.
    Reply
  • alextheblue
    20399798 said:
    I remember when people were rushing to buy AMD cards because of the Mantle promotion. It takes a LOOOOOONNNG time to shift to a new API successfully. Of course it's also hard to break from DX11 so mixing new and old complicates things too.
    To be fair, Mantle became Vulkan. But yes it takes a while to see extensive use of any new API, doubly so when the new APIs are low-level and quite different from their predecessors.
    Reply
  • blppt
    I think the most disappointing thing about DX12 has been that no real gameplay titles have shown any significant advantage in using the new API over DX11. What happened to "OMG DX11 is going to choke on high draw call games that are RIGHT AROUND THE CORNER!!"?

    I have been impressed with the smooth performance of Vulkan-based Wolf 2 on my systems though, if not its general lack of true mgpu support. However, given that there is no OGL/DX11 version, its hard to say if there really was much of a benefit to using Vulkan.
    Reply
  • mitch074
    20399966 said:
    I think the most disappointing thing about DX12 has been that no real gameplay titles have shown any significant advantage in using the new API over DX11. What happened to "OMG DX11 is going to choke on high draw call games that are RIGHT AROUND THE CORNER!!"?

    I have been impressed with the smooth performance of Vulkan-based Wolf 2 on my systems though, if not its general lack of true mgpu support. However, given that there is no OGL/DX11 version, its hard to say if there really was much of a benefit to using Vulkan.

    You'd better look at Doom then, as it uses the very same engine Wolf2 is built on - but it also provides an OpenGL 4.5 backend (which compares rather well with DX11, according to developers used to both backends). The boost AMD cards get on Vulkan in Doom is nothing to sneeze at, and is comparable to what titles like Battlefield 4 (Mantle) would get over the DX11 backend.

    The main problem is that, currently, most engines are built using the DX11 feature set as a target (and Nvidia cards are geared towards DX11 features), and added backends usually end up mapping DX11 features to DX12 (or Vulkan).

    According to a Croteam developer (their Serious Engine was initially developed for DX9, and includes backends for DX11, OpenGL and Vulkan), mapping such an "old" engine to one of the new APIs results in little performance improvements (less draw call overhead is one), however developing an engine to actually making use of an API's strength can really quickly provide huge performance improvements.

    Said improvements come mainly through drastically lowering CPU overhead (async compute is one such feature that delegates task management to the GPU when it can handle it - as in GCN 1.1+ AMD cards -, multiple queueing is another). Note that a game that can perfectly load a GPU without getting any CPU bottlenecking through DX11 won't see any increased FPS from using DX12/Vulkan. However, it'll get a much lower, better distributed CPU load.

    Just like Wolfenstein II exhibits.
    Reply
  • photonboy
    I really hope DX12/Vulkan GAME ENGINES get a lot more optimizations in them such as desktop resolution HUD static with dynamic gaming resolution (i.e. 4K HUD and 1400p average res) similar to more modern CONSOLE games.

    That, and other DYNAMIC features for both the CPU and GPU that work to optimize the FRAME TIME.

    Put another way, let's have the game ENGINE (and thus the game) automatically adjust to the PC hardware so our games are smooth with little to no tweaking of settings.

    *I am so sick of starting a game, tweaking the game, then retweaking the game when it stutters, then finding areas that are just so demanding tweaking doesn't help, and so on...
    Reply
  • Druidsmark
    Nvidia users benefit from Vulkan in Doom as well, I switched from DirectX 11 to Vulkan and the difference in performance was noticable on my Zotac Geforce 1060, 6gb ram. Using Vulkan I can max the game out and get a solid 60fps every where in the game at 01080p, using DirectX 11 I do notice a slight performance hit in the fps department on my pc. Right now I would say Vulkan is better then DirectX, hopefully once we start to see more optimized DirectX 12 games we can make a better comparison between the two. But with so few DirectX 12 games right now it is hard to say which is really better. I do know Vulkan seems to run better when I switch to it in games that support it over DirectX 11 for now on my pc.
    Reply
  • photonboy
    For DX12 the only title I can think of that runs great is Gears of War 4. It's DX12 only.

    Druidsmark,
    DOOM doesn't have a DX11 mode... It has OpenGL v4.5 and Vulkan.
    Reply
  • Druidsmark
    Sorry, clearly I got that wrong then I do remember that when switching to Vulkan in the demo that it worked much better for me.
    Reply
  • hannibal
    Yep, the point is that dx12 and Vulcan allow things that would ruin dx11 and earlier, so there is not where to compare.
    Those games that can run dx11 and earlier does not use features where dx12 or Vulcan is superior.
    Reply
  • mitch074
    20400594 said:
    Nvidia users benefit from Vulkan in Doom as well, I switched from DirectX 11 to Vulkan and the difference in performance was noticable on my Zotac Geforce 1060, 6gb ram. Using Vulkan I can max the game out and get a solid 60fps every where in the game at 01080p, using DirectX 11 I do notice a slight performance hit in the fps department on my pc. Right now I would say Vulkan is better then DirectX, hopefully once we start to see more optimized DirectX 12 games we can make a better comparison between the two. But with so few DirectX 12 games right now it is hard to say which is really better. I do know Vulkan seems to run better when I switch to it in games that support it over DirectX 11 for now on my pc.

    On Nvidia cards, Vulkan widens the CPU bottleneck but if your CPU is powerful enough you would see no improvement over OpenGL. On AMD cards, you get a 20-40% performance boost even if you weren't CPU limited because the hardware is better used.

    DirectX 12 and Vulkan are pretty much the same beast, the former being Microsoft's "me too" when AMD came up with Mantle and Vulkan being what the Khronos group came up with when AMD provided Mantle free of charge as a template for their "next gen API", Intel said it was interesting and Nvidia complained that it wasn't fair to them.

    In all cases (Mantle, DX12 and Vk), these APIs aim to lower CPU overhead and driver complexity by giving developers a more direct access to graphic hardware. Engines become harder to program, but they are also able to directly manage hardware resources.
    Reply