{"id":2775,"date":"2017-04-27T19:54:32","date_gmt":"2017-04-27T19:54:32","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/pix\/?p=2775"},"modified":"2019-03-27T11:03:20","modified_gmt":"2019-03-27T18:03:20","slug":"pix-1704-27","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/pix\/pix-1704-27\/","title":{"rendered":"PIX 1704.27 \u2013 D3D12 usage warnings, Dr. PIX, and CPU hotpath analysis"},"content":{"rendered":"<p>Today we released <a href=\"https:\/\/devblogs.microsoft.com\/pix\/download\/\">PIX 1704.27 beta<\/a>.\u00a0 New in this release:<\/p>\n<ul>\n<li>PIX warnings can now automatically detect some common but inefficient D3D12 usage patterns<\/li>\n<li>First couple of Dr. PIX queries are now available on Windows<\/li>\n<li>CPU hotpath analysis in timing captures<\/li>\n<li>Create sections of your package layout file from File IO captures<\/li>\n<li>Merge multiple traces into a single analysis in File IO captures<\/li>\n<li>Added support for new D3D APIs introduced with Windows 10 Creators Update (ID3D12Device2, ID3D12GraphicsCommandList1)<\/li>\n<li>Fixed bug that was preventing PIX from displaying GPU shader disassembly<\/li>\n<li>Rendertarget visualizer robustness improvements<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2>Warnings<\/h2>\n<p>New GPU capture warnings are available in the <em>Warnings<\/em> pane.\u00a0 To analyze a capture for them, click on <em>Collect Experimental Warnings<\/em>.<\/p>\n<p>Each new warning will be marked experimental until we build up confidence that it is working reliably and not reporting too much noise.\u00a0 We would greatly appreciate <a href=\"https:\/\/blogs.msdn.microsoft.com\/pix\/support\/\">feedback<\/a> about whether useful warnings were reported for your title, any false positives, suggestions for other things you would like PIX to warn about, etc.<\/p>\n<p>Warnings added in this release are:<\/p>\n<ul>\n<li>Redundant transitions to unused state<\/li>\n<li>Resource can be transitioned to more constrained state<\/li>\n<li>Unnecessary DEPTH_WRITE to DEPTH_READ transitions<\/li>\n<li>Subresource transitioned multiple times within ResourceBarrier() call<\/li>\n<li>Redundant resource transitions due to resource decay or promotion<\/li>\n<li>Split Barrier recommendations<\/li>\n<li>Various other resource barrier warnings (e.g. consecutive calls, potentially incorrect)<\/li>\n<li>Back-to-back ExecuteCommandLists calls<\/li>\n<li>Command allocator usage warnings<\/li>\n<li>Various SetPipelineState warnings (e.g. unused, already set)<\/li>\n<li>Various D3D12_RESOURCE_FLAGS recommendations (e.g. add DENY_SHADER_RESOURCE)<\/li>\n<li>ResolveQueryData usage recommendations<\/li>\n<\/ul>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/41\/2019\/03\/warnings.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/41\/2019\/03\/warnings.png\" alt=\"warnings\" class=\"alignnone size-full wp-image-2796\" width=\"839\" height=\"394\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h2>Dr. PIX<\/h2>\n<p>Dr. PIX is a long-standing feature of PIX on Xbox.\u00a0 It provides a set of queries which analyze GPU workloads in different ways, measuring statistics and seeing how performance is affected by different ways of modifying the workload.\u00a0 In this release we have enabled Dr. PIX on Windows for the first time, initially supporting just a couple of queries.\u00a0 We will be adding more over time, and would love to <a href=\"https:\/\/blogs.msdn.microsoft.com\/pix\/support\/\">hear from you<\/a> if there are specific things you would like us to prioritize here.<\/p>\n<p>Dr. PIX is accessed in the <em>Tools<\/em> tab after opening a GPU capture.\u00a0 It will analyze only the selected region of the event list, or the entire capture if nothing is selected.\u00a0 To repeat the analysis on a different part of your capture, change the event list selection, then click the <em>Run Query<\/em> button inside Dr. PIX.<\/p>\n<p>The <em>Basic Information<\/em> page measures the GPU time of the selected workload, and compares this against two modified versions of that workload:<\/p>\n<ul>\n<li><em>Only 1 pixel<\/em> changes viewport sizes to 1&#215;1, thus removing almost all pixel shading work and framebuffer\/depth writes.\u00a0 The resulting performance improvement indicates how much the workload was bottlenecked by pixel fill work.<\/li>\n<li><em>Disable MSAA<\/em> removes any use of multisampling.\u00a0 The resulting performance improvement indicates how much the workload was bottlenecked by MSAA overheads.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/41\/2019\/03\/drpix_basic.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/41\/2019\/03\/drpix_basic.png\" alt=\"drpix_basic\" class=\"alignnone size-full wp-image-2785\" width=\"548\" height=\"302\" \/><\/a><\/p>\n<p>The Primitives and Rasterization page measures how many 2&#215;2 pixel quads were fully vs. partially covered by geometry during triangle rasterization, and how many primitives were culled at different parts of the rendering pipeline:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/41\/2019\/03\/drpix_primitives.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/41\/2019\/03\/drpix_primitives.png\" alt=\"drpix_primitives\" class=\"alignnone size-full wp-image-2795\" width=\"682\" height=\"723\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h2>CPU hotpath analysis in timing captures<\/h2>\n<p>Timing captures now include an analysis that identifies the set of events that represents the hotpath in terms of CPU time for a frame. Reducing the time taken by this set of events will have the most direct impact on frame time from a CPU perspective. You must select &#8220;Compute Hot Path for PC Timing Captures&#8221; to use this feature.<\/p>\n<p>&nbsp;<\/p>\n<h2>Create sections of your package layout file from File IO captures<\/h2>\n<p>After profiling the startup of your title or the loading of a level, you can use the Usage tab to determine the set of files that belong in that content group of your package layout. Once those files are identified, the File IO profiler can now generate the XML that defines that content group.\u00a0 This section of XML can then be pasted into your layout file.<\/p>\n<p>&nbsp;<\/p>\n<h2>Merge multiple traces into a single analysis in File IO captures<\/h2>\n<p>The Usage tab in File IO captures now includes the ability to add existing traces to the file usage analysis. The ability to merge multiple traces in this way enables you to get a more complete picture of each file&#8217;s usage. It&#8217;s common to have different portions of an asset file touched by different playthroughs of a given level. Merging the data from multiple play-throughs provides a more accurate analysis of the set of data that is required for a given level.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today we released PIX 1704.27 beta.\u00a0 New in this release: PIX warnings can now automatically detect some common but inefficient D3D12 usage patterns First couple of Dr. PIX queries are now available on Windows CPU hotpath analysis in timing captures Create sections of your package layout file from File IO captures Merge multiple traces into [&hellip;]<\/p>\n","protected":false},"author":1719,"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-2775","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pix","tag-release"],"acf":[],"blog_post_summary":"<p>Today we released PIX 1704.27 beta.\u00a0 New in this release: PIX warnings can now automatically detect some common but inefficient D3D12 usage patterns First couple of Dr. PIX queries are now available on Windows CPU hotpath analysis in timing captures Create sections of your package layout file from File IO captures Merge multiple traces into [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts\/2775","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\/1719"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/comments?post=2775"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts\/2775\/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=2775"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/categories?post=2775"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/tags?post=2775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}