Microsoft steigert mit DirectStorage 1.2 die Leistung auch bei langsameren Festplatten

Microsoft hat die neueste Version seiner DirectStorage-API veröffentlicht. Die neue Version 1.2 bringt einige neue Funktionen sowie Bugfixes. Dank einiger Änderungen ist auch eine Leistungssteigerung zu erwarten.

Mit DirectStorage 1.2 führt Microsoft den gepufferten IO-Modus ein. Damit reagiert das Unternehmen auf den Wunsch von Entwicklern, den gleichen Code-Path sowohl auf Solid-State-Laufwerken (SSDs) als auch auf Festplattenlaufwerken (HDDs) zu verwenden. HDDs arbeiten im gepufferten IO-Modus, da sie viel längere Suchzeiten haben. Das Unternehmen schreibt:

DirectStorage öffnet Dateien derzeit im ungepufferten Modus. Dies ermöglicht es uns, unnötige Kopien zu vermeiden und die Daten so schnell wie möglich auf die GPU zu übertragen. Wir haben jedoch von einigen Entwicklern gehört, dass sie gerne denselben Code sowohl auf Hochgeschwindigkeits-SSDs als auch auf älteren Festplatten verwenden würden. Ältere Festplatten benötigen gepufferte IO, um die langen Suchzeiten zu überbrücken. Aus diesem Grund haben wir die Möglichkeit hinzugefügt, DirectStorage so zu konfigurieren, dass Dateien im gepufferten Modus geöffnet werden.

Neben der gepufferten IO wurde eine neue GetCompressionSupport-API eingeführt, mit der der verwendete Dekomprimierungspfad abgefragt werden kann, unabhängig davon, ob es sich um den GPU- oder den Fallback-CPU-Pfad handelt. Das vollständige Changelog für DirectStorage 1.2 finden Sie unten:

Neue funktionen:

  • Unterstützung für die Aktivierung von gepuffertem Datei-IO für den Einsatz auf Festplatten, die vom Caching-Verhalten des Betriebssystems profitieren können.
  • Aktualisierung des dstorage.h und dstorageerr.h, um von der MIT-Lizenz abgedeckt zu werden.
  • IDStorageQueue2::GetCompressionSupport API, zur Angabe des Pfads, den die DirectStorage-Laufzeitumgebung bei der Dekomprimierung eines unterstützten GPU-Dekomprimierungsformats verwenden soll.
  • Microsoft.Direct3D.DirectStorage.winmd, um die Generierung von nicht-C++ Bindings für die API zu vereinfachen.

Bugfixes:

  • Korrektur von DSTORAGE_REQUEST_DESTINATION_TEXTURE_REGION für 3D-Texturen.
  • Das Feld "Reserved1" wurde zu DSTORAGE_REQUEST_OPTIONS hinzugefügt. Dies macht das In-Memory-Layout der Struktur übersichtlicher, führt aber zu keiner wirklichen Änderung des Layouts der früheren Versionen.
  • Es wurde ein Problem bei der Übertragung von unkomprimierten Daten aus dem Speicher in Puffer behoben.

Verbesserungen der Leistung:

  • Verschiebung der Kopie nach der GPU-Dekomprimierung in die Berechnungswarteschlange für GPUs, da sie dort schneller ist.

Weitere Details finden Sie im offiziellen Blog-Post hier.