Microsoft zwiększa wydajność dzięki nowemu DirectStorage 1.2 nawet na wolniejszych dyskach twardych
Microsoft udostępnił najnowszą wersję swojego DirectStorage API. Nowa wersja, 1.2, przynosi kilka nowych funkcji, a także poprawki błędów. Wprowadzono również wzrost wydajności dzięki wprowadzonym zmianom.
Wraz z DirectStorage 1.2 firma Microsoft wprowadza tryb buforowanego wejścia/wyjścia. Firma twierdzi, że jest odpowiedzią na to, że programiści chcą używać tej samej ścieżki kodu, zarówno na dyskach półprzewodnikowych (SSD), jak i dyskach twardych (HDD). Dyski twarde działają w trybie buforowanego wejścia/wyjścia, ponieważ mają znacznie dłuższy czas wyszukiwania. Firma pisze:
DirectStorage obecnie otwiera pliki w trybie niebuforowanym. Pozwala nam to uniknąć niepotrzebnych kopii, przenosząc dane na GPU tak szybko, jak to możliwe. Słyszeliśmy jednak od niektórych programistów, że chcieliby mieć możliwość używania tego samego kodu zarówno na szybkich dyskach SSD, jak i starszych dyskach twardych. Starsze dyski twarde wymagają buforowanych operacji we/wy w celu zamaskowania długich czasów wyszukiwania. Z tego powodu dodaliśmy możliwość skonfigurowania DirectStorage do otwierania plików w trybie buforowanym.
Oprócz buforowanego IO, wprowadzono nowy interfejs API GetCompressionSupport , który dodaje możliwość zapytania o używaną ścieżkę dekompresji, niezależnie od tego, czy jest to ścieżka GPU, czy rezerwowa ścieżka procesora. Pełny dziennik zmian dla DirectStorage 1.2 znajduje się poniżej:
Nowe funkcje
- Dodaj obsługę włączania buforowanych plików we/wy do użytku na dyskach twardych, które mogą korzystać z zachowania pamięci podręcznej plików systemu operacyjnego.
- Dodaj interfejs API IDStorageQueue2::GetCompressionSupport , aby wskazać, jaką ścieżkę wybierze środowisko uruchomieniowe DirectStorage podczas dekompresji obsługiwanego formatu dekompresji GPU.
- Zaktualizuj pliki dstorage.h i dstorageerr.h, aby były objęte licencją MIT.
- Dodaj Microsoft.Direct3D.DirectStorage.winmd , aby ułatwić generowanie powiązań innych niż C++ z interfejsem API.
Poprawki błędów
- Dodaj pole „Reserved1″ do DSTORAGE_REQUEST_OPTIONS. To sprawia, że układ struktury w pamięci jest bardziej wyraźny, ale w rzeczywistości nie zmienia układu z poprzednich wersji.
- Napraw DSTORAGE_REQUEST_DESTINATION_TEXTURE_REGION dla tekstur 3D.
- Napraw problem z harmonogramem, który pojawiał się podczas przesyłania nieskompresowanych danych z pamięci do buforów
Ulepszenia w wydajności
- Przenieś kopię po dekompresji GPU do kolejki obliczeniowej dla GPU, gdzie jest to szybsze.
Więcej informacji można znaleźć w oficjalnym poście na blogu tutaj .
Dodaj komentarz