{"id":7012,"date":"2026-01-20T09:10:51","date_gmt":"2026-01-20T17:10:51","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/pix\/?p=7012"},"modified":"2026-01-20T09:24:13","modified_gmt":"2026-01-20T17:24:13","slug":"pix-2601-15","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/pix\/pix-2601-15\/","title":{"rendered":"PIX 2601.15 &#8211; new Intel plugin, many buffer viewer improvements, and more"},"content":{"rendered":"<p>Today we released PIX version 2601.15, which can be downloaded <a href=\"https:\/\/devblogs.microsoft.com\/pix\/download\/\">here<\/a>. This release includes everything in the previous <a href=\"https:\/\/devblogs.microsoft.com\/pix\/pix-2509-25\/\">2509.25<\/a> release, plus:<\/p>\n<ul>\n<li><a href=\"#new-intel-plugin\">A new Intel plugin<\/a> with many new features and improvements<\/li>\n<li><a href=\"#buffer-viewer-improvements\">Many new Buffer Viewer and Buffer Formatter improvements<\/a><\/li>\n<li><a href=\"#misc-other-improvements\">Misc other bug fixes and improvements<\/a><\/li>\n<\/ul>\n<p>As usual, please get in touch with us if you have any feedback or issues. The best ways to contact us are via the Send Feedback button in PIX or via the #pix channel on <a href=\"http:\/\/discord.gg\/directx\">the DirectX Discord server<\/a>.<\/p>\n<h3>New Intel Plugin<\/h3>\n<p>This version of PIX includes a revamped plugin from Intel, giving you a far better profiling experience for Intel GPUs in PIX than ever before. Many thanks to our partners at Intel for making this happen! Improvements include:<\/p>\n<ul>\n<li>New counter graphs, including a &#8220;bottleneck&#8221;-style Xe GPU Utilization lane<\/li>\n<li>Major counter accuracy improvements<\/li>\n<li>Major counter collection speed improvements<\/li>\n<\/ul>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/IntelPlugin.webp\"><img decoding=\"async\" class=\"alignnone size-full wp-image-7013\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/IntelPlugin.webp\" alt=\"IntelPlugin image\" width=\"1280\" height=\"695\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/IntelPlugin.webp 1280w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/IntelPlugin-300x163.webp 300w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/IntelPlugin-1024x556.webp 1024w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/IntelPlugin-768x417.webp 768w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><\/a><\/p>\n<p>For a lot more information about the plugin and advice on how to use it, please see <a href=\"https:\/\/graphicsprogrammingconference.com\/archive\/2025\/#profiling-with-pix\">Steven Tovey&#8217;s presentation<\/a> at the Graphics Programming Conference in November.<\/p>\n<p>&nbsp;<\/p>\n<h3>Buffer Viewer Improvements<\/h3>\n<p>We have made a lot of improvements to the Buffer Viewer and the Buffer Formatter in this release.<\/p>\n<p>The buffer formatter is now automatically populated for constant buffers in raytracing shaders, based on reflection data and\/or shader symbol data:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/raytracing_cbv.webp\"><img decoding=\"async\" class=\"size-full wp-image-7030 alignnone\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/raytracing_cbv.webp\" alt=\"raytracing cbv image\" width=\"1345\" height=\"510\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/raytracing_cbv.webp 1345w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/raytracing_cbv-300x114.webp 300w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/raytracing_cbv-1024x388.webp 1024w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/raytracing_cbv-768x291.webp 768w\" sizes=\"(max-width: 1345px) 100vw, 1345px\" \/><\/a><\/p>\n<p>We have added a button to export the contents of the buffer view to CSV:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/image-2.webp\"><img decoding=\"async\" class=\"size-full wp-image-7031 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/image-2.webp\" alt=\"image 2 image\" width=\"750\" height=\"678\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/image-2.webp 750w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/image-2-300x271.webp 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>A new\u00a0<code class=\"language-default\">vector<\/code> keyword (e.g. <code class=\"language-default\">vector&lt;float32_t, 4&gt;<\/code>) has been added. This also enables long vectors, no longer limited to 1-4 elements:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-long-vector-table-view.webp\"><img decoding=\"async\" class=\"size-full wp-image-7016 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-long-vector-table-view.webp\" alt=\"buffer viewer long vector table view image\" width=\"560\" height=\"200\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-long-vector-table-view.webp 560w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-long-vector-table-view-300x107.webp 300w\" sizes=\"(max-width: 560px) 100vw, 560px\" \/><\/a><\/p>\n<p>Arrays work in table view now, including multiple dimensions in tree and table view. e.g. <code class=\"language-default\">uint8_t x[12][16]<\/code>:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-multidimensional-array-tree-view.webp\"><img decoding=\"async\" class=\"size-full wp-image-7017 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-multidimensional-array-tree-view.webp\" alt=\"buffer viewer multidimensional array tree view image\" width=\"560\" height=\"200\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-multidimensional-array-tree-view.webp 560w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-multidimensional-array-tree-view-300x107.webp 300w\" sizes=\"(max-width: 560px) 100vw, 560px\" \/><\/a><\/p>\n<p>We&#8217;ve added a new <code class=\"language-default\">tensor<\/code> pseudo-keyword that supports any data type (primitive and structures), dimensions, element strides, and layout (e.g. <code class=\"language-default\">tensor&lt;float32_t, {128,64}&gt;<\/code>). Strides can specify element order (e.g.\u00a0<code class=\"language-default\">tensor&lt;float32_t, {12,7}, column_major&gt;<\/code>) and explicit dimension alignment for padding (<code class=\"language-default\">tensor&lt;uint32_t, {12,7}, {8,1}&gt;<\/code>). Higher dimensions can be semantically labeled and flattened onto a 2D view. e.g. <code class=\"language-default\">tensor&lt;float32_t, {3,4,5,6}, default, nchw&gt;<\/code> or <code class=\"language-default\">tensor&lt;float32_t, {12,16}, row_major, xy&gt;<\/code>. Axis remapping is also supported via a 5th parameter to rearrange elements in the view, for example to show an NCHW layout as NHWC with the channels adjacent. e.g. <code class=\"language-default\">tensor&lt;float32_t, {1,3,4,5}, default, nchw, nhwc&gt;<\/code>:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-tensor-table-view.webp\"><img decoding=\"async\" class=\"size-full wp-image-7019 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-tensor-table-view.webp\" alt=\"buffer viewer tensor table view image\" width=\"848\" height=\"335\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-tensor-table-view.webp 848w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-tensor-table-view-300x119.webp 300w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-tensor-table-view-768x303.webp 768w\" sizes=\"(max-width: 848px) 100vw, 848px\" \/><\/a><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-tensor-tree-view.webp\"><img decoding=\"async\" class=\"size-full wp-image-7020 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-tensor-tree-view.webp\" alt=\"buffer viewer tensor tree view image\" width=\"848\" height=\"500\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-tensor-tree-view.webp 848w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-tensor-tree-view-300x177.webp 300w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-tensor-tree-view-768x453.webp 768w\" sizes=\"(max-width: 848px) 100vw, 848px\" \/><\/a><\/p>\n<p>We added a\u00a0<code class=\"language-default\">using<\/code> keyword added for type definitions, which supersedes macros, honoring scope and enabling array definitions. e.g. <code class=\"language-default\">using uint32_t8 = uint32_t[8]<\/code>:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-using-statement.webp\"><img decoding=\"async\" class=\"size-full wp-image-7021 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-using-statement.webp\" alt=\"buffer viewer using statement image\" width=\"560\" height=\"250\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-using-statement.webp 560w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-using-statement-300x134.webp 300w\" sizes=\"(max-width: 560px) 100vw, 560px\" \/><\/a><\/p>\n<p>#define\u00a0macro definitions are more generic, supporting arbitrary tokens which is useful for other scenarios (like say defining an array which wasn&#8217;t possible with macros). e.g. <code class=\"language-default\">#define ARRAY_LENGTH 42<\/code>:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-define-statement.webp\"><img decoding=\"async\" class=\"size-full wp-image-7022 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-define-statement.webp\" alt=\"buffer viewer define statement image\" width=\"560\" height=\"206\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-define-statement.webp 560w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-define-statement-300x110.webp 300w\" sizes=\"(max-width: 560px) 100vw, 560px\" \/><\/a><\/p>\n<p>We added more direct previews in the value column without needing to explicitly expand the rows to see them. New (above) vs old (below):<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-preview-array-new.webp\"><img decoding=\"async\" class=\"alignnone size-full wp-image-7023\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-preview-array-new.webp\" alt=\"buffer viewer preview array new image\" width=\"560\" height=\"148\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-preview-array-new.webp 560w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-preview-array-new-300x79.webp 300w\" sizes=\"(max-width: 560px) 100vw, 560px\" \/><\/a><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-preview-array-old.webp\"><img decoding=\"async\" class=\"alignnone size-full wp-image-7024\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-preview-array-old.webp\" alt=\"buffer viewer preview array old image\" width=\"560\" height=\"148\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-preview-array-old.webp 560w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-preview-array-old-300x79.webp 300w\" sizes=\"(max-width: 560px) 100vw, 560px\" \/><\/a><\/p>\n<p>Expanding all\/selected rows and columns is now possible via context menu and keypresses (NumPad * expand all children, double click toggles). Expanding a node that contains a nested series of single nodes will just expand that whole series, saving clicks:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-fast-expansion-single-nodes.webp\"><img decoding=\"async\" class=\"size-full wp-image-7026 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-fast-expansion-single-nodes.webp\" alt=\"buffer viewer fast expansion single nodes image\" width=\"560\" height=\"156\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-fast-expansion-single-nodes.webp 560w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-fast-expansion-single-nodes-300x84.webp 300w\" sizes=\"(max-width: 560px) 100vw, 560px\" \/><\/a><\/p>\n<p>Hierarchy context is preserved in table view for nested single node structures:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-table-view-hierarchy-context-preserved.webp\"><img decoding=\"async\" class=\"size-full wp-image-7027 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-table-view-hierarchy-context-preserved.webp\" alt=\"buffer viewer table view hierarchy context preserved image\" width=\"560\" height=\"270\" srcset=\"https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-table-view-hierarchy-context-preserved.webp 560w, https:\/\/devblogs.microsoft.com\/pix\/wp-content\/uploads\/sites\/41\/2026\/01\/buffer-viewer-table-view-hierarchy-context-preserved-300x145.webp 300w\" sizes=\"(max-width: 560px) 100vw, 560px\" \/><\/a><\/p>\n<p>Additionally:<\/p>\n<ul>\n<li>The buffer formatter view is now populated before start analysis, and far more quickly than before.<\/li>\n<li>We added a field offset column added to tree view.<\/li>\n<li>Constant buffers and UAV&#8217;s now follow natural field alignments without needing all the explicit padding (though explicit padding an <code class=\"language-default\">[[offset(28)]]<\/code> still work).<\/li>\n<li>Matrix shapes 2&#215;3 and 3&#215;2 now show correct offsets and values.<\/li>\n<li>New data types added: <code class=\"language-default\">int8_t<\/code>, <code class=\"language-default\">float8m3e4s1_t<\/code>, <code class=\"language-default\">float8m2e5s1_t.<\/code><\/li>\n<li>Mouse wheel scrolling is faster, rather than a single line per scroll.<\/li>\n<li>Bitfields honor big endian option.<\/li>\n<li>Binary values 0b show consistent digit counts.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3>Misc Other Improvements<\/h3>\n<p><strong>GPU Captures<\/strong><\/p>\n<ul>\n<li>Strip DENY_SHADER_RESOURCE from acceleration structures created via enhanced barriers to fix some capture\/replay issues<\/li>\n<li>Fix issue capture\/replaying D3D12 Tight Alignment, caused by the desc returned by ID3D12Resource::GetDesc() not being valid to pass into GetResourceAlllocationInfo()<\/li>\n<li>Fix issue capturing ClearRenderTargetView() with null pRects, causing replay-time errors<\/li>\n<li>Fix some issues with Export-to-C++ for Work Graphs<\/li>\n<li>Misc improvements to the Shader Symbols view in PIX, including bug fixes and usability improvements<\/li>\n<li>Improved the text in the &#8220;PIX was unable to create D3D12 device&#8221; error dialog to make it a bit more actionable<\/li>\n<li>Various timeline\/counter usability improvements<\/li>\n<li>Misc mesh viewer improvements<\/li>\n<li>Improved the Acceleration Structure Viewer&#8217;s default camera location<\/li>\n<li>Fixed capture\/replay Present() issues in certain media player apps using rarer present paths<\/li>\n<li>Made Gather Accessed Resources button visible on SEnC<\/li>\n<li>Fix a regression that broke pixtool&#8217;s &#8220;recapture-region&#8221; command<\/li>\n<\/ul>\n<p><strong>Misc<\/strong><\/p>\n<ul>\n<li>Worked around OS race condition in certain DXCore API that could falsely report device removal when trying to populate system information on the Connection page<\/li>\n<li>Updated to DirectX Agility SDK 618.5 and the bug fixes it contains<\/li>\n<li>Misc System Monitor usability improvements<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Today we released PIX version 2601.15, which can be downloaded here. This release includes everything in the previous 2509.25 release, plus: A new Intel plugin with many new features and improvements Many new Buffer Viewer and Buffer Formatter improvements Misc other bug fixes and improvements As usual, please get in touch with us if you [&hellip;]<\/p>\n","protected":false},"author":1899,"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-7012","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pix","tag-release"],"acf":[],"blog_post_summary":"<p>Today we released PIX version 2601.15, which can be downloaded here. This release includes everything in the previous 2509.25 release, plus: A new Intel plugin with many new features and improvements Many new Buffer Viewer and Buffer Formatter improvements Misc other bug fixes and improvements As usual, please get in touch with us if you [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts\/7012","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\/1899"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/comments?post=7012"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/posts\/7012\/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=7012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/categories?post=7012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/pix\/wp-json\/wp\/v2\/tags?post=7012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}