{"id":4963,"date":"2020-08-27T13:52:34","date_gmt":"2020-08-27T20:52:34","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/pix\/?p=4963"},"modified":"2020-09-17T14:24:31","modified_gmt":"2020-09-17T21:24:31","slug":"pix-2008-26-new-capture-layer","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/pix\/pix-2008-26-new-capture-layer\/","title":{"rendered":"PIX Release 2008.26 &#8211; Our biggest update to GPU captures since 2017"},"content":{"rendered":"<p>Over the past two years, the PIX on Windows team has heard from many of you who rely on PIX for your development work. We\u2019ve heard you loud and clear &#8211; you want PIX to be faster when taking GPU captures. Today, we\u2019re happy to announce a huge release in response to that feedback. This release includes performance improvements at capture time, along with a host of other improvements that were only made possible by completely re-writing the PIX capture layer. Download and try it <a href=\"https:\/\/devblogs.microsoft.com\/pix\/download\/\">here<\/a>.<\/p>\n<p>We have too much packed into this release to cover in one post, so the PIX development team is posting a series of blogs over the next two weeks that go in-depth on the changes to PIX. They\u2019ll be linked here as they are posted!<\/p>\n<ul>\n<li>Austin Kinross goes in-depth with data and charts on how much faster games run under GPU capture in <a href=\"https:\/\/devblogs.microsoft.com\/pix\/pix-2008-26-perf\/\">PIX 2008.26: Performance Improvements<\/a>.<\/li>\n<li>Austin explains how we support placed and tiled resources in <a href=\"https:\/\/devblogs.microsoft.com\/pix\/gpu-captures-how-we-support-placed-and-reserved-resources\/\">GPU Captures: How we support placed and reserved resources<\/a>.<\/li>\n<li>Matt Amert details the many improvements to the way you take captures in <a href=\"https:\/\/devblogs.microsoft.com\/pix\/changes-to-the-capture-experience\/\">Changes to the capture experience<\/a>.<\/li>\n<li>Austin expounds on D3D video support in <a href=\"https:\/\/devblogs.microsoft.com\/pix\/d3d-video\/\">GPU Captures: Support for D3D Video<\/a>.<\/li>\n<li>Jeff Noyle describes how you can debug D3D11 apps with PIX in <a href=\"https:\/\/devblogs.microsoft.com\/pix\/debugging-d3d11-apps-using-d3d11on12\/\">Debugging D3D11 apps using D3Don12<\/a><\/li>\n<li>And finally, Damyan Pepper gives an explanation of how PIX now captures\u00a0<em>GPU Work<\/em> instead of <em>API Calls<\/em> in <a href=\"https:\/\/devblogs.microsoft.com\/pix\/capturinggpuwork\/\">Capturing GPU Work<\/a>.<\/li>\n<\/ul>\n<p>While we\u2019ve been working on this release for a long time and have tested with dozens of games, it\u2019s likely that there will be some issues at first. If you run into any bugs or irregularities with this new version, please let us know by hitting the send feedback button in the top right corner of PIX. You can always install a previous version <a href=\"https:\/\/devblogs.microsoft.com\/pix\/download\/\">here<\/a>.<\/p>\n<p>Now let\u2019s get into some of the big changes:<\/p>\n<h2>Performance<\/h2>\n<p>The highlight of this release is the performance improvements. Capture-time framerates are much higher than in previous versions. During our benchmarking, we\u2019ve seen framerate improvements between 3X to 57X at capture time. \u00a0Capture replay performance is also greatly improved. A thorough exploration of these improvements can be found <a href=\"https:\/\/devblogs.microsoft.com\/pix\/pix-2008-26-perf\/\">here<\/a>.<\/p>\n<h2>Broader Application Compatability<\/h2>\n<p>This release enables GPU captures of some previously unsupported scenarios, including:<\/p>\n<ul>\n<li>Support for Hololens 2 applications that would deadlock with previous builds of PIX.<\/li>\n<li>Support for applications that would deadlock on hybrid devices with previous builds of PIX.<\/li>\n<li>Support for applications that use D3D12 video APIs.<\/li>\n<li>All known issues capturing D3D11 applications through D3D11on12 have been resolved.<\/li>\n<li>Improved support for placed\/tiled resources.<\/li>\n<li><a href=\"https:\/\/devblogs.microsoft.com\/directx\/dred\/\">DRED<\/a> is now fully supported in applications running under GPU Capture.<\/li>\n<li>We correctly capture\/replay applications that use placed upload resources.<\/li>\n<li>We correctly serialize view instancing information in PSO streams.<\/li>\n<li>We correctly capture raytracing acceleration structures created in one capture and used in a later capture.<\/li>\n<\/ul>\n<h2>Improvements while taking captures<\/h2>\n<p>We&#8217;ve made improvements to the experience taking GPU Captures:<\/p>\n<ul>\n<li>You can open and analyze newly-taken GPU Captures without closing your game\/application. This is now turned on by default, and all issues with the previous setting to enable this have been resolved.<\/li>\n<li>Each .wpix file now contains exactly 1 GPU Capture. This matches Xbox PIX, and removes some confusing user experiences.<\/li>\n<\/ul>\n<h2>Video Support<\/h2>\n<p>You are now able to take captures of applications that use <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/medfound\/direct3d-12-video-overview\">D3D12 video APIs<\/a>. You can also capture D3D11 video work using the \u201cForce D3D11on12\u201d . \u00a0Look out for a blog post next week that details this new ability.<\/p>\n<h2>Bundle support<\/h2>\n<p>Bundles are now fully supported in GPU Captures. In particular, all known bundle lifetime issues during capture have been resolved, and we now support ExecuteIndirect inside a bundle.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-4965\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/08\/Bundles.png\" alt=\"Screenshot of Bundles in PIX\" width=\"680\" height=\"290\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/08\/Bundles.png 680w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/08\/Bundles-300x128.png 300w\" sizes=\"(max-width: 680px) 100vw, 680px\" \/><\/p>\n<p>&nbsp;<\/p>\n<h2>CPU Modifications in Resource History<\/h2>\n<p>Resource modifications made on the CPU timeline (for example, via Map() and Unmap() calls) are now visible in the\u00a0Resource History view. This will make it much easier to tell\u00a0when a resource had been modified on the CPU timeline.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-4966\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/08\/resource_modifications.png\" alt=\"Screenshot of Resource Modifications in PIX\" width=\"558\" height=\"183\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/08\/resource_modifications.png 558w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/08\/resource_modifications-300x98.png 300w\" sizes=\"(max-width: 558px) 100vw, 558px\" \/><\/p>\n<p>&nbsp;<\/p>\n<h2>Breaking changes:<\/h2>\n<ul>\n<li>Tiled resources tier 1 is no longer supported.<\/li>\n<li>PIX on Windows now requires Windows 10 version 1809 (aka RS5) or newer. Previous versions of PIX can be used on older versions of Windows 10, check the <a href=\"https:\/\/devblogs.microsoft.com\/pix\/requirements\/\">Requirements<\/a> page for more details.<\/li>\n<li>The usage of \u2018programmatic-capture &#8211;until-exit\u2019 has changed, in response to our change to only store one capture per .wpix file. Please see the<a href=\"https:\/\/devblogs.microsoft.com\/pix\/programmatic-capture\/\"> documentation <\/a>for more information.<\/li>\n<li>The CPU event list has been replaced with a combined \u201cCPU Timeline\u201d representing all relevant CPU work performed during replay.<\/li>\n<li>Captures from older versions of PIX will not open in this build.<\/li>\n<li>Captures from this version of PIX will not open in older versions of PIX.<\/li>\n<li>Since we now capture fewer CPU events than before, it is now easier to accidentally take an empty programmatic GPU Capture. This may happen, for example, if you call BeginCapture() and EndCapture() on the CPU timeline around an ExecuteCommandLists() call that is behind an unsatisfied wait on the GPU timeline. Please be careful to flush your GPU work before ending your capture.<\/li>\n<\/ul>\n<h2>Other changes:<\/h2>\n<ul>\n<li>Add a filter bar to timing captures with regex support and exclusion option.<\/li>\n<li>We now assign a Global ID to Present() events, making them easier to find in the event list.<\/li>\n<li>Applications that create &gt;4GB D3D12 buffers are now supported.<\/li>\n<li>Full support for ID3D12Device3::EnqueueMakeResident().<\/li>\n<li>Correct handling of resource promotion\/decay at capture time.<\/li>\n<li>Improved CPU write tracking on WARP devices.<\/li>\n<li>Fixed all known issues with capture\/replay of applications using CreateCommandList1.<\/li>\n<li>Better warning\/errors if the application uses multiple D3D12 devices during a capture.<\/li>\n<li>Misc object lifetime and reference counting issues have been fixed.<\/li>\n<li>Calling SetEventOnCompletion() with a null HANDLE is now supported.<\/li>\n<li>Added Start Analysis Dropdown Menu to streamline the workflow of starting analysis without terminating the application.<\/li>\n<li>Move popup placement when mousing over elements in lanes, removing annoying flickering bug.<\/li>\n<\/ul>\n<h2>Known Issues:<\/h2>\n<p>The following are known issues that we plan to fix in upcoming releases.<\/p>\n<ul>\n<li>Users may see an error preventing GPU capture analysis when using the ML library, or when using metacommands directly if their application uses metacommands initalized by resources that are destroyed before a GPU capture begins.<\/li>\n<li>Resources history can show the wrong resource state, particularly for buffers.<\/li>\n<li>If you are accessing PIX through Remote Desktop, disconnecting from Remote Desktop may cause the application to get stuck under GPU Capture.<\/li>\n<li>ID3D12CommandQueue::CopyTileMappings() is not currently supported.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>PIX 2008.26 is released today. Our biggest update to GPU captures since 2017, this release contains significantly increased framerate improvements at capture time, capture-replay performance improvements, and broader application compatibility. <\/p>\n","protected":false},"author":14687,"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-4963","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pix","tag-release"],"acf":[],"blog_post_summary":"<p>PIX 2008.26 is released today. Our biggest update to GPU captures since 2017, this release contains significantly increased framerate improvements at capture time, capture-replay performance improvements, and broader application compatibility. <\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts\/4963","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\/14687"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/comments?post=4963"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts\/4963\/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=4963"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/categories?post=4963"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/tags?post=4963"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}