<?xml version="1.0"?>
<oembed><version>1.0</version><provider_name>DirectX Developer Blog</provider_name><provider_url>https://devblogs.microsoft.com/directx</provider_url><author_name>Zichuan Gong</author_name><author_url>https://devblogs.microsoft.com/directx/author/alexgong/</author_url><title>D3D12 Debug Layer Message Callback - DirectX Developer Blog</title><type>rich</type><width>600</width><height>338</height><html>&lt;blockquote class="wp-embedded-content" data-secret="jc35D3TaKZ"&gt;&lt;a href="https://devblogs.microsoft.com/directx/d3d12-debug-layer-message-callback/"&gt;D3D12 Debug Layer Message Callback&lt;/a&gt;&lt;/blockquote&gt;&lt;iframe sandbox="allow-scripts" security="restricted" src="https://devblogs.microsoft.com/directx/d3d12-debug-layer-message-callback/embed/#?secret=jc35D3TaKZ" width="600" height="338" title="&#x201C;D3D12 Debug Layer Message Callback&#x201D; &#x2014; DirectX Developer Blog" data-secret="jc35D3TaKZ" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" class="wp-embedded-content"&gt;&lt;/iframe&gt;&lt;script type="text/javascript"&gt;
/* &lt;![CDATA[ */
/*! This file is auto-generated */
!function(d,l){"use strict";l.querySelector&amp;&amp;d.addEventListener&amp;&amp;"undefined"!=typeof URL&amp;&amp;(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&amp;&amp;!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret="'+t.secret+'"]'),o=l.querySelectorAll('blockquote[data-secret="'+t.secret+'"]'),c=new RegExp("^https?:$","i"),i=0;i&lt;o.length;i++)o[i].style.display="none";for(i=0;i&lt;a.length;i++)s=a[i],e.source===s.contentWindow&amp;&amp;(s.removeAttribute("style"),"height"===t.message?(1e3&lt;(r=parseInt(t.value,10))?r=1e3:~~r&lt;200&amp;&amp;(r=200),s.height=r):"link"===t.message&amp;&amp;(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&amp;&amp;n.host===r.host&amp;&amp;l.activeElement===s&amp;&amp;(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r&lt;s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document);
//# sourceURL=https://devblogs.microsoft.com/directx/wp-includes/js/wp-embed.min.js
/* ]]&gt; */
&lt;/script&gt;
</html><thumbnail_url>https://devblogs.microsoft.com/directx/wp-content/uploads/sites/42/2020/03/ultimate.png</thumbnail_url><thumbnail_width>487</thumbnail_width><thumbnail_height>484</thumbnail_height><description>Finally, D3D12 messages that you can easily integrate with your own application logs! The D3D12 InfoQueue Message Callback feature allows developers to capture debug messages, with stack context, providing yet another essential debugging tool for error analysis. To date, D3D12 has had ID3D12InfoQueue API. However, developers always wants there to be message callback feature, which [&hellip;]</description></oembed>
