{"id":3155,"date":"2017-11-30T01:07:28","date_gmt":"2017-11-30T01:07:28","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/pix\/?p=3155"},"modified":"2019-03-27T11:03:16","modified_gmt":"2019-03-27T18:03:16","slug":"pix-1711-28","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/pix\/pix-1711-28\/","title":{"rendered":"PIX 1711.28 \u2013 GPU memory usage, TDR debugging, DXIL shader debugging, and child process GPU capture"},"content":{"rendered":"<p>Today we released <a href=\"https:\/\/devblogs.microsoft.com\/pix\/download\/\">PIX_1711.28<\/a>.\u00a0 New in this release:<\/p>\n<ul>\n<li>Timing captures now <strong>track<\/strong> <strong>GPU memory usage<\/strong>, and PIX can show how heaps and resources are created and managed with respect to the underlying GPU memory. This can be used to understand and optimize heap residency and troubleshoot performance issues caused by paging between local and non-local GPU memory.\n<ul>\n<li>More details about this feature <a href=\"https:\/\/devblogs.microsoft.com\/pix\/gpu-memory-usage\/\">here<\/a>.<\/li>\n<li>Note that PIX currently only tracks memory used by D3D12 heaps.\u00a0 Other types of GPU allocation (such as command allocators, pipeline state objects, and descriptor heaps) are on our backlog for a future release.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>Experimental <strong>TDR debugging<\/strong> feature allows frames that cause a TDR to be captured, analyzed, and debugged using PIX GPU captures.\n<ul>\n<li>More details <a href=\"https:\/\/blogs.msdn.microsoft.com\/pix\/tdr-debugging\/\">here<\/a><em><\/em>.<\/li>\n<li>Note that in order to take a GPU capture for debugging a TDR, you must be able to reproduce the TDR while a GPU capture is in progress. If the TDR is caused by a race condition or other rare, hard to repro problem, it may not be possible to capture it using PIX.<\/li>\n<li>Due to incompatibilities with current drivers, before using PIX to debug a TDR we recommend opening <em>Settings<\/em> and:\n<ul>\n<li>Unchecking <em>Enable GPU Plugins<\/em><\/li>\n<li>Checking <em>Disable PIX HUD in applications running under GPU capture<\/em><\/li>\n<\/ul>\n<\/li>\n<li>We would greatly appreciate <a href=\"https:\/\/blogs.msdn.microsoft.com\/pix\/support\/\">feedback<\/a> on your experiences using this feature!<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>PIX now supports full <strong>shader debugging for DXIL<\/strong> (shader model 6.0).\n<ul>\n<li>The only PIX feature still not enabled when using DXIL shaders is access tracking for bindless resources, which will be coming in a future update.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li><strong>Child process GPU capture<\/strong> allows launching one process from PIX, which launches another, then taking a GPU capture from the child.\u00a0 This enables use of PIX with games that start up via a separate launcher executable or batch file.\n<ul>\n<li>Note that PIX does not yet handle the case where both parent and child process render using D3D12 at the same time.<\/li>\n<li>We do not yet support 32 bit launchers, such as the Steam client.<\/li>\n<\/ul>\n<\/li>\n<li>File IO captures now let you specify a mapping file that describes the location and size of individual assets within archive files (such as ZIP or PAK files). PIX uses your mapping data to identify the individual asset for all reads within archives.<\/li>\n<li>The <em>Pipeline<\/em> UI and access tracking for bindless resources are now much faster.<\/li>\n<li>Tweaked behavior of the <em>Pipeline<\/em> UI to show all bound resources that are not part of large ranges, rather than only the ones that were accessed.\u00a0 The filtering that skips showing unused resources now only applies when a title is actually using bindless.<\/li>\n<li>PC Connection <em>Details<\/em> and GPU capture <em>File Details<\/em> now display correct adapter information when PIX is run on a system with multiple GPUs.<\/li>\n<li>Bugfixes.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/41\/2019\/03\/tdr4.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/41\/2019\/03\/tdr4.png\" alt=\"\" class=\"alignnone size-full wp-image-3105\" width=\"576\" height=\"365\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/41\/2019\/03\/gpumemory.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/41\/2019\/03\/gpumemory.png\" alt=\"\" class=\"alignnone size-full wp-image-3145\" width=\"1187\" height=\"824\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today we released PIX_1711.28.\u00a0 New in this release: Timing captures now track GPU memory usage, and PIX can show how heaps and resources are created and managed with respect to the underlying GPU memory. This can be used to understand and optimize heap residency and troubleshoot performance issues caused by paging between local and non-local [&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-3155","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pix","tag-release"],"acf":[],"blog_post_summary":"<p>Today we released PIX_1711.28.\u00a0 New in this release: Timing captures now track GPU memory usage, and PIX can show how heaps and resources are created and managed with respect to the underlying GPU memory. This can be used to understand and optimize heap residency and troubleshoot performance issues caused by paging between local and non-local [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts\/3155","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=3155"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts\/3155\/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=3155"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/categories?post=3155"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/tags?post=3155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}