{"id":5775,"date":"2022-03-30T15:02:25","date_gmt":"2022-03-30T22:02:25","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/pix\/?p=5775"},"modified":"2022-03-30T15:51:00","modified_gmt":"2022-03-30T22:51:00","slug":"pix-2203-30","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/pix\/pix-2203-30\/","title":{"rendered":"PIX 2203.30: Export to C++, UI changes and more!"},"content":{"rendered":"<p>Today we released PIX version 2203.30, which can be downloaded <a href=\"https:\/\/devblogs.microsoft.com\/pix\/download\/\">here<\/a>.<\/p>\n<p>This release has a lot of new features, including:<\/p>\n<ul>\n<li><a href=\"#export-to-cpp\">Export to C++<\/a>\n<ul>\n<li>Adds the ability to export a GPU Capture file into a series of C++ files that perform the captured D3D12 work<\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#ui-changes\">UI changes and perf improvements<\/a>\n<ul>\n<li>We\u2019ve made significant changes to the UI to improve performance, primarily when switching between captures.\u00a0 Along with that comes an entirely new way to customize the layout, including the ability to create multiple named layouts to quickly switch between, and a few other goodies.<\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#plugins\">New Intel and AMD plugins<\/a>\n<ul>\n<li>Intel: Adds support for Intel\u00ae Arc\u2122 A-series graphics devices<\/li>\n<li>AMD: Improves performance while collecting High Frequency Counters. Also adds new counters, such as TagConflict.<\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#tessellation-shaders\">Shader Debugger support for Tessellation Shaders<\/a><\/li>\n<li><a href=\"#pdb-improvements\">PDB Management Improvements<\/a>: PDBs may now be placed inside .zip archives<\/li>\n<li><a href=\"#cpu-capture-improvements\">CPU capture improvements<\/a>\n<ul>\n<li>Graphing of Execution and Stalled time in the Metrics View<\/li>\n<li>Consolidated events are now grouped by threadBug fixes and other smaller<\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#bugfixes\">Bugfixes and other smaller improvements<\/a><\/li>\n<\/ul>\n<h2><a id=\"export-to-cpp\"><\/a>Export to C++<\/h2>\n<p>This release adds the ability to export a GPU Capture file into a series of C++ files that perform the captured D3D12 work. Potential use cases for this include:<\/p>\n<ul>\n<li>Isolate a repro for a bug. For example, if you see rendering corruption in a frame that you suspect is caused by another component (e.g. a driver bug) then you can take a GPU Capture of the frame, export it to C++, and then manually simplify the C++ code into a minimal repro.<\/li>\n<li>Perform experiments on a capture. For example, you could modify part of the C++ code and see if\/how performance changes.<\/li>\n<li>And more!<\/li>\n<\/ul>\n<p>The exported code includes a CMakeLists.txt file. You can then use CMake to generate build files for a variety of build systems. Alternatively, you can load the folder in Visual Studio and let Visual Studio autogenerate build files for you (<a href=\"https:\/\/docs.microsoft.com\/en-us\/cpp\/build\/cmake-projects-in-visual-studio?view=msvc-170\">CMake projects in Visual Studio | Microsoft Docs<\/a>).<\/p>\n<p>As with regular .wpix capture files, we can&#8217;t guarantee that the exported C++ code will run correctly on a different GPU\/driver compared to the one originally used to take the capture. It will work for some applications, and it won&#8217;t work for others.<\/p>\n<p>We have thoroughly tested this feature with a wide range of applications and games. However, if you experience problems, please contact us via the feedback button in PIX or via the <a href=\"https:\/\/discord.gg\/directx\">DirectX Discord<\/a> and we will be very happy to help.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/03\/Export-to-cpp.jpg\"><img decoding=\"async\" class=\"alignnone wp-image-5780\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/03\/Export-to-cpp.jpg\" alt=\"Image Export to cpp\" width=\"786\" height=\"353\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/03\/Export-to-cpp.jpg 864w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/03\/Export-to-cpp-300x135.jpg 300w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/03\/Export-to-cpp-768x345.jpg 768w\" sizes=\"(max-width: 786px) 100vw, 786px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h2><a id=\"ui-changes\"><\/a>UI changes and perf improvements<\/h2>\n<p>The user interface has been updated to vastly improve the performance of changing from one tab to another, especially when changing between captures.<\/p>\n<p>As part of these updates, the process of customizing layouts is an all new, menu-driven experience.\u00a0 The general structure of how views are arranged into \u201clayouts\u201d has been simplified, with certain restrictions from the previous version being removed.\u00a0 For instance, views are no longer required to be in a tab, which can reduce wasted screen real estate.\u00a0 The basic model for arranging views in \u201clayout space\u201d is effectively three options:<\/p>\n<ul>\n<li>Place a view into that space<\/li>\n<li>\u201cSplit\u201d that space into 2 or more spaces (with adjustable splitters between them)<\/li>\n<li>Put a tab group in that space, and add tab(s) each with their own space<\/li>\n<\/ul>\n<p>These options can be recursively applied to create virtually any arrangement of views, and allows for new capabilities such as putting multiple views in a single tab, etc.\u00a0 You can also create and name as many different layouts as you like, and switch between them at any time.<\/p>\n<p>There is also a new \u201cminimize\u201d feature, where views (or tab groups) can be collapsed to allow more space for other views.\u00a0 For a simple example, if you want to give more space to the event list view here:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/03\/UI-improvements-1.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-5782\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/03\/UI-improvements-1.png\" alt=\"Image UI improvements 1\" width=\"750\" height=\"455\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/03\/UI-improvements-1.png 750w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/03\/UI-improvements-1-300x182.png 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>\u2026you can just click on the minimize icon in the upper right of the tab group containing the Screen Shot view, and it\u2019ll get out of your way:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/03\/UI-improvements-2.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-5783\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/03\/UI-improvements-2.png\" alt=\"Image UI improvements 2\" width=\"750\" height=\"455\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/03\/UI-improvements-2.png 750w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/03\/UI-improvements-2-300x182.png 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h2><a id=\"plugins\"><\/a>New Intel and AMD plugins<\/h2>\n<p>Many thanks to our IHV partners for their support of PIX with continuous updates to their plugins!<\/p>\n<p>Today we&#8217;re pleased to announce the availability of two new plugins accompanying today&#8217;s release<\/p>\n<p>The new Intel plugin adds support for Intel\u00ae Arc\u2122 A-series graphics devices.<\/p>\n<p>And the new AMD plugin improves performance while collecting High Frequency Counters. This plugin also adds new counters, such as TagConflict.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/03\/AMD-plugin.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-5785\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/03\/AMD-plugin.png\" alt=\"Image AMD plugin\" width=\"320\" height=\"324\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/03\/AMD-plugin.png 320w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/03\/AMD-plugin-296x300.png 296w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/03\/AMD-plugin-24x24.png 24w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/03\/AMD-plugin-48x48.png 48w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/03\/AMD-plugin-96x96.png 96w\" sizes=\"(max-width: 320px) 100vw, 320px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h2><a id=\"tesselation-shaders\"><\/a>Shader Debugger support for Tessellation Shaders<\/h2>\n<p>The shader debugger now supports hull and domain shaders.<\/p>\n<p>&nbsp;<\/p>\n<h2><a id=\"pdb-improvements\"><\/a>PDB Management Improvements<\/h2>\n<p>PDBs may now be placed inside .zip archives. PIX will search for .zip files in the PDB path, which you can modify via the settings menu.<\/p>\n<p>&nbsp;<\/p>\n<h2><a id=\"cpu-capture-improvements\"><\/a>CPU Capture Improvements<\/h2>\n<h4>Graphing of Execution and Stalled time in the Metrics View<\/h4>\n<p>A PIX event\u2019s execution time and stalled time can now be graphed in addition to its duration in the Metrics View. These new metrics allow you to analyze the time spent directly in a PIX event while omitting the time the event was stalled.<\/p>\n<h4>Consolidated events are now grouped by thread<\/h4>\n<p>The algorithm used by PIX to consolidate events for display in the Timing Capture Metrics View now accounts for the thread the events are running on.<\/p>\n<p>For example, if you have a consolidated event named RenderProcess* that runs on two threads, Render1 and Render2, the Metrics View will now contain 2 consolidated events, RenderProcess* (Render1) and RenderProcess* (Render2).<\/p>\n<p>&nbsp;<\/p>\n<h2><a id=\"bugfixes\"><\/a>Bugfixes and other smaller improvements<\/h2>\n<p>Other GPU Capture improvements:<\/p>\n<ul>\n<li>Capture Time: fix dangling MetaCommand references that can cause crashes<\/li>\n<li>Descriptor Heap View: Fix GpuId Descriptor Heap views<\/li>\n<li>Misc: Improved shader PDB caching in WinPIX<\/li>\n<li>Pipeline View: Provide UI feedback for out-of-bounds SM6.6 dynamic resource access (i.e. direct from descriptor heap)<\/li>\n<li>Pixel\/Resource History: Add MeshShader events<\/li>\n<li>pixtool: fix capture\/playback of app using non-default adapter<\/li>\n<li>Texture Viewer: Improving resource and view properties display<\/li>\n<li>Texture Viewer Horizontal\/vertical image flip<\/li>\n<li>Texture Viewer: Fix calculation of subresources for tiled array resources<\/li>\n<li>Texture Viewer: Don&#8217;t reset the pixel details fields while the cursor is moving<\/li>\n<li>Texture Viewer: Fix TDR when visualizing a multiplanar _TYPELESS MSAA depth\/stencil buffer that has denied SRV creation<\/li>\n<li>Timeline: Fix dark mode for Execution Duration<\/li>\n<li>Timeline: Fix misc issues around Wait and Signal timings<\/li>\n<li>Replayer: Call SetDescriptorHeaps() if necessary when re-initializing MetaCommands<\/li>\n<li>Replayer: Better error message for D3D12EnableExperimentalFeatures failure<\/li>\n<li>Shader Debugger: Make &#8220;save trace&#8221; button do something useful<\/li>\n<\/ul>\n<p>Other Timing Capture improvements<\/p>\n<ul>\n<li>A new option named \u201cDetailed symbol processing debug output\u201d has been added. Enabling this setting turns on verbose symbol loading logging to help diagnose issues with PIX finding the correct PDBs.<\/li>\n<\/ul>\n<p>Other improvements:<\/p>\n<ul>\n<li>WinPixEventRuntime: Add command queue versions of ABI<\/li>\n<li>Connection Page: Fix Connection Details &#8220;OS&#8221; version on Win11<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Today we released PIX version 2203.30, which can be downloaded here. This release has a lot of new features, including: Export to C++ Adds the ability to export a GPU Capture file into a series of C++ files that perform the captured D3D12 work UI changes and perf improvements We\u2019ve made significant changes to the [&hellip;]<\/p>\n","protected":false},"author":2237,"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-5775","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pix","tag-release"],"acf":[],"blog_post_summary":"<p>Today we released PIX version 2203.30, which can be downloaded here. This release has a lot of new features, including: Export to C++ Adds the ability to export a GPU Capture file into a series of C++ files that perform the captured D3D12 work UI changes and perf improvements We\u2019ve made significant changes to the [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts\/5775","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\/2237"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/comments?post=5775"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts\/5775\/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=5775"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/categories?post=5775"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/tags?post=5775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}