{"id":6380,"date":"2024-03-11T10:00:11","date_gmt":"2024-03-11T17:00:11","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/pix\/?p=6380"},"modified":"2024-03-11T10:00:11","modified_gmt":"2024-03-11T17:00:11","slug":"pix-2403","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/pix\/pix-2403\/","title":{"rendered":"PIX 2403.08 &#8211; New D3D12 features + misc PIX improvements"},"content":{"rendered":"<p>Today we released PIX on Windows version 2403.08, which can be downloaded <a href=\"https:\/\/devblogs.microsoft.com\/pix\/download\/\">here<\/a>.<\/p>\n<p>This release coincides with today\u2019s Agility SDK release, which includes support for new features including the final Work Graphs API, GPU Upload Heaps, and more. Please visit <a href=\"https:\/\/devblogs.microsoft.com\/directx\/agility-sdk-1-613-0\/\">this post<\/a> on the DirectX blog for more information about the Agility SDK release.<\/p>\n<p>New features and improvements in this PIX release include:<\/p>\n<p><strong>GPU Captures<\/strong><\/p>\n<ul>\n<li><a href=\"#support-for-new-d3d12-features\">Support for the new D3D12 features<\/a>, including:\n<ul>\n<li><a href=\"#work-graphs\">Work Graphs<\/a> <em>(final, non-preview API)<\/em><\/li>\n<li><a href=\"#gpu-upload-heaps\">GPU Upload Heaps<\/a> <em>(final, non-preview API)<\/em><\/li>\n<li><a href=\"#generic-programs-in-state-objects-shader-model-6-8-incrementing-constants\">Generic Programs in State Objects<\/a><\/li>\n<li><a href=\"#generic-programs-in-state-objects-shader-model-6-8-incrementing-constants\">Shader Model 6.8<\/a><\/li>\n<li><a href=\"#generic-programs-in-state-objects-shader-model-6-8-incrementing-constants\">Incrementing Constants<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#shader-debugging-speed-and-reliability-improvements\">Shader debugging speed and reliability improvements<\/a><\/li>\n<li><a href=\"#new-texture-visualizers\">New texture visualizers<\/a><\/li>\n<li><a href=\"#misc-ui-performance-improvements\">Misc UI performance improvements<\/a><\/li>\n<li><a href=\"#support-for-gathering-shader-reflection-data-from-pdbs\">Support for gathering shader reflection data from PDBs<\/a><\/li>\n<\/ul>\n<p><strong>Timing Captures<\/strong><\/p>\n<ul>\n<li><a href=\"#demoted-allocations-and-allocation-migrations-for-gpu-resources\">Demoted Allocations and Allocation Migrations for GPU Resources<\/a><\/li>\n<li><a href=\"#thread-and-core-usage-data-in-the-timing-capture-summary-view\">Thread and core usage data in the Timing Capture summary<\/a><\/li>\n<li><a href=\"#gpu-consolidated-events-in-the-metrics-view\">GPU consolidated events in the Metrics View<\/a><\/li>\n<li><a href=\"#additional-metric-statistics-in-the-metrics-view\">Additional metric statistics in the Metrics View<\/a><\/li>\n<\/ul>\n<p>plus some <a href=\"#bug-fixes-and-other-improvements\">bug fixes and other improvements<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h2>GPU Captures<\/h2>\n<h3>Support for new D3D12 Features<\/h3>\n<h4>Work Graphs<\/h4>\n<p>This release includes PIX support for the final D3D12 Work Graphs API that was released today. PIX has full capture\/replay support for the API, and it allows you to view event details, your local root arguments table (LRAT) layout, your node inputs, a detailed breakdown of your state objects, and hardware counter data\/graphs for your DispatchGraph() calls.<\/p>\n<p>These features were previously available in a preview version of PIX alongside the preview Work Graphs API. Please see <a href=\"https:\/\/devblogs.microsoft.com\/pix\/pix-2306-21-preview\/\">this blog post<\/a> for more information about the PIX features.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/WorkGraphs.png\"><img decoding=\"async\" class=\"size-full wp-image-6383 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/WorkGraphs.png\" alt=\"Image WorkGraphs\" width=\"1440\" height=\"698\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/WorkGraphs.png 1440w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/WorkGraphs-300x145.png 300w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/WorkGraphs-1024x496.png 1024w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/WorkGraphs-768x372.png 768w\" sizes=\"(max-width: 1440px) 100vw, 1440px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h4>GPU Upload Heaps<\/h4>\n<p>GPU Upload Heaps are out of preview and can now be used in any D3D12 application that\u2019s running on a supported GPU\/driver with Windows 11 Insider Preview Build 26080 or later.<\/p>\n<p>PIX has full support for GPU Upload Heaps. And good news: the OS performance issues that impacted PIX + GPU Upload Heaps in last year\u2019s preview release have been resolved! This means that there is no need for an application to use PIX\u2019s <a href=\"https:\/\/devblogs.microsoft.com\/pix\/pix-and-id3d12manualwritetrackingresource\/\">ID3D12ManualWriteTrackingResource APIs<\/a> to avoid performance issues, although developers are still welcome to use these APIs if desired.<\/p>\n<p>&nbsp;<\/p>\n<h4>Generic Programs in State Objects, Shader Model 6.8, Incrementing Constants<\/h4>\n<p>PIX includes support for all these additional D3D12 features released today. Support for Generic Programs is minimal though &#8211; PIX shouldn&#8217;t crash during capture\/replay, but most a lot of features available when using traditional Pipeline State Objects will be unavailable when using generic programs. These features will become available in future versions of PIX.<\/p>\n<p>&nbsp;<\/p>\n<h3>Shader debugging speed and reliability improvements<\/h3>\n<p>This release includes some significant performance improvements to shader debugging start times for some applications. For example, the time to start shader debugging on a famous sample from a famous DXR engine has reduced from over 5mins to 30secs. Other applications see more modest improvements.<\/p>\n<p>We have also fixed a wide range of shader debugging bugs reported by our users. Pl<span style=\"font-size: 1rem; text-align: var(--bs-body-text-align);\">ease continue to contact us with issues you hit!<\/span><\/p>\n<p>&nbsp;<\/p>\n<h3>New texture visualizers<\/h3>\n<p>We have added several new texture visualizers to this release, including:<\/p>\n<ul>\n<li>Depth test visualizer: shows pixels that passed the depth test in green, and failed in red<\/li>\n<li>Stencil test visualizer: shows pixels that passed the stencil test in green, and failed in red<\/li>\n<li>Culling test visualizer: shows pixels that passed the culling test in green, and failed in red<\/li>\n<li>Viewport visualizer: shows pixels outside the current viewport (viewport 0) in magenta<\/li>\n<li>Scissor rect visualizer: shows pixels outside the current scissor rect (0) in magenta<\/li>\n<\/ul>\n<p>The existing diff visualizers have been updated to support MSAA textures too. We plan to continue adding more visualizers in the future: next up is a NaN visualizer! If you have other ideas or suggestions for visualizers then please let us know.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/ViewportVisualizer.png\"><img decoding=\"async\" class=\"size-full wp-image-6415 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/ViewportVisualizer.png\" alt=\"Image ViewportVisualizer\" width=\"1038\" height=\"302\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/ViewportVisualizer.png 1038w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/ViewportVisualizer-300x87.png 300w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/ViewportVisualizer-1024x298.png 1024w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/ViewportVisualizer-768x223.png 768w\" sizes=\"(max-width: 1038px) 100vw, 1038px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3>Misc UI performance improvements<\/h3>\n<p>We have made many different performance improvements to the PIX UI in the past couple of months, including updating from .NET 6 to .NET 8. We hope that this will make the PIX UI feel snappier + more user friendly. More improvements will come during the rest of 2024!<\/p>\n<p>The move to .NET 8 has also fixed some common .NET 6 bugs that our users hit, including <a href=\"https:\/\/github.com\/dotnet\/wpf\/issues\/7882\">this crash involving Logitech mice<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h3>Support for gathering shader reflection data from PDBs<\/h3>\n<p>In this release, PIX can gather shader reflection data from PDBs and use it to populate key information in the UI such as the Pipeline tab. This means that you can now compile your shaders with \/Qstrip_reflect and still see reflection data in the Pipeline tab, assuming you have the external PDBs available.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/StrippedPDBs.png\"><img decoding=\"async\" class=\"size-full wp-image-6404 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/StrippedPDBs.png\" alt=\"Image StrippedPDBs\" width=\"975\" height=\"525\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/StrippedPDBs.png 975w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/StrippedPDBs-300x162.png 300w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/StrippedPDBs-768x414.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h2>Timing Captures<\/h2>\n<h3>Demoted Allocations and Allocation Migrations for GPU Resources<\/h3>\n<p>In this release we&#8217;ve added tracking of demoted allocations and allocation migrations for GPU resources when the &#8220;GPU resources&#8221; timing capture option is enabled.<\/p>\n<p>Demoted allocations occur when a GPU allocation is requested in VRAM but is instead placed in system RAM (often due to memory pressure and fragmentation) and show up as markers in the Residence Operations lane.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/Demoted1.png\"><img decoding=\"async\" class=\"size-full wp-image-6406 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/Demoted1.png\" alt=\"Image Demoted1\" width=\"975\" height=\"311\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/Demoted1.png 975w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/Demoted1-300x96.png 300w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/Demoted1-768x245.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/a><\/p>\n<p>Allocation Migrations are an attempt to move a demoted allocation into VRAM. These migrations are scheduled by the kernel and are not guaranteed to succeed (see the bottom sublane in the image below. The red segments are failed migration attempts and the green is the successful one). Note that these migrations require suspending the GPU, so they have a large performance impact.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/Demoted2.png\"><img decoding=\"async\" class=\"size-full wp-image-6407 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/Demoted2.png\" alt=\"Image Demoted2\" width=\"975\" height=\"231\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/Demoted2.png 975w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/Demoted2-300x71.png 300w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/Demoted2-768x182.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3>Thread and core usage data in the Timing Capture summary view<\/h3>\n<p>The summary view in PIX Timing Captures now includes a table that shows the CPU utilization for all cores and for all threads in the game.\n<a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/ThreadAndCoreUsage.png\"><img decoding=\"async\" class=\"size-full wp-image-6408 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/ThreadAndCoreUsage.png\" alt=\"Image ThreadAndCoreUsage\" width=\"975\" height=\"414\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/ThreadAndCoreUsage.png 975w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/ThreadAndCoreUsage-300x127.png 300w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/ThreadAndCoreUsage-768x326.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3>GPU consolidated events in the Metrics View<\/h3>\n<p>The consolidated events feature in the Timing Capture metrics view now includes support for GPU PIX events in addition to CPU PIX events.<\/p>\n<p>&nbsp;<\/p>\n<h3>Additional metric statistics in the Metrics View<\/h3>\n<p>The metrics details tab has also been enhanced to display an expanded set of statistics, including statistics for event trees.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/AdditionalMetricStatistics.png\"><img decoding=\"async\" class=\"size-full wp-image-6409 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/AdditionalMetricStatistics.png\" alt=\"Image AdditionalMetricStatistics\" width=\"975\" height=\"302\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/AdditionalMetricStatistics.png 975w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/AdditionalMetricStatistics-300x93.png 300w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/03\/AdditionalMetricStatistics-768x238.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2>Bug fixes and other improvements<\/h2>\n<ul>\n<li>Added support for depth pixel history<\/li>\n<li>Added ability to filter processes in the process &#8220;Attach&#8221; tab<\/li>\n<li>Updated AMD plugin, with some updated counter descriptions + support for new GPU variants<\/li>\n<li>Better handling of small panel sizes in the UI<\/li>\n<li>More resilient handling of descriptor descs with implicit values (e.g. using -1 to specify all mips)<\/li>\n<li>Add built-in &#8220;Copy&#8221; and &#8220;Copy Cell&#8221; to misc parts of the UI<\/li>\n<li>Various dark mode fixes + improvements<\/li>\n<li>Fix &#8220;no shader records&#8221; error when raygen doesn&#8217;t call TraceRay at all<\/li>\n<li>API Objects view: show more information about some objects (e.g. command lists, metacommands)<\/li>\n<li>Fix PixMarkers with default color being invisible<\/li>\n<li>Misc acceleration structure camera improvements<\/li>\n<li>Better error message when E_UNEXPECTED is thrown internally in PIX (not just &#8220;Catastrophic Error&#8221;!)<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Today we released PIX on Windows version 2403.08, which can be downloaded here. This release coincides with today\u2019s Agility SDK release, which includes support for new features including the final Work Graphs API, GPU Upload Heaps, and more. Please visit this post on the DirectX blog for more information about the Agility SDK release. New [&hellip;]<\/p>\n","protected":false},"author":1899,"featured_media":4769,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-6380","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pix"],"acf":[],"blog_post_summary":"<p>Today we released PIX on Windows version 2403.08, which can be downloaded here. This release coincides with today\u2019s Agility SDK release, which includes support for new features including the final Work Graphs API, GPU Upload Heaps, and more. Please visit this post on the DirectX blog for more information about the Agility SDK release. New [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts\/6380","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/users\/1899"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/comments?post=6380"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts\/6380\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/media\/4769"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/media?parent=6380"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/categories?post=6380"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/tags?post=6380"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}