DirectStorage 1.4 avec compression zstd et Game Asset Conditioning Library
Le 16 mars à 08h27
2 min
Logiciel
Logiciel
DirectStorage est une fonctionnalité permettant aux GPU de discuter directement avec les périphériques de stockage de l’ordinateur, en évitant donc un passage par le processeur central. L’API vient de passer en version 1.4, avec comme principale nouveauté la prise en charge du codec zstd (ou ZStandard).
Cet algorithme est largement répandu ; nous avions d’ailleurs passé au crible ses performances en les comparant avec celles de plus d’une dizaine d’autres codecs. Microsoft a mis en ligne du code sur GitHub pour son utilisation avec les GPU.
Pour Microsoft, zstd a plusieurs avantages dans ce cas d’usage : il « se distingue par ses taux de compression et ses performances de décompression, sa large disponibilité sur le matériel et les logiciels à travers les systèmes d’exploitation, et son adoption généralisée dans les systèmes d’exploitation, le cloud et le web ».
L’entreprise annonce dans le même temps sa Game Asset Conditioning Library (GACL), elle aussi sur GitHub. Elle propose « plusieurs composants pour améliorer la compression des assets du jeu ». Les textures sont la priorité de cette bêta car elles représentent la plus grosse taille des packages dans la plupart des jeux, explique Microsoft.
GACL « prépare » le contenu qui va être envoyé à zstd pour que les algorithmes de compression soient les plus efficaces possible. La Game Asset Conditioning Library « est conçue pour fonctionner avec le contenu existant, offrant jusqu’à 50 % d’amélioration des taux de compression Zstd pour vos assets, tout en maintenant un coût de décompression à l’exécution bas lorsqu’il est utilisé avec DirectStorage », affirme l’éditeur. Tous les détails se trouvent par ici.
Le 16 mars à 08h27
Commentaires (17)
Abonnez-vous pour prendre part au débat
Déjà abonné ou lecteur ? Se connecter
Cet article est en accès libre, mais il est le produit d'une rédaction qui ne travaille que pour ses lecteurs, sur un média sans pub et sans tracker. Soutenez le journalisme tech de qualité en vous abonnant.
Accédez en illimité aux articles d'un média expert
Profitez d'au moins 1 To de stockage pour vos sauvegardes
Intégrez la communauté et prenez part aux débats
Partagez des articles premium à vos contacts
Abonnez-vousLe 16 mars à 08h46
Y a déjà des jeux qui font du DirectStorage sur PC ? Ca veut dire également que le GPU est capable de comprendre le filesystem (extX, ntfs, exFat, ...)? quid d'un stockage chiffrée (luks, bitlocker, ...)?
Ou alors on dédie une partition sur son NVMe, en écriture via un driver coté OS, et nativement lisible coté GPU?
Le 16 mars à 09h43
Le 16 mars à 11h50
Avec un algo de compression qui permet de paralléliser la décompression et des assets compréssé de tel sorte que le GPU les décompresse efficacement, on pourrait avoir un truc bien performant au final.
Le 16 mars à 12h18
Le 16 mars à 13h44
&
Tu désignes un fichier, un buffer, et tu dis à l'OS de préparer une ou plusieurs opérations, puis tu l'éxécutes en asynchrone.
Cela implique:
Cela permet:
Mais c'est du "Direct*": savoir si c'est réalisé dans les meilleures conditions ou si c'est "émulé" ou "en fallback" n'est pas dit.
Le 16 mars à 09h42
Comme un GPU n'est pas vraiment prévu pour être efficace sur ce genre d'opération, les résultats sont en général mauvais. Quelqu'un peut citer un seul jeu où DirectStorage apporte quelque chose ?
Le 16 mars à 09h54
En revanche, ici tu as une liste des jeux dispo sur Steam qui utilisent ce sdk : https://steamdb.info/tech/SDK/DirectStorage/
Y'a pas mal de beaux noms dans la liste, les résultats doivent pas être si mauvais que ça.
Modifié le 16 mars à 10h16
Mais cela ne donne que la liste des jeux qui utilisent l'API DirectStorage. Ca ne permet pas de comparer un même jeu avec/sans pour mesurer un éventuel gain de temps de chargement...
Edit: A priori, 3DMArk permet de comparer avec et sans : Image
Edit 2 : Je vois à plusieurs reprises, qu'il suffirait -à priori- de supprimer les 2 DLL dstoragecore.dll et dstorage.dll du répertoire d'un jeu puis de le relancer pour désactiver. Si la manip est faite sur un SSD nvme PCIE4, ça doit être une façon intéressante de faire son propre benchmark.
Le 16 mars à 13h39
Notamment, si c'est l'OS qui lit un fichier en mémoire, c'est l'OS qui "détient" la mémoire. Avec tous les context switch qui vont avec lors des accès par différents processus (le pilote NVMe, le pilote graphique, l'OS, le jeu)
Le NVMe peut écrire en mémoire sans le CPU (ou presque), et la CG peut lire depuis la RAM sans le CPU. LE CPU coordonne ces échanges. J'imagine (oui, j'imagine) que DirectStorage active dans un cas favorable des buffers réservés HORS gestion mémoire de l'OS.
La techno existe sur PS5, d'après ce que j'avais lu Ratchet & Klank était basé sur la techno et cela rendait les transitions et chargements inutiles. Mais bon: je n'ai pas testé et blabla commercial de Sony...
Le 16 mars à 14h42
Le 16 mars à 20h54
En fait en pcie, techniquement je ne vois pas ce qui empêche le nvme d'envoyer directement vers la cg ou la cg de lire depuis un buffer du disque.
Le 17 mars à 09h00
La GPU a donc au accès au pipe pour recevoir le fichier (peut-être plus sous forme de fichier mais de stream compressé) ?
Si c'est le cas, le principe serait alors de ne pas solliciter la CPU pour la décompression mais pour la conversion du fichier vers vers le pipe GPU.
Si je ne dis pas de bêtises, ce serait donc un gain p-e pas si intéressant que ça non?
Le 16 mars à 13h49
Et des formats comme LZ (donc ZStd) sont simples à décompresser - ce sont des formats "linéaires" qu'on décompresse avec peu de retour arrière et une logique assez simple. Le genre adapté à de l'embarqué.
Le 16 mars à 14h47
https://d29g4g2dyqv443.cloudfront.net/sites/default/files/3.0nvCOMPResults.PNG
Le 16 mars à 20h52
Le choix est surtout lié au goulet d'étranglement. Si c'est le stockage qui rame, ça peut être intéressant de gagner sur le transfert.
Et j'aime ton exemple qui rappelle, au vu des cartes testées, qu'une techno de ce type n'est peut-être pas destinée avant tout au gamer isolé dans son coin, mais aux datacenters.
Car en montant des datacenters IA, on monte des datacenters aussi capables de gaming.
La bataille n'est plus de mon point de vue sur l'ordinateur personnel, mais bien sûr la construction de structures qui vont centraliser les traitements -et les sécuriser.
Car l'ordi personnel est une verrue dans le paysage de distribution contrôlée des médias, qui doit se sécuriser pour perdurer dans le temps.
Bref, 'e pas voir ces technos uniquement du poi t de vue de gaming perso. Il faut imaginer ce que ça apporte en datacenter.
Modifié le 16 mars à 10h06
L'idée c'était de mimer le comportement de CompactGUI de façon transparente pour tous types de jeux sous Linux, mais sans devoir se soucier de la compatibilité avec un système de fichiers en particuliers, ça fonctionnerait aussi bien en local que distant, tout en limitant grandement les problématiques de latence sur le réseau.
Pour le moment je me concentre sur Libretro (le port rust est terminé mais je dois achever le gui et l'API) et de standardisation, mais j'aimerais potasser sur le support de Proton pour les jeux PC, ensuite.
Le programme en question sera agnostique, pas spécifiquement lié à un core libretro ou un jeu en particulier, et, évidemment, livré nu. Il est pensé pour tourner sur SteamDeck avec SteamOs et les futures SteamMachines, PS4/PS5 sous Linux, et PC sous Linux.
Le 16 mars à 11h01
Test sur la 1.2 sur 2 jeux, conclusion : il est urgent d'attendre
Signaler un commentaire
Voulez-vous vraiment signaler ce commentaire ?