{"id":4726,"date":"2019-09-23T16:09:02","date_gmt":"2019-09-23T23:09:02","guid":{"rendered":"http:\/\/devblogs.microsoft.com\/pix\/?p=4726"},"modified":"2019-09-24T10:19:32","modified_gmt":"2019-09-24T17:19:32","slug":"pix-1909-23","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/pix\/pix-1909-23\/","title":{"rendered":"PIX 1909.23 &#8211; New timing capture features, performance improvements and bug fixes"},"content":{"rendered":"<p>Today we released PIX 1909.23<sup>*<\/sup> which can be downloaded <a href=\"http:\/\/devblogs.microsoft.com\/pix\/download\/\">here<\/a>. This release contains new timing capture features, support for programmatic captures in pixtool, performance improvements and many bug fixes.<\/p>\n<p><span style=\"font-size: 8pt;\">* 1909.23 is the new name for 1909.13.\u00a0 Sorry for any confusion.\n<\/span><\/p>\n<h3>New Timing Captures<\/h3>\n<p>This release of PIX includes several enhancements to New Timing Captures aimed at helping you diagnose when your title\u2019s threads have stalled and why.\u00a0 Visual adorners are now drawn on the timeline to make it easier to see what caused a thread to be switched out and switched back in again.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2019\/09\/190913-img1.png\" \/><\/p>\n<p>You can also now select a region of unscheduled time directly.\u00a0 When doing so, the Element Details view is populated with information about the context switches that border the stall.\u00a0 Hyperlinks in Element Details allow you to quickly navigate to the threads, cores and context switches involved in the stall.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2019\/09\/190313-img2.png\" \/><\/p>\n<p>When looking at Core lanes, it\u2019s now much easier to spot periods of time when your title isn\u2019t running, and to see which process is running instead.\u00a0 In the following picture, we can see periods of time when Outlook.exe is running on the Core than runs my title\u2019s main simulation loop.<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2019\/09\/190913-img3.png\" \/><\/p>\n<h3>Optimized Shader Access Tracking<\/h3>\n<p>The first time that PIX attempts to populate the Pipeline view it performs &#8220;Shader Access Tracking&#8221; for the entire capture.\u00a0 This process involves patching every shader to record which resources were actually accessed by that shader.\u00a0 In this release we&#8217;ve optimized this process &#8211; in one case we measured a 100 times speedup.<\/p>\n<h3>Programmatic Captures from pixtool<\/h3>\n<p>pixtool now supports waiting for a GPU <a href=\"http:\/\/devblogs.microsoft.com\/pix\/programmatic-capture\/\">Programmatic Capture<\/a> using the new programmatic-capture command. Similar to the existing take-capture command, you can immediately open programmatic captures with the &#8211;open flag, or use save-capture to write the file to disk.<\/p>\n<pre title=\"Programmatic Capture in Pixtool\" class=\"font:consolas toolbar:2 lang:default highlight:0 decode:true\">pixtool launch \"D3D12HelloProgrammaticCapture.exe\" programmatic-capture --open list-counters save-capture \"PixtoolProgrammaticCapture.wpix\"<\/pre>\n<h3>Changes to 12on7 Support in PIX<\/h3>\n<p>D3D12onWin7 (12on7) is a version of D3D12 that allows game developers to use D3D12 on Windows 7.<\/p>\n<p>If you are porting your application to 12on7 then please follow the development guidance here (<a href=\"https:\/\/microsoft.github.io\/DirectX-Specs\/d3d\/D3D12onWin7.html\">https:\/\/microsoft.github.io\/DirectX-Specs\/d3d\/D3D12onWin7.html<\/a>). If you follow these instructions then PIX will continue to work as normal when you run your application on Windows 10. In particular, note that you must place the 12on7 binaries <em>in a subdirectory<\/em> alongside your application and <em>not in the same directory<\/em>\u00a0as your application. This was supported in previous versions of PIX but it won&#8217;t be supported going forward.<\/p>\n<h3>Change List<\/h3>\n<h4>New Timing Captures<\/h4>\n<ul>\n<li>Add ability to collapse\/expand in fragment lanes<\/li>\n<li>Various bug fixes &amp; visual improvements<\/li>\n<li>Add ready thread core to ContextSwitchDetails<\/li>\n<li>Add ready thread lines<\/li>\n<li>Add &#8220;bold context switches&#8221; display option<\/li>\n<li>Fix double-click on aggregate fragment in core lane<\/li>\n<li>Replace down-arrow with gear icon for lane settings, and fix mouse hover in side bar<\/li>\n<li>Fix calculation of &#8220;First Reliable&#8221; timestamp<\/li>\n<li>Selectable Thread Runs and Stalls<\/li>\n<li>Adjusted ETW buffer settings to avoid lost events<\/li>\n<\/ul>\n<h4>CPU Captures<\/h4>\n<ul>\n<li>Improve loading performacne &amp; display progress bar<\/li>\n<li>Allow single event selection to select multiple fragments (OTC)<\/li>\n<\/ul>\n<h4>GPU Captures<\/h4>\n<ul>\n<li>Optimized Shader-Access-Tracking (in some cases it is now 100 times faster)<\/li>\n<li>Fix issue with EnqueueMakeResident support that was causing a hang when capturing 9on12 and 11on12 applications<\/li>\n<li>Basic support for capturing applications that use protected sessions<\/li>\n<li>Keep current item visible when filter changes in GPU capture event list<\/li>\n<li>Fixed crash in shader debugging for DXBC when source is missing<\/li>\n<li>Fixed GPU capture support for MetaCommands to correctly call InitializeMetaCommand in recreation step<\/li>\n<li>Various other bug fixes around inspecting \/ debugging \/ editing shaders<\/li>\n<li>Don&#8217;t try to persist the order\/state of per-context lanes in the GPU capture timeline as this can change between captures and interfere with other lanes<\/li>\n<li>Add support for ReflectSharedProperties and recreation for &#8220;GDI-style&#8221; shared resources allow capture of 9on12 applications<\/li>\n<li>Fixed handling of ESC key in the missing PDB dialog<\/li>\n<li>Fixed debug layer warning: don&#8217;t emit zero-sized resource barriers during renderpass emulation<\/li>\n<li>Updated Intel GPU Plugin &#8211; includes a fix to an issue where timing data differed before \/ after collecting GPU counters<\/li>\n<li>Fixed crash when playing back certain CheckFeatureSupport calls (by no longer playing back CheckFeatureSupport since it has no affect at playback time)<\/li>\n<li>Fixed issue with shader access tracking when dealing with heaps that contain invalid descriptors<\/li>\n<li>Added MetaCommand parameter reflection info to Event Details for ID3DCaptureRecreationHelper::InitializeMetaCommand.<\/li>\n<li>Turn off checkerboarding in texture viewer by default<\/li>\n<li>Fixed TDR on Intel when MetaCommands are used<\/li>\n<li>Add &#8220;Copy Value&#8221; to shader debugger&#8217;s watch view<\/li>\n<li>Fix background color of checkboxes<\/li>\n<li>Fix some strange PIX event EoP-EoP durations on NVIDIA<\/li>\n<li>Fixed UI playback adapter selection for compute-only devices<\/li>\n<li>Fixed debug layer warning while capturing title that uses tiled resources<\/li>\n<li>Don&#8217;t use SSE4 intrinsics (they&#8217;re not supported on older CPUs)<\/li>\n<li>Add support for programmatic GPU capture in pixtool<\/li>\n<li>Comma-separated format for Queue ID column<\/li>\n<li>Fix for PIX doesn&#8217;t choose correct adapter if app passed NULL to D3D12CreateDevice<\/li>\n<li>Connection view now remembers the users&#8217;s API combobox selection.<\/li>\n<\/ul>\n<h4>System Monitor<\/h4>\n<ul>\n<li>Add aggregation mode for sysmon counters<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Today we released PIX 1909.23* which can be downloaded here. This release contains new timing capture features, support for programmatic captures in pixtool, performance improvements and many bug fixes. * 1909.23 is the new name for 1909.13.\u00a0 Sorry for any confusion. New Timing Captures This release of PIX includes several enhancements to New Timing Captures [&hellip;]<\/p>\n","protected":false},"author":1876,"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-4726","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pix","tag-release"],"acf":[],"blog_post_summary":"<p>Today we released PIX 1909.23* which can be downloaded here. This release contains new timing capture features, support for programmatic captures in pixtool, performance improvements and many bug fixes. * 1909.23 is the new name for 1909.13.\u00a0 Sorry for any confusion. New Timing Captures This release of PIX includes several enhancements to New Timing Captures [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts\/4726","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\/1876"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/comments?post=4726"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts\/4726\/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=4726"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/categories?post=4726"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/tags?post=4726"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}