{"id":2410,"date":"2019-08-30T15:53:56","date_gmt":"2019-08-30T22:53:56","guid":{"rendered":"http:\/\/devblogs.microsoft.com\/directx\/?p=2410"},"modified":"2019-08-30T15:53:56","modified_gmt":"2019-08-30T22:53:56","slug":"d3dconfig-a-new-tool-to-manage-directx-control-panel-settings","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/directx\/d3dconfig-a-new-tool-to-manage-directx-control-panel-settings\/","title":{"rendered":"D3DConfig: A new tool to manage DirectX Control Panel settings"},"content":{"rendered":"<p>The DirectX Control Panel (DXCpl.exe) has dutifully given developers the ability to configure Direct3D debug settings for nearly two decades.\u00a0 But what started as a simple utility for controlling D3D debug output and driver type selection has struggled to keep up with modern DX12 debugging options.\u00a0 In addition, the UI-based DXCpl doesn\u2019t integrate into automation scripts, nor is it useful on scaled-down Windows platforms that do not support Win32-based user interfaces.<\/p>\n<h4>What we need is a command line tool<\/h4>\n<p>Introducing D3DConfig.exe in, a console app compatible with DXCpl.\u00a0 The D3DConfig tool can display and modify the DXCpl settings from the comfort of your very own console window or batch script.\u00a0 D3DConfig.exe is part of the Graphics Tools Feature-on-Demand and is available in the \u201c20H1\u201d Windows 10 Insider Preview (currently build 18970 in fast-ring).\u00a0 If you already have Graphics Tools installed (you do if you are using D3D debug layers), then updating to 20H1 will automatically add D3DConfig to your system.\u00a0 If you have been holding off installing Graphics Tools until you could change D3D settings from the command line, then your time has come.\u00a0 Graphics Tools can be installed by using Windows 10 \u201cManage Optional Features\u201d settings, or by running the following command:<\/p>\n<pre class=\"lang:default decode:true\">&gt; DISM \/online \/add-capability \/capabilityname:tools.graphics.directx~~~~0.0.1.0<\/pre>\n<p>You can still use the DirectX Control Panel if you like.\u00a0 D3DConfig recognizes DXCpl settings.\u00a0 Similarly, the DXCpl reflects <em>most<\/em> D3DConfig settings.\u00a0 At this time we have no plans to expand the DXCpl user interface.\u00a0 This means that new settings are likely to be exposed only in the D3DConfig tool.\u00a0 For example, DRED settings are only available in D3DConfig.<\/p>\n<h4>Examples<\/h4>\n<p>Like DXCpl, only registered apps are affected by the D3DConfig settings.\u00a0 To list the currently registered apps, run:<\/p>\n<pre class=\"lang:default decode:true \">&gt; d3dconfig apps\r\n\r\napps\r\n--------------------------------\r\n\u00a0 foo.exe\r\n\u00a0 bar.exe<\/pre>\n<p>To register an app:<\/p>\n<pre class=\"lang:default decode:true\">&gt; d3dconfig apps --add MyBuggyGame.exe\r\n\r\napps\r\n--------------------------------\r\n\u00a0 MyBuggyGame.exe\r\n\u00a0 foo.exe\r\n\u00a0 bar.exe<\/pre>\n<p>Apps can also be registered using directory scope (yes, the terminating \u2018\\\u2019 character is needed):<\/p>\n<pre class=\"lang:default decode:true\">&gt; d3dconfig apps --add g:\\bin\\games\\\r\n\r\napps\r\n--------------------------------\r\n\u00a0 g:\\bin\\games\\\r\n\u00a0 MyBuggyGame.exe\r\n\u00a0 foo.exe\r\n\u00a0 bar.exe<\/pre>\n<p>One of the most common tasks done in\u00a0DXCpl is to force the debug layer on.\u00a0 The D3DConfig tool can do that too.<\/p>\n<pre class=\"lang:default decode:true \">&gt; d3dconfig debug-layer debug-layer-mode=force-on\r\n\r\ndebug-layer\r\n----------------\r\ndebug-layer-mode=force-on<\/pre>\n<p>Break-on debug messages can also be controlled using D3DConfig.\u00a0 In order to remain compatible with the DX Control Panel, this is a two-step process:<\/p>\n<pre class=\"lang:default decode:true\">&gt; d3dconfig message-break allow-debug-breaks=true\r\n\r\nmessage-break\r\n----------------\r\nallow-debug-breaks=true\r\n\r\n&gt; d3dconfig message-break --add-id-12 722\r\n\r\nmessage-break\r\n----------------\r\nBreak-On D3D11 Message Ids:\r\n  &lt;none&gt;\r\nBreak-On D3D12 Message Ids:\r\n  722: D3D12_MESSAGE_ID_CREATERESOURCE_INVALIDMIPLEVELS<\/pre>\n<p>Of course, the \u2013help option provides a full list of available options.<\/p>\n<h4>Feedback Requested<\/h4>\n<p>If you get a chance to try out D3DConfig let us know that you think.\u00a0 At the moment, D3DConfig has a very simple design.\u00a0 There certainly are some interesting bells and whistles we would like to add but customer feedback helps us prioritize our work.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The DirectX Control Panel (DXCpl.exe) has dutifully given developers the ability to configure Direct3D debug settings for nearly two decades.\u00a0 But what started as a simple utility for controlling D3D debug output and driver type selection has struggled to keep up with modern DX12 debugging options.\u00a0 In addition, the UI-based DXCpl doesn\u2019t integrate into automation [&hellip;]<\/p>\n","protected":false},"author":2473,"featured_media":12651,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2410","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-directx"],"acf":[],"blog_post_summary":"<p>The DirectX Control Panel (DXCpl.exe) has dutifully given developers the ability to configure Direct3D debug settings for nearly two decades.\u00a0 But what started as a simple utility for controlling D3D debug output and driver type selection has struggled to keep up with modern DX12 debugging options.\u00a0 In addition, the UI-based DXCpl doesn\u2019t integrate into automation [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/directx\/wp-json\/wp\/v2\/posts\/2410","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/directx\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/directx\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/directx\/wp-json\/wp\/v2\/users\/2473"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/directx\/wp-json\/wp\/v2\/comments?post=2410"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/directx\/wp-json\/wp\/v2\/posts\/2410\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/directx\/wp-json\/wp\/v2\/media\/12651"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/directx\/wp-json\/wp\/v2\/media?parent=2410"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/directx\/wp-json\/wp\/v2\/categories?post=2410"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/directx\/wp-json\/wp\/v2\/tags?post=2410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}