{"id":7803,"date":"2023-04-18T14:03:58","date_gmt":"2023-04-18T21:03:58","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/directx\/?p=7803"},"modified":"2023-04-18T14:03:58","modified_gmt":"2023-04-18T21:03:58","slug":"directstorage-1-2-available-now","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/directx\/directstorage-1-2-available-now\/","title":{"rendered":"DirectStorage 1.2 Available Now"},"content":{"rendered":"<p><span data-contrast=\"none\">Today we\u2019re releasing the 1.2 version of the <\/span><a href=\"http:\/\/aka.ms\/directstorage\"><span data-contrast=\"none\">DirectStorage SDK,<\/span><\/a><span data-contrast=\"none\">\u202fwhere we\u2019ve added new features and made some fixes based on your feedback. <\/span><span data-contrast=\"none\">The full list of changes can be found on the <\/span><a href=\"https:\/\/www.nuget.org\/packages\/Microsoft.Direct3D.DirectStorage\"><span data-contrast=\"none\">NuGet<\/span><\/a><span data-contrast=\"none\"> page and you <\/span><span data-contrast=\"none\">can update to the latest version using NuGet update.\u202f <\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"none\">Visit\u202fthe <a href=\"https:\/\/aka.ms\/directstorage\">DirectStorage landing page <\/a><\/span><span data-contrast=\"none\">for more information about how to get started.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><span data-contrast=\"none\">If you have any questions or feedback, please reach out to us on the #directstorage channel on the\u202f<\/span><a href=\"https:\/\/discord.gg\/directx\"><span data-contrast=\"none\">D3D12 Discord Server<\/span><\/a><span data-contrast=\"none\">.\u00a0<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<h5 aria-level=\"2\"><span data-contrast=\"none\">Force Buffered IO<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h5>\n<p style=\"padding-left: 40px;\"><span data-contrast=\"none\">DirectStorage currently opens files in unbuffered mode. This allows us to avoid unnecessary copies, getting the data onto the GPU as quickly as possible.\u00a0 However, we heard from some developers that they\u2019d like to be able to use the same code both on high-speed SSDs as well as legacy hard drives. The legacy hard drives require buffered IO in order to mask the long seek times. For this reason, we added the ability to configure DirectStorage to open files in buffered mode.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559738&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span data-contrast=\"none\">This can be enabled by setting the \u201cForceFileBuffering\u201d field in DSTORAGE_CONFIGURATION1 to TRUE. Note that buffered IO is incompatible with BypassIO, and therefore DisableBypassIO must be set to TRUE when using this option.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:0,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span data-contrast=\"none\">It is the title&#8217;s responsibility to know when to use this setting. This feature should only be enabled for slower HDD drives that will benefit from the OS file buffering features.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559738&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p aria-level=\"2\"><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h5 aria-level=\"2\"><span data-contrast=\"none\">New GetCompressionSupport API<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h5>\n<p style=\"padding-left: 40px;\"><span data-contrast=\"none\">DirectStorage currently chooses the decompression path for built-in compression formats based on the supported capabilities of the GPU. There are scenarios where a CPU based fallback path is chosen. We heard from developers that it would be beneficial to understand which decompression path is being used so that default texture resolution settings may be set based on this. To enable this, we added a new API for querying what path the runtime has chosen.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559738&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span data-contrast=\"none\">IDStorageQueue2::GetCompressionSupport() returns a value indicating whether a GPU optimized implementation, GPU fallback for CPU fallback is used for decompression, as well as what types of queues DirectStorage will use for decompression.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559738&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559738&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<h5 aria-level=\"2\"><span data-contrast=\"none\">Bug Fixes<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h5>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"4\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559682&quot;:4,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"none\">Resolved <\/span><a href=\"https:\/\/github.com\/microsoft\/DirectStorage\/issues\/22\"><span data-contrast=\"none\">https:\/\/github.com\/microsoft\/DirectStorage\/issues\/22<\/span><\/a><span data-contrast=\"auto\"> by adding a <\/span><span data-contrast=\"none\">&#8220;Reserved1&#8221; field to DSTORAGE_REQUEST_OPTIONS. \u00a0This makes the in-memory layout of the structure more explicit but doesn&#8217;t actually change the layout from previous versions.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"4\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559682&quot;:4,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"none\">Fixed DSTORAGE_REQUEST_DESTINATION_TEXTURE_REGION for 3D textures, as reported to us on the <\/span><a href=\"https:\/\/discord.gg\/directx\"><span data-contrast=\"none\">DirectX Discord channel<\/span><\/a><span data-contrast=\"none\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"4\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559682&quot;:4,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"none\">Fixed scheduling issue that manifested when transferring uncompressed data from memory to buffers<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<\/ul>\n<h5 aria-level=\"2\"><span data-contrast=\"none\">Performance improvements<\/span><span data-ccp-props=\"{&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;201341983&quot;:0,&quot;335559738&quot;:40,&quot;335559739&quot;:0,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h5>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"4\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559682&quot;:4,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"4\" data-aria-level=\"1\"><span data-contrast=\"none\">Moved the copy after GPU decompression onto the compute queue for GPUs on which this is faster.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<\/ul>\n<p><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:true,&quot;201341983&quot;:0,&quot;335559685&quot;:0,&quot;335559738&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today we\u2019re releasing the 1.2 version of the DirectStorage SDK,\u202fwhere we\u2019ve added new features and made some fixes based on your feedback. The full list of changes can be found on the NuGet page and you can update to the latest version using NuGet update.\u202f \u00a0 Visit\u202fthe DirectStorage landing page for more information about how [&hellip;]<\/p>\n","protected":false},"author":1747,"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-7803","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-directx"],"acf":[],"blog_post_summary":"<p>Today we\u2019re releasing the 1.2 version of the DirectStorage SDK,\u202fwhere we\u2019ve added new features and made some fixes based on your feedback. The full list of changes can be found on the NuGet page and you can update to the latest version using NuGet update.\u202f \u00a0 Visit\u202fthe DirectStorage landing page for more information about how [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/directx\/wp-json\/wp\/v2\/posts\/7803","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\/1747"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/directx\/wp-json\/wp\/v2\/comments?post=7803"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/directx\/wp-json\/wp\/v2\/posts\/7803\/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=7803"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/directx\/wp-json\/wp\/v2\/categories?post=7803"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/directx\/wp-json\/wp\/v2\/tags?post=7803"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}