PIX 1812.14 – Playback Adapter Selection
Today we released PIX-1812.14, which adds support for selecting the playback adapter, displaying unbound resources and improvements to the occupancy lane. This release also includes various miscellaneous fixes detailed below.
Playback Adapter Selection
PIX now allows you to select the GPU on which to play back a recording. After opening a wpix file, use this drop-down control in the top-right corner before starting analysis.
Note that workloads that explicitly use multiple adapters will be played back exclusively on the selected adapter, rather than on the default adapter as in previous versions of PIX.
Change to Capture API Selection Default
OS RS5 and up, the API drop-down on the “Launch Win32” and “Launch UWP” tabs allow you to control the set of DirectX APIs that PIX will monitor during capture. In this release, PIX will now monitor DXGI and D3D11 activity by default. On RS5 and up, PIX is able to ignore DXGI and D3D11 activity altogether, and this was the default in the previous version of PIX. However, ignoring DXGI had a side-effect of exposing a lock-ordering issue between PIX and the DXGI runtime, resulting in a rare but possible hang when capturing with PIX. Unfortunately, DXGI and D3D11 have to be monitored together or not at all. Since PIX cannot capture D3D11 APIs, this new default means that PIX will fail to capture your application if you mix D3D11 and D3D12 rendering. We intend to fix these issues properly in a future release of PIX.
In the meantime, if your application uses D3D11 and D3D12, please use the API drop-down to select “ignore D3D11” (which also ignores DXGI), or “force 11on12” (which causes the OS to turn D3D11 API calls into equivalent D3D12 calls) as illustrated here:
A good example of a non-obvious mixed D3D12/D3D11 scenario is a XAML application that uses WinML.
PIX now displays entries for resources that are referenced by a shader but aren’t actually bound to anything. If a title does this then, at best, it won’t render what is wanted and, at worst, it’ll TDR. Unbound resources are shown as red in the pipeline view:
When analyzing occupancy, PIX now displays a tooltip of per stage values and highlights areas with nonzero occupancy values. Improvements have also been made behind the scenes to speed up occupancy processing, particularly on GPUs with many compute blocks.
If you have both a NVIDIA Turing card (for example: a 2080) and a NVIDIA non-Turing card (e.g. a 960, 1080 etc) in the same PC, then Start Analysis will fail for GPU Captures. This can be worked around by going to Home -> Settings inside PIX, and unchecking ‘Enable GPU Plugins’. We are working with NVIDIA to fix this issue in a future PIX release.
- Support for Render Passes
- Show warning dialog if developer mode is not recognized by d3d
- Fix display of structured buffers
- Fix buffer formatting when same resource bound to multiple stages
- Improve display of “not set” constant values
- Hide CUDA-only counters in PIX
- GPU captures no longer run dxdiag (and so don’t have to wait for it to complete)
- Fix crash when opening captures that don’t contain a dxdiag report
- Fix bug where PIX doesn’t correctly capture an app which has D3D12.dll in the same directory as the exe
- Fix GPU capture timing data for metacommands
- Add clear error message is application builds/copies acceleration structure into invalid ID3D12Resource
- Various shader table improvements
- Make timing data’s SDK layer warning be more accurate
- Improve call stack output
- Fix issue on systems with low virtual memory sizes
- Fixed minor memory leak involving remote connections%MCEPASTEBIN%%MCEPASTEBIN%