{"id":6672,"date":"2024-12-13T11:12:19","date_gmt":"2024-12-13T19:12:19","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/pix\/?p=6672"},"modified":"2024-12-13T11:13:47","modified_gmt":"2024-12-13T19:13:47","slug":"pix-2412-12","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/pix\/pix-2412-12\/","title":{"rendered":"PIX 2412.12 &#8211; Texture\/Buffer\/Visualizer improvements, Work Graph Shader Debugging, and many Timing Capture improvements"},"content":{"rendered":"<p>Today we released PIX on Windows version 2412.12, which can be downloaded <a href=\"https:\/\/devblogs.microsoft.com\/pix\/download\/\">here<\/a>. This release includes several new improvements to GPU Captures and Timing Captures, including:<\/p>\n<h4><strong>GPU Captures:<\/strong><\/h4>\n<ul>\n<li><a href=\"#custom-buffer\/texture\/mesh-visualizer-improvements\">Custom Buffer\/Texture\/Mesh Visualizer Improvements<\/a><\/li>\n<li><a href=\"#work-graph-shader-debugging-(preview)\">Work Graph Shader Debugging<\/a> (preview)<\/li>\n<li><a href=\"#vrs-shading-rate-visualizer\">VRS Shading Rate Visualizer<\/a><\/li>\n<li><a href=\"#many-bug-fixes-+-smaller-improvements\">Many bug fixes + smaller improvements<\/a><\/li>\n<\/ul>\n<h4><strong>Timing Captures:<\/strong><\/h4>\n<ul>\n<li><a href=\"#new-comparison-layout\">New Comparison Layout<\/a><\/li>\n<li><a href=\"#range-details-\u201cv2\u201d-preview\">Range Details \u201cv2\u201d Preview<\/a><\/li>\n<li><a href=\"#zoom-stack-in-the-timeline\">Zoom stack in the Timeline<\/a><\/li>\n<\/ul>\n<p>As always, nearly all of the new functionality in this release was added in direct response to customer feedback. Please continue to contact us with your issues and requests! The best ways to reach us are via the &#8220;Send Feedback&#8221; button in the top-right corner of PIX, and via the #pix channel on the DirectX Discord.<\/p>\n<h1>GPU Captures<\/h1>\n<h3>Custom Buffer\/Texture\/Mesh Visualizer Improvements<\/h3>\n<p><span data-contrast=\"auto\">As a reminder, the August PIX release <\/span><a href=\"https:\/\/devblogs.microsoft.com\/pix\/pix-2408-05\/#custom-mesh\/texture-visualizers\"><span data-contrast=\"none\">added functionality<\/span><\/a><span data-contrast=\"auto\"> that lets you write custom HLSL shaders to help visualize mesh\/texture contents inside the PIX UI.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">This release adds several new improvements to this feature, including:<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<ol>\n<li><span data-contrast=\"auto\">Visualize buffers as textures!<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Bind by resource name. Your shader can instruct PIX to find a resource with a specific name in the selected event and read from it in your shader.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">User constants. You can now declare constants inside your custom shaders, and you will be able to change their values within the PIX UI when using your visualizer.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">VRS Image: Your custom shader can now read from the shading rate image bound to the selected event.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Improved error logging when your custom shader\u2019s bindings aren\u2019t compatible with the root signature bound to the command list.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Misc bug fixes, such as the ability to use a custom visualizer in a DispatchRays() event<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/li>\n<\/ol>\n<p><span data-contrast=\"auto\">Several other \u201cunder the hood\u201d improvements have been made as well, such as improved shader caching between different PIX documents to reduce the time spent waiting for custom shaders to compile.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">The full documentation for custom texture\/mesh visualizers can be accessed <\/span><a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/direct3dtools\/pix\/pix-custom-visualizers\"><span data-contrast=\"none\">here<\/span><\/a><span data-contrast=\"auto\">.\u00a0<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<h3 aria-level=\"2\">Work Graph Shader Debugging (preview)<\/h3>\n<p><span data-contrast=\"auto\">This release includes our first preview version of shader debugging for work graphs. To launch, click on the green arrows next to any entry-point shader in the pipeline view for a DispatchGraph event:<\/span>\n<span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/wg1.png\"><img decoding=\"async\" class=\"size-full wp-image-6678 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/wg1.png\" alt=\"Image wg1\" width=\"341\" height=\"277\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/wg1.png 341w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/wg1-300x244.png 300w\" sizes=\"(max-width: 341px) 100vw, 341px\" \/><\/a><\/p>\n<p><span data-contrast=\"auto\">Then click the green \u201cStart\u201d arrow in the top-left of the Debug tab. PIX will record all threads for every entry point and any other nodes that might be invoked. Rather than choosing the thread of interest before starting debugging, you can switch between these threads using the \u201cInvocations\u201d view in the shader debugger (by default in the bottom-right part of the Debug tab):<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-ccp-props=\"{}\"><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/wg2.png\"><img decoding=\"async\" class=\"size-full wp-image-6679 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/wg2.png\" alt=\"Image wg2\" width=\"271\" height=\"293\" \/><\/a>\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Please send your feedback for bugs or improvements.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<h3><strong>VRS Shading Rate Visualizer<\/strong><\/h3>\n<p>We have added a new image visualizer that shows you the shading rate used for each pixel drawn by the current event. We have also made miscellaneous other improvements to the image visualizers, including improved legends for each visualizer.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/vrs.png\"><img decoding=\"async\" class=\"size-full wp-image-6682 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/vrs.png\" alt=\"Image vrs\" width=\"957\" height=\"409\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/vrs.png 957w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/vrs-300x128.png 300w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/vrs-768x328.png 768w\" sizes=\"(max-width: 957px) 100vw, 957px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3>Many bug fixes + smaller improvements<\/h3>\n<ul>\n<li>Shader Debugging fixes:\n<ul>\n<li>Misc fixes\/improvements for shader debugging reliability on Intel Arc GPUs<\/li>\n<li>Fix min16float issue<\/li>\n<li>Fix misc issues debugging DXR shaders with DXIL-defined root signatures<\/li>\n<li>Fix misc issues debugging shaders in AddToStateObject chains<\/li>\n<li>Robustify shader debugging against null global root signatures<\/li>\n<\/ul>\n<\/li>\n<li>Fix capture\/replay of apps using generic programs<\/li>\n<li><span class=\"NormalTextRun SCXW150802895 BCX8\">Fix capture issue caused by use of [<\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW150802895 BCX8\">WaveSize<\/span><span class=\"NormalTextRun SCXW150802895 BCX8\">(n)] in Node shaders<\/span><\/li>\n<li>Gather Accessed Resources: show dynamically-indexed TLASes properly<\/li>\n<li>New AMD plugin, with some small bug fixes compared to the last release<\/li>\n<li>Shader Table Viewer: rename column from &#8216;Root Signature&#8217; to &#8216;Local Root Signature&#8217;<\/li>\n<li>Fix View Instancing being disabled when flag isn&#8217;t set<\/li>\n<li><span class=\"NormalTextRun SCXW4054917 BCX8\">Fix Capture-time crash in D3D12_STREAM_OUTPUT_DESC when <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW4054917 BCX8\">NumEntries<\/span><span class=\"NormalTextRun SCXW4054917 BCX8\"> is 0<\/span><\/li>\n<li><span class=\"TextRun SCXW56155076 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW56155076 BCX8\">Acceleration Structure Viewer: Fix error when pressing camera in DXR invocations view when no entries are selected<\/span><\/span><\/li>\n<li>Acceleration Structure Viewer: fix <span class=\"TextRun SCXW150953470 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW150953470 BCX8\">FOV Range Clamping Bug making it difficult to type + change the value<\/span><\/span><\/li>\n<li>Acceleration Structure Viewer: fix aspect ratio when view size is changed<\/li>\n<li><span class=\"TextRun SCXW5810049 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW5810049 BCX8\">Fix capture reference tracker not using full paths (causes temp files to go missing)<\/span><\/span><\/li>\n<li>Misc UI perf improvements<\/li>\n<li><span class=\"TextRun SCXW2387824 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW2387824 BCX8\">Disable GPU Upload Heaps in PIX on Windows 10<\/span><\/span><span class=\"EOP SCXW2387824 BCX8\" data-ccp-props=\"{&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h1>Timing Captures<\/h1>\n<h3><span class=\"TextRun SCXW235195597 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"none\"><span class=\"NormalTextRun SCXW235195597 BCX8\" data-ccp-parastyle=\"heading 2\">New Comparison Layout<\/span><\/span><span class=\"EOP SCXW235195597 BCX8\" data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335559738&quot;:160,&quot;335559739&quot;:80}\">\u00a0<\/span><\/h3>\n<p><span class=\"NormalTextRun SCXW144880895 BCX8\">T<\/span><span class=\"NormalTextRun SCXW144880895 BCX8\">he Timing Capture comparison features have been moved from the Metrics view to a new dedicated Comparison Layout. This layout improves several comparison workflows, including the ability to compare data from multiple captures<\/span><span class=\"NormalTextRun SCXW144880895 BCX8\"> and points above and below a budget<\/span><span class=\"NormalTextRun SCXW144880895 BCX8\">.\u00a0 <\/span><span class=\"NormalTextRun SCXW144880895 BCX8\">This release also adds support for comparing Consolidated Events and PIX GPU events.<\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/metrics1.png\"><img decoding=\"async\" class=\"size-full wp-image-6683 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/metrics1.png\" alt=\"Image metrics1\" width=\"975\" height=\"452\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/metrics1.png 975w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/metrics1-300x139.png 300w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/metrics1-768x356.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3 aria-level=\"2\"><strong>Range Details \u201cv2\u201d Preview\u00a0<\/strong><\/h3>\n<p><span data-contrast=\"auto\">This release includes a Preview of a new implementation of the Range Details.\u00a0 This new implementation is built to be far more flexible than the original implementation to support many of the analyze scenarios you\u2019ve asked for over the last few years.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">The flexibility comes from the combination of a pivot table, an event list and a set of filters.\u202f The pivot table lets you aggregate the data on multiple dimensions, in an arbitrary order.\u202f The event list shows the individual items that make up the aggregation.\u202f Finally, filters can be used to restrict the data contained in the aggregation and the event list.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/range1.png\"><img decoding=\"async\" class=\"size-full wp-image-6684 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/range1.png\" alt=\"Image range1\" width=\"975\" height=\"506\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/range1.png 975w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/range1-300x156.png 300w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/range1-768x399.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3 aria-level=\"2\"><strong>Zoom stack in the Timeline\u00a0<\/strong><\/h3>\n<p><span data-contrast=\"auto\">Have you ever been scrolling, zooming and panning around the timeline, only to wish you could jump back to your previous location?\u00a0 This release of PIX on Windows contains a \u201czoom stack\u201d that allows you \u201cundo\u201d and \u201credo\u201d previous navigations within the timeline.\u00a0 Activate the zoom stack using the arrows in the top left corner of the timeline.<\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/zoom1.png\"><img decoding=\"async\" class=\"size-full wp-image-6685 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/zoom1.png\" alt=\"Image zoom1\" width=\"536\" height=\"258\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/zoom1.png 536w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2024\/12\/zoom1-300x144.png 300w\" sizes=\"(max-width: 536px) 100vw, 536px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today we released PIX on Windows version 2412.12, which can be downloaded here. This release includes several new improvements to GPU Captures and Timing Captures, including: GPU Captures: Custom Buffer\/Texture\/Mesh Visualizer Improvements Work Graph Shader Debugging (preview) VRS Shading Rate Visualizer Many bug fixes + smaller improvements Timing Captures: New Comparison Layout Range Details \u201cv2\u201d [&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":[4],"class_list":["post-6672","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pix","tag-release"],"acf":[],"blog_post_summary":"<p>Today we released PIX on Windows version 2412.12, which can be downloaded here. This release includes several new improvements to GPU Captures and Timing Captures, including: GPU Captures: Custom Buffer\/Texture\/Mesh Visualizer Improvements Work Graph Shader Debugging (preview) VRS Shading Rate Visualizer Many bug fixes + smaller improvements Timing Captures: New Comparison Layout Range Details \u201cv2\u201d [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts\/6672","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=6672"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts\/6672\/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=6672"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/categories?post=6672"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/tags?post=6672"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}