{"id":4838,"date":"2020-05-04T12:30:38","date_gmt":"2020-05-04T19:30:38","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/pix\/?p=4838"},"modified":"2020-05-04T12:38:11","modified_gmt":"2020-05-04T19:38:11","slug":"pix-2004-27","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/pix\/pix-2004-27\/","title":{"rendered":"PIX 2004.27  &#8211;  Improved struct support in the Buffer Viewer, CPU Memory and File IO Data in Timing Captures"},"content":{"rendered":"<p>Today we released PIX 2004.27 which can be downloaded\u00a0<a href=\"https:\/\/devblogs.microsoft.com\/pix\/download\/\">here<\/a>. This release contains improved support for structs in the Buffer Viewer, and support for CPU memory allocation data and file I\/O data in Timing Captures. This version also includes an updated plugin for AMD GPUs, and supports a new pixtool flag to help automate grabbing an unknown number of captures.<\/p>\n<h2>Improved struct support in the Buffer Viewer<\/h2>\n<p>The format specification syntax used in the buffer viewer has been enhanced. It now supports true nesting of structures, as well as arrays.\u00a0With these additions, the default format descriptions of constant buffers (for example) that contain arrays or nested structures are no longer \u201cunrolled\u201d into lengthy, repetitive descriptions.<\/p>\n<p>To display such structures in the buffer viewer, the default display mode is now \u201ctree\u201d form. This mode is similar to the locals\/watch windows in Visual Studio, where structures and arrays are shown as parent nodes, with their members\/elements as children, and so on. Here\u2019s an example:<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-4840\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/05\/bufferviewer1.jpg\" alt=\"Screenshot of the Buffer Viewer in PIX displaying a struct in tree form\" width=\"1249\" height=\"554\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/05\/bufferviewer1.jpg 1249w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/05\/bufferviewer1-300x133.jpg 300w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/05\/bufferviewer1-1024x454.jpg 1024w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/05\/bufferviewer1-768x341.jpg 768w\" sizes=\"(max-width: 1249px) 100vw, 1249px\" \/><\/p>\n<p>Tree mode is required in order to display the arbitrarily complex structures that can be defined with the new syntax.\u00a0 However, if the structure is simple and can be displayed in tabular form, that option is still available using the \u201cTable\/Tree\u201d toggle button.\u00a0Here\u2019s the result:<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-4841 size-full\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/05\/bufferviewer2.jpg\" alt=\"Screenshot of the Buffer Viewer in PIX in table mode\" width=\"1252\" height=\"530\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/05\/bufferviewer2.jpg 1252w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/05\/bufferviewer2-300x127.jpg 300w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/05\/bufferviewer2-1024x433.jpg 1024w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/05\/bufferviewer2-768x325.jpg 768w\" sizes=\"(max-width: 1252px) 100vw, 1252px\" \/><\/p>\n<p>Other enhancements to the syntax include:<\/p>\n<ul>\n<li>A new syntax for specifying padding, which is simply \u2018pad <em>n<\/em>;\u2019 where n = number of bytes.<\/li>\n<li>Bitfield specification, which allows extraction of bit-packed values.\u00a0 For example, you might have a DWORD value that has a set of flags in the high bits and a count in the remaining bits.\u00a0 You could describe this with the following format:<\/li>\n<\/ul>\n<pre>struct\r\n{\r\n\u00a0 \u00a0 int count:29;\r\n\u00a0 \u00a0 int flagA:1;\r\n\u00a0 \u00a0 int flagB:1;\r\n\u00a0 \u00a0 int flagC:1;\r\n}<\/pre>\n<p>There is also a new \u201coffset\u201d value that you can specify as the start point for the buffer viewer to begin visualizing data.\u00a0This is a byte-offset from the beginning of the actual buffer data selected in the pipeline view.<\/p>\n<h2>pixtool programmatic-capture <tt>--<\/tt>until<tt>-<\/tt>exit<\/h2>\n<p>New in <a href=\"https:\/\/devblogs.microsoft.com\/pix\/pixtool\/\">pixtool<\/a> this release is the <tt>--until-exit<\/tt> flag on programmatic-capture. Using this flag will cause pixtool to handle all the programmatic captures until the app exits. This may be useful to users who want to automate grabbing an unknown number of captures.<\/p>\n<h2>CPU Memory allocation data in Timing Captures<\/h2>\n<p>Timing Captures now include options to record information on the CPU memory allocations and frees made while the capture is running.\u00a0This memory data is used to build an allocation stack tree focused on helping identify memory leaks.<\/p>\n<h2 style=\"font-family: Arimo, 'Helvetica Neue', Arial, sans-serif; color: #52595e;\"><img decoding=\"async\" class=\"alignnone wp-image-4842 size-full\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/05\/cpu-memory-allocation.png\" alt=\"Screenshot of CPU Memory Allocation in PIX\" width=\"1213\" height=\"499\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/05\/cpu-memory-allocation.png 1213w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/05\/cpu-memory-allocation-300x123.png 300w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/05\/cpu-memory-allocation-1024x421.png 1024w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/05\/cpu-memory-allocation-768x316.png 768w\" sizes=\"(max-width: 1213px) 100vw, 1213px\" \/><\/h2>\n<h2>File IO data in Timing Captures<\/h2>\n<p>Timing Captures now include the option to collect data on file accesses made by your title using the Win32 APIs. PIX uses this data to display when each file i\/o operation occurred, how long it took, how many bytes were read, and so on.\u00a0Callstacks for each file access are displayed as well.<\/p>\n<p><img decoding=\"async\" class=\"alignnone wp-image-4843 size-full\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/05\/file-io-data.png\" alt=\"Screenshot of File IO Data in Timing Captures\" width=\"1216\" height=\"481\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/05\/file-io-data.png 1216w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/05\/file-io-data-300x119.png 300w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/05\/file-io-data-1024x405.png 1024w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2020\/05\/file-io-data-768x304.png 768w\" sizes=\"(max-width: 1216px) 100vw, 1216px\" \/><\/p>\n<h2>Let us know your thoughts!<\/h2>\n<ul>\n<li>Send your feedback, bug reports or questions to askwinpix at microsoft.com<\/li>\n<li>See the <a href=\"https:\/\/devblogs.microsoft.com\/pix\/support-2\/\">Support<\/a> page for other ways to contact us<\/li>\n<\/ul>\n<h2>Other Changes<\/h2>\n<ul>\n<li>Updated to the latest AMD Plugin which enables the following:\n<ul>\n<li>Support for upcoming AMD APU\u2019s<\/li>\n<li>Support for the upcoming 20.10 AMD driver in support of the Windows 10 May 2020 Update<\/li>\n<li>Occupancy fixes<\/li>\n<\/ul>\n<\/li>\n<li>Full support for Sampler Feedback, including:\n<ul>\n<li>Added support for Sampler Feedback maps in Pixel History.<\/li>\n<li>MIN_MIP feedback maps are now displayed correctly when accessing only one mip level.<\/li>\n<li>Fixed issues when replaying MIN_MIP Sampler Feedback maps that would either cause StartAnalysis to fail or the feedback map to be in the incorrect resource state.<\/li>\n<li>Fixed issues resolving MIP_REGION_USED feedback maps that had a full mip chain.<\/li>\n<\/ul>\n<\/li>\n<li>New Timing Capture Improvements\n<ul>\n<li>Minor performance improvements when opening new timing captures.<\/li>\n<li>Update support for real-time sessions to dynamically choose the best ETW configuration.<\/li>\n<li>Fixed issue where the end timestamp would sporadically occur before the start timestamp.<\/li>\n<li>Apps containing old-style PIX events from &lt;pix.h&gt; will now capture successfully, but the events themselves will not appear in PIX.<\/li>\n<\/ul>\n<\/li>\n<li>Fixed issue where breakpoints wouldn\u2019t bind when shaders mixed \u201c\\\u201d and \u201c\/\u201d when specifying include paths.<\/li>\n<li>Added support for Ctrl + Tab to switch between documents.<\/li>\n<li>Middle-clicking on a tab will now close it.<\/li>\n<li>Fixed timing data collection for DispatchRays inside ExecuteIndirect.<\/li>\n<li>Improved performance of d3d state view when large numbers of descriptors are bound.<\/li>\n<li>Fixed issue where the VSOutput table format could be incorrectly ordered and only displayed floats.<\/li>\n<li>Updated all help links to point to devblogs.microsoft.com\/pix instead of blogs.msdn.com\/pix.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Today we released PIX 2004.27 which can be downloaded\u00a0here. This release contains improved support for structs in the Buffer Viewer, and support for CPU memory allocation data and file I\/O data in Timing Captures. This version also includes an updated plugin for AMD GPUs, and supports a new pixtool flag to help automate grabbing an [&hellip;]<\/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-4838","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pix","tag-release"],"acf":[],"blog_post_summary":"<p>Today we released PIX 2004.27 which can be downloaded\u00a0here. This release contains improved support for structs in the Buffer Viewer, and support for CPU memory allocation data and file I\/O data in Timing Captures. This version also includes an updated plugin for AMD GPUs, and supports a new pixtool flag to help automate grabbing an [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts\/4838","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=4838"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts\/4838\/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=4838"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/categories?post=4838"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/tags?post=4838"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}