Microsoft a modifié ses spécifications de matrice D3D12 deux fois en 12 jours, puis a pris deux correctifs d’un étranger

L’article ne peut pas être activé avec JavaScript. Vous pouvez également activer JavaScript dans votre navigateur et sur la nouvelle page.

Le projet de spécification pour les mathématiques matricielles dans Direct3D 12 a changé de forme le 6 octobre, 12 jours après la précédente réécriture du même document, et il s’agit toujours d’un brouillon. Microsoft a ensuite fusionné deux correctifs dans ses en-têtes DirectX publics le 9 octobre à 23h08 UTC, tous deux écrits par le même contributeur extérieur à l’entreprise.

La spécification est D3D12LinearAlgebraRuntimeFeatureSupport, le document qui explique comment un jeu demande à un pilote quelles opérations matricielles le matériel peut effectuer, et il lit désormais « Version 0.10 (Brouillon) ». Cette version est arrivée avec la pull request 257, ouverte le 2 octobre et fusionnée à 20h42 UTC le 6 octobre par Jesse Natalie de Microsoft. Sa propre ligne de journal des modifications est le résumé : « La construction de la matrice prend une forme M×N plus Use, Scope et ThreadGroupSize. Les constructions prises en charge sont les matrices A, B et les matrices d’accumulateurs des tables de multiplication wave-scope et threadgroup-scope. » Le document a été lu à 21h46 UTC le 10 octobre.

Une requête qui pose désormais trois questions supplémentaires

Là où une requête de construction décrivait une matrice par ses dimensions, elle porte désormais le rôle de la matrice, la portée dans laquelle elle est construite et la taille du groupe de threads qui la construit. Le rôle est A, B ou accumulateur, et la spécification prévient que la réponse en dépend : « La disposition du registre dépend de ce rôle, de sorte que le même type de composant et les mêmes dimensions peuvent être pris en charge pour une utilisation et non pris en charge pour une autre. »

Scope a trois valeurs et la requête en couvre deux. « D3D12_LINEAR_ALGEBRA_MATRIX_SCOPE_THREAD est présent donc les valeurs correspondent à HLSL ; une requête de construction avec cette portée renvoie Supported = FALSE », indique la spécification, car « les dimensions de matrice vectorielle à portée de thread ne font pas partie de cette requête ». Le troisième champ, ThreadGroupSize, « est le nombre de threads dans le groupe construisant la matrice » et doit être nul à la portée de la vague. Lorsqu’un pilote prend en charge une plage, il signale une plage inclusive de tailles de groupe minimales et maximales, et « les pilotes dont la prise en charge n’est pas contiguë en termes de taille de groupe de threads émettent une entrée distincte par plage contiguë ».

Le changement précédent avait eu lieu 12 jours plus tôt. La demande d’extraction 256 a été fusionnée à 15 h 46 UTC le 24 septembre et a réécrit la table de matrice vectorielle de niveau 1, associant différemment les formats d’entrée et de sortie et divisant une colonne « native » en entrées et sorties natives. Il s’agit de la plomberie du rendu neuronal et de la mise à l’échelle dans les jeux Direct3D, et elle est toujours en mouvement.

Les deux correctifs d’en-tête provenaient du même étranger

Les en-têtes d’expédition ont également bougé. Le 9 octobre à 23h08 UTC, Jesse Natalie a fusionné la demande d’extraction 279, « D3DX12GetCopyableFootprints : rejeter l’index de sous-ressource égal au nombre de sous-ressources », et la demande d’extraction 280, « d3d12 : déclarer D3D12_RT_FORMAT_ARRAY avec un typedef », dans DirectX-Headers. Les deux provenaient d’un contributeur extérieur, Joel Kiptoo, travaillant dans son propre fork, et les deux étaient ouverts depuis les 29 et 30 septembre. La dernière version actualisée de ces en-têtes par Microsoft lui-même, « Mise à jour des en-têtes pour 1.619.5 », a atterri le 31 juillet.

Aucune des deux solutions n’est dramatique : l’une rejette un index de sous-ressource hors de portée que l’assistant avait précédemment accepté, et l’autre modifie la façon dont une structure de tableau de format est déclarée. Les deux pages de demande d’extraction ont été lues à 21h47 UTC le 10 octobre.

La version 0.10 est une spécification plutôt qu’une API d’expédition, et le document porte toujours le mot Draft après son numéro. Les fonctionnalités Direct3D qui atteignent les jeux arrivent de manière inégale : Gears of War : E-Day a d’abord obtenu le travail de livraison des shaders de Microsoft, suivi du support de Nvidia et d’Intel plus tard.