Introducing PIX on Windows (beta)


Welcome to our new PIX team blog!

PIX is a performance tuning and debugging tool for game developers.  It has a long and storied history spanning three generations of Xbox console.  Today we are pleased to announce that a beta release of PIX is now available for analyzing DirectX 12 games on Windows as well.

PIX on Windows provides five main modes of operation:

  • GPU captures for debugging and analyzing the performance of Direct3D 12 graphics rendering.
  • Timing captures for understanding the performance and threading of all CPU and GPU work carried out by your game.
  • Function Summary captures accumulate information about how long each function runs for and how often each is called.
  • Callgraph captures trace the execution of a single function.
  • Memory Allocation captures provide insight into the memory allocations made by your game.

For best results we recommend running PIX on:

  • Windows 10 build 14393 (Anniversary Update, aka RS1) with latest updates
  • 32 GB RAM
  • A Direct3D 12 GPU with the latest available graphics drivers.  PIX will not work correctly with older drivers!

See the requirements page for more information.

This is a beta release, which means bugs are probable and there are plenty of features we want to add but haven’t yet gotten around to.  If you encounter a problem, or have a suggestion for how PIX could be improved, we’d love to hear from you.  And stay tuned for GPU hardware counters, which will provide richer low level performance information when enabled via per-GPU plugins.  The first of these is coming Real Soon Now...

To learn how to use PIX, check out the documentation and video channel.  Last but not least, download the PIX beta here.

 

pixscreenshot

 

Notes:

  • PIX only supports capturing D3D12 content, not D3D11 or 11on12.
  • PIX only supports 64 bit apps (both UWP and Win32).  PIX does not support x86 apps.
  • PIX only captures data from the specific process that it launched or attached to.  It does not support child processes.  If your title uses multiple processes, you will need to bypass any client/launcher processes and have PIX launch/attach the main game executable.
  • Counter values other than timing in the event list are not currently rolled up to their parent bundle or marker region.
  • GPU captures are not generally portable between different GPUs or even different drivers on the same GPU.  PIX will warn if you attempt to run analysis on a capture whose capture device differs from the current playback device.  You can continue past this warning, but be aware there may be compatibility issues that cause it to fail.
  • GPU captures do not currently overlap GPU work on different queues.  If your app uses asynchronous compute to execute rendering and compute work simultaneously, it will show up in the PIX timeline as being executed in a non-parallel fashion.
  • PIX does not support multi-gpu enabled apps.  You can use PIX on a machine with multiple GPUs, but PIX will always capture/playback on the primary adapter.
Comments (20)

  1. Reza Nourai says:

    Nice! Great to see PIX back in action!

  2. Richard Fine says:

    All hail the Performance Investigator for XNA! 😉

  3. NTAuthority says:

    >Note that NVIDIA’s support for GPU shader instruction disassembly requires a DLL. Please use this link to get the DLL.
    >Please fill out the fields below to apply for access to the NVIDIA Shader Disassembly DLL for use with Microsoft PIX.
    >Company email/Publisher

    Is there any reason this is not supported by PIX/Windows itself, and why GPU vendors are allowed to restrict debugging to publishers behind an NDA?

    1. Note that this DLL is to enable GPU shader instruction disassembly. It’s not necessary for shader debugging, which operates at the HLSL and/or DXBC (bytecode) level.

      The details of the GPU instruction set are proprietary IP of each GPU manufacturer, so it is not up to Microsoft to dictate how and when that information is exposed. It can sometimes be useful for understanding shader performance, which is why we built a mechanism to display it in PIX. AMD and Intel decided to support this in their regular drivers, while NVIDIA chose to create a separate DLL for it.

  4. Markus P says:

    Is it possible to use the CPU/Memory profiling tools if the application uses a DX11 or possibly even OpenGL/Vulkan?

    1. Yes, the CPU profiling tools in PIX should work for any x64 app.

  5. WpBart says:

    Could be me, but after releasing Microsoft Pix for iOS, a CAMERA app, the name choice is excellent :/

  6. Axel Habermaier says:

    What is the advantage of PIX over the VS-integrated GPU debugger?

    1. Manu says:

      This is a good question.

    2. There is obviously some overlap between PIX and the Visual Studio graphics diagnostic tools, but also significant differences. PIX is both a narrower and a deeper tool than Visual Studio. It is focused more tightly on the needs of high end game developers using D3D12, with more concentration on performance analysis as well as debugging features. At the same time it lacks many of the features that VS provides in other areas (for example: no D3D11 support).

  7. Nicolas Silvagni says:

    command list and queue events works but are marked deprecated in the capture, the pix3 interface does not show up in the capture ( no hierarchy ).

    1. Nicolas Silvagni says:

      Never mind, i had the USE_PIX define only on my xbox code path

  8. Zarat says:

    > Roadmap: Support multiple GPUs (PIX currently always just runs analysis on the primary GPU) <

    Seriously? That's a no-go for DX12 and makes the tool unusable for me.

    Also you should remember that DX12 titles will be able to use multiple GPUs, so selecting a single for GPU for playback is nonsense anyways.

    1. It is a balancing act between number of features and the ship date. We opted for shipping a useful, but not complete set of features as soon as possible. Multi-GPU support is something we still have to address and we have it on our road map.

  9. Tachyon says:

    Hey. Enjoy that Cisco lawsuit.

  10. Matt Kimball says:

    Nice work guys. I hope any code I left behind wasn’t an undue burden. (Assuming this isn’t a complete rewrite, which I guess it might be.)

  11. oscar says:

    Hi,
    Shader model 6.0 is coming in creators update with wave ops and seems compiler has been open sourced already..
    Any word on PIX support for apps using this new DXIL format and new wave ops in shader model 6.0..
    can we expect support once PIX goes out of beta or creators update goes live?
    thanks..

    1. We definitely plan to support DXIL in PIX, but don’t have a solid date for when this will be ready yet.

  12. Abhinav says:

    I was trying to debug Tom Clancy’s the Division but I wasn’t able to launch it from Win32 tab. is there a place to get some help on issues faced?

    1. > is there a place to get some help on issues faced?

      The best way to contact the PIX team is the “Send Feedback” button inside PIX. See the Support link on this blog (https://blogs.msdn.microsoft.com/pix/support/) for details.

      Thanks,

Skip to main content