微软已经发布了其DirectStorage API的最新版本v1.2,带来了一些新的功能以及错误修复。由于做出了一些改变,性能也得到了提升。
通过DirectStorage v1.2,微软带来了缓冲的IO模式。该公司表示,这是对开发者希望在固态硬盘(SSD)和硬盘(HDD)上使用相同代码路径的回应。硬盘在缓冲IO模式下运行,因为它们有更长的寻道时间。该公司写道:
DirectStorage目前以非缓冲模式打开文件。这使我们能够避免不必要的复制,尽可能快地将数据送到GPU上。然而,我们从一些开发者那里听说,他们希望能够在高速SSD和传统硬盘上使用相同的代码。传统硬盘需要缓冲的IO,以掩盖长的寻道时间。出于这个原因,我们增加了配置DirectStorage的能力,以便在缓冲模式下打开文件。
除了缓冲IO之外,还引入了一个新的GetCompressionSupport API,它增加了查询所使用的解压路径的能力,无论是GPU还是后备的CPU路径。DirectStorage 1.2的完整变化记录如下:
新功能
- 增加对启用缓冲文件IO的支持,以便在可能受益于操作系统文件缓存行为的硬盘上使用。
- 增加IDStorageQueue2::GetCompressionSupport API,以指示DirectStorage运行时在解压支持的GPU解压格式时将采取什么路径。
- 更新dstorage.h和dstorageerr.h,使其受到MIT许可的保护。
- 添加Microsoft.Direct3D.DirectStorage.winmd,以方便生成与API的非C++绑定。
错误修正
- 在DSTORAGE_REQUEST_OPTIONS中增加 "Reserved1 "字段。这使得该结构的内存布局更加明确,但实际上并没有改变之前版本的布局。
- 修复3D纹理的DSTORAGE_REQUEST_DESTINATION_TEXTURE_REGION。
- 修复从内存向缓冲区传输未压缩数据时表现出的调度问题
性能改进
- 将GPU解压后的拷贝移到计算队列中,这对GPU来说更快。
来源:微软