Microsoft повышает производительность с новым DirectStorage 1.2 даже на более медленных жестких дисках
Новости Microsoft: компания выпустила последнюю версию своего DirectStorage API. Новая версия 1.2 содержит некоторые новые функции, а также исправления ошибок. В магазине также есть повышение производительности благодаря внесенным изменениям.
В DirectStorage 1.2 Microsoft представляет режим буферизованного ввода-вывода. Компания заявляет, что это ответ на желание разработчиков использовать один и тот же путь кода как на твердотельных накопителях (SSD), так и на жестких дисках (HDD). Жесткие диски работают в режиме буферизованного ввода-вывода, поскольку у них гораздо больше времени поиска. Компания пишет:
В настоящее время DirectStorage открывает файлы в небуферизованном режиме. Это позволяет нам избежать ненужных копий, максимально быстро передавая данные на GPU. Однако мы слышали от некоторых разработчиков, что они хотели бы иметь возможность использовать один и тот же код как на высокоскоростных твердотельных накопителях, так и на устаревших жестких дисках. Устаревшие жесткие диски требуют буферизованного ввода-вывода, чтобы скрыть длительное время поиска. По этой причине мы добавили возможность настроить DirectStorage для открытия файлов в буферизованном режиме.
Помимо буферизованного ввода-вывода, новый GetCompressionSupport Был введен API, который добавляет возможность запрашивать используемый путь распаковки, будь то путь GPU или резервный путь ЦП. Полный список изменений для DirectStorage 1.2 приведен ниже:
Новые возможности
- Добавлена поддержка включения буферизованного файлового ввода-вывода для использования на жестких дисках, которые могут выиграть от поведения кэширования файлов ОС.
- Добавить IDStorageQueue2::GetCompressionSupport API, чтобы указать, какой путь будет использовать среда выполнения DirectStorage при распаковке поддерживаемого формата распаковки GPU.
- Обновите dstorage.h и dstorageerr.h, чтобы на них распространялась лицензия MIT.
- Добавлять Microsoft.Direct3D.DirectStorage.winmdчтобы упростить создание привязок к API, отличных от C++.
Исправление ошибок
- Добавьте поле «Reserved1» в DSTORAGE_REQUEST_OPTIONS. Это делает макет структуры в памяти более явным, но фактически не меняет макет по сравнению с предыдущими версиями.
- Исправление DSTORAGE_REQUEST_DESTINATION_TEXTURE_REGION для 3D-текстур.
- Исправлена проблема с планированием, которая проявлялась при передаче несжатых данных из памяти в буферы.
Улучшения производительности
- Переместите копию после декомпрессии графического процессора в очередь вычислений для графических процессоров, где это происходит быстрее.