{"id":5887,"date":"2022-08-10T13:57:38","date_gmt":"2022-08-10T20:57:38","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/pix\/?p=5887"},"modified":"2022-08-12T11:47:08","modified_gmt":"2022-08-12T18:47:08","slug":"pix-2208-10001","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/pix\/pix-2208-10001\/","title":{"rendered":"PIX 2208.10: SM 6.7 support, GPU and Timing Capture Improvements"},"content":{"rendered":"<p>Today we released PIX version 2208.10, which can be downloaded <a href=\"https:\/\/devblogs.microsoft.com\/pix\/download\/\">here<\/a>.<\/p>\n<p>This release has support for many new features, including:<\/p>\n<ul>\n<li>GPU Capture improvements\n<ul>\n<li>Support for Shader Model 6.7<\/li>\n<li>Programmatic API improvements<\/li>\n<li>GPU power state selection<\/li>\n<li>Experimental capture trimming<\/li>\n<\/ul>\n<\/li>\n<li>Timing Capture improvements\n<ul>\n<li>D3D Resources in Timing Captures<\/li>\n<li>Performance budgets in the Timing Capture Metrics View<\/li>\n<li>Data Export from the Timing Capture Metrics View<\/li>\n<\/ul>\n<\/li>\n<li>Bug fixes and other smaller improvements<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3>GPU Capture Improvements<\/h3>\n<h5><\/h5>\n<h5>Support for Shader Model 6.7<\/h5>\n<p>Last month the DirectX team <a href=\"https:\/\/devblogs.microsoft.com\/directx\/shader-model-6-7\/\">released Shader Model 6.7,<\/a> and today\u2019s PIX release includes support for it. This support allows you to capture, replay, debug and profile your Shader Model 6.7 shaders.<\/p>\n<h5>Programmatic API Improvements<\/h5>\n<p>Thank you for the feedback we received about <a href=\"https:\/\/devblogs.microsoft.com\/pix\/pix-2108-18\/\">the new programmatic APIs<\/a> we added last year. This PIX release addresses a lot of the feedback. In particular:<\/p>\n<ul>\n<li>PIX now shows captures taken via PIXBeginCapture() in the PIX UI, if the PIX UI is attached to the application.<\/li>\n<li>We\u2019ve added the PIXSetHUDOptions() API, that allows applications to hide the PIX capture-time HUD after loading WinPixGpuCapturer.dll.\n<ul>\n<li>We also display a better HUD by default when the application manually loads WinPixGpuCapturer.dll<\/li>\n<\/ul>\n<\/li>\n<li>We\u2019ve made PIXBeginCapture()\u2019s capture file path parameter optional.\n<ul>\n<li>If the PIX UI (or pixtool) is attached to the application when it calls PIXBeginCapture() with a NULL capture file path, then PIX will use a temporary file name.<\/li>\n<li>If the PIX UI (or pixtool) isn\u2019t attached to the application when PIXBeginCapture() is called with a NULL capture file path, then PIXBeginCapture() will fail.<\/li>\n<\/ul>\n<\/li>\n<li>We\u2019ve added the PIXForceD3D11on12() API.<\/li>\n<\/ul>\n<p>Please continue to contact us if you have feedback or suggestions, either about this feature or other PIX features.<\/p>\n<h5>GPU Power State Selection<\/h5>\n<p>This release adds the ability to put the GPU into a variety of different power states while profiling a GPU Capture. These power states are stable, but in some extreme circumstances a power state may not be sustainable for long periods of time. PIX will let you know when the GPU wasn\u2019t able to sustain a requested power state.<\/p>\n<p>On some devices, this new functionality lets you put the GPU into a more representative power state that your game would see when its run, compared to the indefinitely-sustainable stable power state achieved via ID3D12Device::SetStablePowerState(). The new functionality also lets you intentionally target less powerful power states (e.g. battery-conscious power states) that better represent user scenarios that you would like to optimize for.<\/p>\n<p>These new power states are defined by each hardware vendor. Currently AMD and Intel define custom power states for their supported hardware. Other hardware vendors will define custom power states in a future PIX release. Many thanks to our hardware partners for making this possible!<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/AMD-power-state.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-5888\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/AMD-power-state.png\" alt=\"Image AMD power state\" width=\"371\" height=\"93\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/AMD-power-state.png 371w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/AMD-power-state-300x75.png 300w\" sizes=\"(max-width: 371px) 100vw, 371px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/Intel-power-state.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-5889\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/Intel-power-state.png\" alt=\"Image Intel power state\" width=\"391\" height=\"123\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/Intel-power-state.png 391w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/Intel-power-state-300x94.png 300w\" sizes=\"(max-width: 391px) 100vw, 391px\" \/><\/a><\/p>\n<h5>Experimental capture trimming<\/h5>\n<p>This release adds an experimental option to pixtool that lets you take a large capture file and \u201crecapture\u201d a region of it into a separate smaller capture file. This might be useful for simplifying a bug repro into a targeted capture file that can be sent to another team (or company) for investigation.<\/p>\n<p>The feature pairs particularly nicely with the <a href=\"https:\/\/devblogs.microsoft.com\/pix\/pix-2203-30\/\">Export to C++<\/a> feature that we added earlier this year. For example, let\u2019s say that you see some rendering corruption in your game: you could take a capture of that frame, trim the capture down to a few problematic Draw calls, export that simplified capture to C++, and then send this simplified C++ code over to a partner team (or company) for investigation.<\/p>\n<p>This command demonstrates how you can take a capture file and create a new capture file that contains the GPU work that was between Global ID 15 and 20 (inclusive) in the original capture file:<\/p>\n<pre><span style=\"font-family: 'andale mono', monospace;\">pixtool.exe --output=verbose open-capture <\/span>\r\n\r\n<span style=\"font-family: 'andale mono', monospace;\">\u201cc:\\myreadabledirectory\\MyOriginalFile.wpix\u201d recapture-region <\/span>\r\n\r\n<span style=\"font-family: 'andale mono', monospace;\">\u201cc:\\mywriteabledirectory\\MyRecapturedFile.wpix\u201d --start=15 --end=20<\/span><\/pre>\n<p>We plan to add this feature to the PIX UI in the feature. In the meantime, we would love to hear feedback about it: please get in touch if you have thoughts.<\/p>\n<p>&nbsp;<\/p>\n<h3>Timing Capture Improvements<\/h3>\n<h5>D3D Resources in Timing Captures<\/h5>\n<p>Timing Captures now include an option to record information on all D3D resource and heap objects allocated and freed while the capture is running. This option provides insight into the total memory used to hold D3D objects, and identifies the specific objects that are in memory, at any point in the capture.<\/p>\n<p>To enable this feature, ensure the &#8220;GPU Resources&#8221; checkbox is enabled in Timing Capture options. After taking your capture, select a time range and then select either &#8220;Resource API Objects&#8221; or &#8220;Heap API Objects&#8221; in the &#8220;Items to Show&#8221; dropdown. Note only committed and placed resources are supported in this release.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/resources-in-timing-captures-1.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-5909\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/resources-in-timing-captures-1.png\" alt=\"Image resources in timing captures\" width=\"1793\" height=\"482\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/resources-in-timing-captures-1.png 1793w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/resources-in-timing-captures-1-300x81.png 300w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/resources-in-timing-captures-1-1024x275.png 1024w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/resources-in-timing-captures-1-768x206.png 768w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/resources-in-timing-captures-1-1536x413.png 1536w\" sizes=\"(max-width: 1793px) 100vw, 1793px\" \/><\/a><\/p>\n<h5>Performance budgets in the Timing Capture Metrics View<\/h5>\n<p>Performance budget lines are now available in the Metrics View. Budgets and budget markers make it easy to quickly find points in the graph that are over their budget. Performance budgets can be specified for any metric. Budgets are often assigned for a variety of scenarios, including frame time, the amount of time a particular subsystem is allowed to run per-frame, or to help track memory usage.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/perf-budgets-in-timing-capture-metrics.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-5892\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/perf-budgets-in-timing-capture-metrics.png\" alt=\"Image perf budgets in timing capture metrics\" width=\"624\" height=\"314\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/perf-budgets-in-timing-capture-metrics.png 624w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/perf-budgets-in-timing-capture-metrics-300x151.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/a><\/p>\n<h5>Data Export from the Timing Capture Metrics View<\/h5>\n<p>The Metrics view now supports exporting data for analysis in other tools such as Microsoft Excel. Data is exported in csv format. The values for all points of the currently graphed metrics are exported.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/data-export-from-metrics-view.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-5890\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/data-export-from-metrics-view.png\" alt=\"Image data export from metrics view\" width=\"624\" height=\"469\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/data-export-from-metrics-view.png 624w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/data-export-from-metrics-view-300x225.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/a> <a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/exported-data-from-metrics-view.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-5891\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/exported-data-from-metrics-view.png\" alt=\"Image exported data from metrics view\" width=\"624\" height=\"348\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/exported-data-from-metrics-view.png 624w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2022\/08\/exported-data-from-metrics-view-300x167.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3>Bug fixes and other smaller improvements<\/h3>\n<ul>\n<li>Fix DXR debug layer error at capture time<\/li>\n<li>Fix engine crash when PDB file is set to the compiled shader<\/li>\n<li>Make adapter selection more resilient to driver changes<\/li>\n<li>Fix &#8220;Capture Time&#8221; string to show UTC time<\/li>\n<li>Fix timing capture race condition when using a short-lived app<\/li>\n<li>Restore sorting behavior for Autos view<\/li>\n<li>Fix alpha channel only display in texture viewer<\/li>\n<li>Fix some issues with x86 apps on ARM64<\/li>\n<li>Fix engine sending PDB name instead of hash for UI strings<\/li>\n<li>Support viewing buffer contents before selected event<\/li>\n<li>Make the &#8216;Work In Progress&#8217; bar show in the API Objects Table view<\/li>\n<li>Make IA Output look for &#8220;SV_Position&#8221; case insensitive<\/li>\n<li>Fix timing captures with a very short duration not automatically stopping<\/li>\n<li>Fix null reference crash on shutdown<\/li>\n<li>Fix crash when loading corrupted metrics view state at startup.<\/li>\n<li>Fix BlendOpAlpha reporting as BlendOp in state view<\/li>\n<li>Make sure doc tab strip item goes away on last doc close<\/li>\n<li>Fix crash when using old layouts with no-longer-existent view names<\/li>\n<li>Ensure doc dropdown disappears when parent becomes non-compressed<\/li>\n<li>Bind Ctrl+F9 to enable\/disable breakpoint<\/li>\n<li>Force tab name to match new view in layout editor<\/li>\n<li>Fix\/add theme colors for watch values changed\/NanInf<\/li>\n<li>Fix unnecessary range details refresh on symbol load<\/li>\n<li>Fix crash when range details event list loading is cancelled<\/li>\n<li>Improve edit mode in breakpoint conditions<\/li>\n<li>Add out-of-bounds messages to include null descriptor heaps<\/li>\n<li>Speed up HLSL coloring<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today we released PIX version 2208.10, which can be downloaded here. This release has support for many new features, including: GPU Capture improvements Support for Shader Model 6.7 Programmatic API improvements GPU power state selection Experimental capture trimming Timing Capture improvements D3D Resources in Timing Captures Performance budgets in the Timing Capture Metrics View Data [&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-5887","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 2208.10, which can be downloaded here. This release has support for many new features, including: GPU Capture improvements Support for Shader Model 6.7 Programmatic API improvements GPU power state selection Experimental capture trimming Timing Capture improvements D3D Resources in Timing Captures Performance budgets in the Timing Capture Metrics View Data [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts\/5887","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=5887"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts\/5887\/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=5887"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/categories?post=5887"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/tags?post=5887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}