{"id":9522,"date":"2024-05-16T09:36:11","date_gmt":"2024-05-16T16:36:11","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/directx\/?p=9522"},"modified":"2024-05-16T14:01:39","modified_gmt":"2024-05-16T21:01:39","slug":"agility-sdk-1-614-0","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/directx\/agility-sdk-1-614-0\/","title":{"rendered":"Agility SDK 1.614.0: R9B9G9E5 support for Render Targets and UAVs"},"content":{"rendered":"<p>Today the DirectX team is excited to announce the release of the Agility SDK 1.614.0 which includes full support for R9G9B9E5_SHAREDEXP (999E5) texture format for render targets and UAV read\/writes! This new Agility SDK is also fully supported by PIX.<\/p>\n<p>To get the latest release head on over to our <a href=\"https:\/\/devblogs.microsoft.com\/directx\/directx12agility\/\">Agility SDK downloads page<\/a>.<\/p>\n<h3>Understanding the 999E5 Texture Format<\/h3>\n<p>999E5 was <a href=\"https:\/\/microsoft.github.io\/DirectX-Specs\/d3d\/archive\/D3D11_3_FunctionalSpec.htm#19.3.2%20RGBE%20Floating%20Point%20Format:%20DXGI_FORMAT_R9G9B9E5_SHAREDEXP\">originally introduced in Direct3D 11<\/a> and Direct3D 12 in a limited capacity. Its Direct3D 12 support has now been extended to support render targets and UAVs.\u00a0 A key benefit of the 999E5 texture format is it enables efficient storage and rendering of certain types of content in real-time computer graphics applications, such as video games and simulations. It is part of a family of texture formats that balance between storage space and rendering performance, crucial for delivering immersive visual experiences while keeping resource usage in check.<\/p>\n<p>As for how the format works, 999E5 format represents color values using a shared exponent among the RGB components (Red, Green, Blue). It provides some of the benefits of floating-point representation while using fewer bits than traditional formats (e.g., FP32 or FP16). Despite its space efficiency, the 999E5 format retains a higher dynamic range compared to half-precision formats.<\/p>\n<h3>Advantages of 999E5 Texture Format<\/h3>\n<ol>\n<li><strong>Storage Efficiency<\/strong>: One of the primary benefits of the 999E5 format is its efficiency of storage. For example, traditional floating-point format FP 16 consumes 64 bits per pixel, while 999E5 consumes 32 bits per pixel.<\/li>\n<li><strong>Visual Fidelity<\/strong>: Despite its compression, the 999E5 format retains a higher dynamic range than FP 16. The tradeoff is the lack of a sign bit and an alpha channel.<\/li>\n<\/ol>\n<p>To use 999E5, applications need to create their render target and unordered access views of resources in the appropriate format. This would be the same way applications use DXGI_FORMAT_R32G32B32A32_UINT, or any other format that does not require casting to use.<\/p>\n<p>Because of the hardware support ecosystem, it is recommended to always check if a driver\/hardware combination supports 999E5. The code below is how an application can query the runtime to check for the upgraded support.<\/p>\n<pre><code class=\"language-cpp\">D3D12_FEATURE_DATA_FORMAT_SUPPORT formatSupport{};\r\nformatSupport.Format = DXGI_FORMAT_R9G9B9E5_SHAREDEXP;\r\n\r\nm_device-&gt;CheckFeatureSupport(\r\n    D3D12_FEATURE_FORMAT_SUPPORT, \r\n    &amp;formatSupport, \r\n    sizeof(D3D12_FEATURE_DATA_FORMAT_SUPPORT));\r\n\r\nif (formatSupport.Support1 &amp; D3D12_FORMAT_SUPPORT1_RENDER_TARGET)\r\n{\r\n\u00a0\u00a0\u00a0 \/\/ Since it is all-or-nothing, supporting render target \r\n    \/\/ means support updated 999E5 revision\r\n\u00a0\u00a0\u00a0 printf(\"Format supports rtv and uav\\n\");\r\n}<\/code><\/pre>\n<p>We are also working hard on making this format be swap chain compatible, and applications will be able to use 999E5 in their Present pipelines in the future.<\/p>\n<p>For more up-to-date technical information, please refer to the <a href=\"https:\/\/microsoft.github.io\/DirectX-Specs\/d3d\/D3D12R9G9B9E5Format.html\">D3D12 R9B9G9E5 spec<\/a>.<\/p>\n<h3>PIX Support<\/h3>\n<p>Agility SDK 1.614 has day 0 PIX support.\u00a0 To get the latest PIX that supports this SDK and to learn more about what is included in this PIX update please the latest <a href=\"https:\/\/devblogs.microsoft.com\/pix\/pix-2405-15\">PIX 2405-15 blog post<\/a>.<\/p>\n<h2>Driver Availability<\/h2>\n<ul>\n<li><strong>AMD: <\/strong>AMD has recently launched a knowledge base preview driver that supports 999E5. More details about this can be found <a href=\"https:\/\/www.amd.com\/en\/resources\/support-articles\/release-notes\/rn-rad-ms-agility-sdk-23-40-14-01.html\">here.<\/a><\/li>\n<li><strong>Intel<\/strong>: Developers interested in this feature should contact Intel Developer Relations for additional details.<\/li>\n<li><strong>NVIDIA:<\/strong>Please reach out to your NVIDIA developer relations representative for details.<\/li>\n<li><strong>Qualcomm: <\/strong>Future support is planned<\/li>\n<li><strong>WARP: <\/strong>999E5 RTT and UAV is supported in <a href=\"https:\/\/www.nuget.org\/packages\/Microsoft.Direct3D.WARP\">WARP<\/a> 1.0.11 and higher<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Today the DirectX team is excited to announce the release of the Agility SDK 1.614.0 which includes full support for R9G9B9E5_SHAREDEXP (999E5) texture format for render targets and UAV read\/writes! This new Agility SDK is also fully supported by PIX. To get the latest release head on over to our Agility SDK downloads page. Understanding [&hellip;]<\/p>\n","protected":false},"author":115916,"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-9522","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-directx"],"acf":[],"blog_post_summary":"<p>Today the DirectX team is excited to announce the release of the Agility SDK 1.614.0 which includes full support for R9G9B9E5_SHAREDEXP (999E5) texture format for render targets and UAV read\/writes! This new Agility SDK is also fully supported by PIX. To get the latest release head on over to our Agility SDK downloads page. Understanding [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/directx\/wp-json\/wp\/v2\/posts\/9522","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\/115916"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/directx\/wp-json\/wp\/v2\/comments?post=9522"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/directx\/wp-json\/wp\/v2\/posts\/9522\/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=9522"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/directx\/wp-json\/wp\/v2\/categories?post=9522"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/directx\/wp-json\/wp\/v2\/tags?post=9522"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}