Skip to content

Commit 7644a3f

Browse files
authored
Organize PIX articles into separate areas (#2968)
* restructure * take 2 * fixup * ? * one more * i think review site was just broken * uppercase capture types * missed updating this * add redirects
1 parent bef6650 commit 7644a3f

File tree

9 files changed

+79
-43
lines changed

9 files changed

+79
-43
lines changed

.openpublishing.redirection.json

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,36 @@
385385
"redirect_url": "/windows/win32/direct3dtools/ipixengine5callbacks-loadtexturefromfilecomplete-short-name",
386386
"redirect_document_id": false
387387
},
388+
{
389+
"source_path": "desktop-src/direct3dtools/pix/pix-configuring.md",
390+
"redirect_url": "desktop-src/direct3dtools/pix/articles/general/pix-configuring.md",
391+
"redirect_document_id": false
392+
},
393+
{
394+
"source_path": "desktop-src/direct3dtools/pix/pix-custom-visualizers.md",
395+
"redirect_url": "desktop-src/direct3dtools/pix/articles/gpu-captures/pix-custom-visualizers.md",
396+
"redirect_document_id": false
397+
},
398+
{
399+
"source_path": "desktop-src/direct3dtools/pix/pix-gpu-captures.md",
400+
"redirect_url": "desktop-src/direct3dtools/pix/articles/gpu-captures/pix-gpu-captures.md",
401+
"redirect_document_id": false
402+
},
403+
{
404+
"source_path": "desktop-src/direct3dtools/pix/pix-instrumenting.md",
405+
"redirect_url": "desktop-src/direct3dtools/pix/articles/general/pix-instrumenting.md",
406+
"redirect_document_id": false
407+
},
408+
{
409+
"source_path": "desktop-src/direct3dtools/pix/pix-overview.md",
410+
"redirect_url": "desktop-src/direct3dtools/pix/articles/general/pix-overview.md",
411+
"redirect_document_id": false
412+
},
413+
{
414+
"source_path": "desktop-src/direct3dtools/pix/pix-timing-captures.md",
415+
"redirect_url": "desktop-src/direct3dtools/pix/articles/timing-captures/pix-timing-captures.md",
416+
"redirect_document_id": false
417+
},
388418
{
389419
"source_path": "desktop-src/win32-and-com-development.md",
390420
"redirect_url": "/windows/win32/index",

desktop-src/direct3dtools/dx-graphics-tools.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ This section lists tools and utilities provided for DirectX graphics.
1414

1515
| Topic | Description |
1616
|-|-|
17-
| [Getting started with PIX](pix/pix-overview.md) | Use PIX to debug and analyze applications using Direct3D 12. |
17+
| [Getting started with PIX](pix/articles/general/pix-overview.md) | Use PIX to debug and analyze applications using Direct3D 12. |
1818
| [Debugging DirectX apps remotely](debugging-directx-apps-remotely.md) | You can use Visual Studio and the Windows 8 SDK to debug DirectX apps remotely. |
1919
| [Effect-compiler tool](fxc.md) | FXC (fxc.exe) is an offline tool for compiling [HLSL](/windows/desktop/direct3dhlsl/dx-graphics-hlsl) shaders for all versions of Direct3D. The tool is located at: (*SDK root*)\\Utilities\\Bin\\x86\\ |
2020
| [Direct3D diagnostics capture interface reference](vspixengine-reference.md) | This section covers APIs for the Direct3D graphics diagnostics capture interface. |
File renamed without changes.
File renamed without changes.

desktop-src/direct3dtools/pix/pix-overview.md renamed to desktop-src/direct3dtools/pix/articles/general/pix-overview.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ ms.date: 07/09/2024
77

88
# Get started with PIX
99

10-
PIX is a debugging and profiling tool designed for game developers using Direct3D 12. You can [debug rendering issues and analyze frame performance with GPU Captures](pix-gpu-captures.md), or you can take a more [traditional profiling approach with Timing Captures](pix-timing-captures.md).
10+
PIX is a debugging and profiling tool designed for game developers using Direct3D 12. You can [debug rendering issues and analyze frame performance with GPU Captures](../gpu-captures/pix-gpu-captures.md), or you can take a more [traditional profiling approach with Timing Captures](../timing-captures/pix-timing-captures.md).
1111

12-
PIX's CPU profiling capabilities work for any Windows application, and the GPU capabilities work on any application using Direct3D 12 (or Direct3D 11 via [Direct3D 11 on 12](../../direct3d12/direct3d-11-on-12.md)). That includes AI and ML workloads using [DirectML](/windows/ai/directml/dml), and games made with popular engines such as Unreal, Unity, and Godot.
12+
PIX's CPU profiling capabilities work for any Windows application, and the GPU capabilities work on any application using Direct3D 12 (or Direct3D 11 via [Direct3D 11 on 12](~/direct3d12/direct3d-11-on-12.md)). That includes AI and ML workloads using [DirectML](/windows/ai/directml/dml), and games made with popular engines such as Unreal, Unity, and Godot.
1313

1414
While PIX can help you with no prior setup, you might want to check out [Instrument your app](pix-instrumenting.md) and [Configure PIX](pix-configuring.md) to ensure that you have the best experience with things such as PixEvents and debug symbols.
1515

1616
> [!NOTE]
17-
> PIX is not intended to assist with Direct3D 12 API level issues, such as errors with compiling pipeline state objects. Instead, use [GPU-based validation and the Direct3D 12 debug layer](../../direct3d12/using-d3d12-debug-layer-gpu-based-validation.md).
17+
> PIX is not intended to assist with Direct3D 12 API level issues, such as errors with compiling pipeline state objects. Instead, use [GPU-based validation and the Direct3D 12 debug layer](~/direct3d12/using-d3d12-debug-layer-gpu-based-validation.md).
1818
1919
## Installation
2020

@@ -27,8 +27,8 @@ For notifications on new releases, you can subscribe to the [RSS feed for the PI
2727
## What next?
2828

2929
Depending on your goals, you can either:
30-
- [Debug rendering issues and analyze frame performance with GPU Captures](pix-gpu-captures.md), or
31-
- [Profile CPU and GPU activity with timing captures](pix-timing-captures.md).
30+
- [Debug rendering issues and analyze frame performance with GPU Captures](../gpu-captures/pix-gpu-captures.md), or
31+
- [Profile CPU and GPU activity with timing captures](../timing-captures/pix-timing-captures.md).
3232

3333
## Frequently-asked questions
3434

desktop-src/direct3dtools/pix/pix-custom-visualizers.md renamed to desktop-src/direct3dtools/pix/articles/gpu-captures/pix-custom-visualizers.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,19 @@ By using the *Extensibility Paths* setting, you can specify any number of folder
1919

2020
If your visualizer shaders `#include` any file that's not sitting next to the main HLSL visualizer files, then you can use the *Extensibility Include Search Paths* setting to add search paths for those files.
2121

22-
![Where to modify the extensions paths in PIX](images/custom-visualizers-paths.png)
22+
![Where to modify the extensions paths in PIX](../../images/custom-visualizers-paths.png)
2323

2424
## Custom texture visualizer
2525

2626
Assuming that you've configured paths to your visualizer shaders in the settings, you can now see your visualizers listed in the **Visualization** panel.
2727

28-
![Example of some visualizers in the dropdown menu](images/custom-visualizers-dropdown.png)
28+
![Example of some visualizers in the dropdown menu](../../images/custom-visualizers-dropdown.png)
2929

3030
### Visualization panel
3131

3232
Once you've selected a custom visualizer from the list in the **Visualization** panel, the *Custom Visualization* section appears. From there, you can select to override the default texture format for your visualizer output. By default, the selected output format will be compatible with the pipeline view's currently selected texture. That's also where any shader compilation warnings/errors will be displayed.
3333

34-
![Example of a custom extension compiler error](images/custom-visualizers-compiler-error.png)
34+
![Example of a custom extension compiler error](../../images/custom-visualizers-compiler-error.png)
3535

3636
### Creating a custom texture visualizer
3737

@@ -80,7 +80,7 @@ In the example above, we declare `SelectedTexture` to point to the pipeline view
8080

8181
To get more information on the API, refer to the HLSL API section.
8282

83-
![Example output from the texture visualizer above](images/custom-visualizers-compiler-texture-example.png)
83+
![Example output from the texture visualizer above](../../images/custom-visualizers-compiler-texture-example.png)
8484

8585
## Custom buffer visualizer
8686

@@ -90,7 +90,7 @@ Assuming you've set up paths to your visualizer shaders in the settings, you can
9090

9191
From that panel, you can select any available custom visualizer, and see any warning/error messages from the shader compiler.
9292

93-
![Example error from a buffer visualizer](images/custom-visualizers-buffer-error.png)
93+
![Example error from a buffer visualizer](../../images/custom-visualizers-buffer-error.png)
9494

9595
### Creating a custom buffer visualizer
9696

@@ -141,7 +141,7 @@ In the example above, we access vertices declaring `Vertices` to point to the pi
141141

142142
To get more information on the API, refer to the HLSL API section.
143143

144-
![Example output from the buffer visualizer above](images/custom-visualizers-buffer-example.png)
144+
![Example output from the buffer visualizer above](../../images/custom-visualizers-buffer-example.png)
145145

146146
### Visualize a buffer as a texture
147147

@@ -163,7 +163,7 @@ PixExt_Declare_UserConstants_End
163163
```
164164
You are allowed to have a single user constant block (`PixExt_Declare_UserConstants_Start` / `PixExt_Declare_UserConstants_End` pair) in your visualizer. You can add any number of constants of 3 different types, namely `int`, `uint`, `float`. For each one declared, a new entry will appear in the visualization panel to enter the desired value. `0` is the default for all constants.
165165

166-
![User constants example](images/custom-visualizers-user-constants.png)
166+
![User constants example](../../images/custom-visualizers-user-constants.png)
167167

168168
## PIX HLSL API
169169

desktop-src/direct3dtools/pix/pix-gpu-captures.md renamed to desktop-src/direct3dtools/pix/articles/gpu-captures/pix-gpu-captures.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ More information about each event, such as the full set of API call parameters,
3434

3535
With a GPU capture open, switch to the Overview tab. Here you'll see some basic details about the capture.
3636

37-
To start profiling, you'll need to collect timing data. To do that, click the **Collect Timing Data** button at the top right of the **Events** view, or click the **Click here to start analysis and collect timing data** text in the **Timeline** view. That replays the GPU work in the capture and collect basic timing data such as Execution Durations (annotated with [PixEvents](pix-instrumenting.md), if your application has them). Once finished, you can collect additional data to be graphed in Timeline lanes, like occupancy information and other GPU-specific counters.
37+
To start profiling, you'll need to collect timing data. To do that, click the **Collect Timing Data** button at the top right of the **Events** view, or click the **Click here to start analysis and collect timing data** text in the **Timeline** view. That replays the GPU work in the capture and collect basic timing data such as Execution Durations (annotated with [PixEvents](../general/pix-instrumenting.md), if your application has them). Once finished, you can collect additional data to be graphed in Timeline lanes, like occupancy information and other GPU-specific counters.
3838

3939
> [!TIP]
4040
> For best results, don't interact with your computer while PIX is collecting timing data; and close any other applications that might be using the GPU.
@@ -55,18 +55,18 @@ Because GPUs are massively parallel and deeply pipelined, it's common for more t
5555

5656
The **Timeline** view displays one or more lanes showing the timing of each GPU operation. There's a separate lane containing EOP Duration data for each queue (graphics, compute, or copy) used by the game, plus a single lane showing Execution Duration data (where available) combined across all the queues.
5757

58-
![Timing information in the PIX GPU Capture Timeline view](images/gpu-timeline-view.png)
58+
![Timing information in the PIX GPU Capture Timeline view](../../images/gpu-timeline-view.png)
5959

6060
> [!TIP]
61-
> PIX on Windows doesn't currently overlap GPU work on different queues while analyzing timing in GPU captures. Consider taking a [Timing capture](pix-timing-captures.md) if you want to see overlapping async compute timing data. In GPU Captures, if a game uses async compute to execute rendering and compute work simultaneously, then PIX will instead measure first one and then the other. This may result in shorter reported durations for each part of the work compared to how it would execute inside the original game (due to reduced contention on the GPU) but a longer total time (due to reduced parallelization).
61+
> PIX on Windows doesn't currently overlap GPU work on different queues while analyzing timing in GPU captures. Consider taking a [Timing capture](../timing-captures/pix-timing-captures.md) if you want to see overlapping async compute timing data. In GPU Captures, if a game uses async compute to execute rendering and compute work simultaneously, then PIX will instead measure first one and then the other. This may result in shorter reported durations for each part of the work compared to how it would execute inside the original game (due to reduced contention on the GPU) but a longer total time (due to reduced parallelization).
6262
6363
### GPU counters and occupancy
6464

6565
PIX exposes hardware-specific performance counters provided by IHVs via a GPU plugin. These counters can be enabled and collected in either the **Event List Counters** view (button to enable at top right of **Events** view) or the **Timeline Counters** view (button to enable at top right of **Timeline** view).
6666

6767
On some GPUs, PIX can also gather occupancy information. GPUs are usually constructed as a hierarchy of repeated blocks, where each level might share a resource. For example, an imaginary GPU might be structured like this
6868

69-
![Example GPU block illustration](images/gpu-block-illustration.png)
69+
![Example GPU block illustration](../../images/gpu-block-illustration.png)
7070

7171
GPUs execute shaders by breaking up the shader work into waves (those are also called warps, or wave fronts). In the above diagram, each blue block is capable of executing one wave. Each green block could execute up to four waves.
7272

@@ -76,7 +76,7 @@ At any time, all the green blocks might be executing a different number of waves
7676

7777
That's presented in PIX in the **Occupancy** lane, which shows the maximum occupancy, separated by shader stage. That's an indication of how much work the GPU is able to do in parallel—higher bars show better GPU utilization.
7878

79-
![GPU counters in the PIX GPU Capture Timeline view](images/gpu-timeline-view-withcounters.png)
79+
![GPU counters in the PIX GPU Capture Timeline view](../../images/gpu-timeline-view-withcounters.png)
8080

8181
## Debugging rendering issues
8282

@@ -91,9 +91,9 @@ Selecting an event in the **Events** view populates various views, notably the P
9191

9292
After selecting an event in the **Events** view, the **State and Pipeline** views (found in the **Pipeline** tab) show details of the Direct3D state at the time of that event. There you can view which resources are bound to the pipeline, shader code, inputs, outputs, and the currently bound rendertarget(s).
9393

94-
![Direct3D pipeline state](images/gpu-state-view.png)
94+
![Direct3D pipeline state](../../images/gpu-state-view.png)
9595

96-
![Viewing VS output in the Pipeline view](images/gpu-pipeline-view-vsoutput.png)
96+
![Viewing VS output in the Pipeline view](../../images/gpu-pipeline-view-vsoutput.png)
9797

9898
### Shader debugging
9999

@@ -103,7 +103,7 @@ After selecting an appropriate event, and running analysis, you can debug your s
103103
3. Clicking the **Debug Pixel** button in the **Pixel Details** view when viewing an appropriate resource (for example, SRV/UAV/RTV).
104104

105105
> [!TIP]
106-
> If you're not able to see the shader source when debugging, you're likely missing debug information. Ensure you're generating the shader PDBs for your application, and that you have [configured PIX to load those PDBs](pix-configuring.md#debug-symbols).
106+
> If you're not able to see the shader source when debugging, you're likely missing debug information. Ensure you're generating the shader PDBs for your application, and that you have [configured PIX to load those PDBs](../general/pix-configuring.md#debug-symbols).
107107
108108
#### Shader edit & continue
109109

@@ -126,7 +126,7 @@ For any pixel-like resource (for example, RTVs, UAVs, or depth buffers), you can
126126

127127
## Caveats and miscellaneous notes
128128

129-
- It is not always possible for PIX to successfully take a GPU capture if a game is calling Direct3D 12 in invalid ways. PIX makes a best effort to be robust even in the case of incorrect usage patterns, but this is inevitably sometimes a case of garbage in, garbage out. If you are having difficulty taking GPU captures, then try using the [D3D12 Debug Layer and GPU-based validation](../../direct3d12/using-d3d12-debug-layer-gpu-based-validation.md) to find and fix any bad API calls.
129+
- It is not always possible for PIX to successfully take a GPU capture if a game is calling Direct3D 12 in invalid ways. PIX makes a best effort to be robust even in the case of incorrect usage patterns, but this is inevitably sometimes a case of garbage in, garbage out. If you are having difficulty taking GPU captures, then try using the [D3D12 Debug Layer and GPU-based validation](~/direct3d12/using-d3d12-debug-layer-gpu-based-validation.md) to find and fix any bad API calls.
130130
- Windows GPU captures are not, in general, portable across different GPU hardware and driver versions. In most cases, a capture taken on one machine will play back correctly on other similar GPUs from the same hardware family, and captures of some games may even work across GPUs from entirely different manufacturers, but it's also possible that something as trivial as a driver upgrade could break compatibility with older captures. PIX can guarantee playback will succeed only when the GPU and driver are exactly the same, so PIX will warn before starting analysis if there is not a perfect match. Proceed past that warning at your own risk.
131131
- PIX has limited support for multiple GPUs. It will always play back GPU captures on a single adapter, regardless of how many adapters the application used. PIX allows you to select the playback adapter from a drop-down affordance in the PIX toolbar. PIX will attempt to auto-select the playback adapter if the application used only one adapter.
132132
- For non-deterministic ExecuteIndirect workloads, you might want to enable the **Use replay-time ExecuteIndirect argument buffers** setting.

0 commit comments

Comments
 (0)