DirectX 12 D3D12 obtient une nouvelle fonctionnalité qui accorde plus de contrôle sur l'allocation de mémoire au GPU ou au CPU de manière dynamique

Matériel / DirectX 12 D3D12 obtient une nouvelle fonctionnalité qui accorde plus de contrôle sur l'allocation de mémoire au GPU ou au CPU de manière dynamique 3 minutes de lecture

DirectX 12



Dans la prochaine mise à jour majeure du système d'exploitation Windows 10, le DirectX12, et plus spécifiquement, le Direct3D (D3D12), sera obtenir non pas un mais de nouveaux drapeaux cela modifiera la façon dont les ressources mémoire sont allouées. Il semble que Microsoft se préoccupe à juste titre de la manière dont la mémoire et la puissance de traitement sont demandées et allouées aux applications, ce qui peut souvent créer un goulot d'étranglement. Incidemment, ces nouveaux indicateurs n'affecteront pas directement la mémoire, mais affecteront plutôt la façon dont elle est allouée et gérée.

Microsoft développe activement la dernière itération de la plate-forme DirectX, qui est depuis longtemps une norme de premier plan pour les jeux de bureau. La dernière version de Microsoft DirectX 12 a récemment reçu plusieurs nouvelles fonctionnalités. Récemment, nous avons couvert le les nouvelles fonctionnalités les plus importantes et les plus importantes de DirectX 12 ce qui profiterait considérablement aux développeurs et aux utilisateurs finaux. Cette semaine, Microsoft a indiqué que la prochaine mise à jour majeure de Windows 10 devrait inclure deux nouveaux indicateurs pour DirectX12 Direct3D. Fait intéressant, les développeurs qui souhaitent explorer la même chose aujourd'hui doivent simplement télécharger et installer la dernière version de Windows 10 Insider Preview et SDK Preview Build pour Windows 10 (20H1) à partir du programme Windows Insider.



Windows 10 DirectX 12 Direct3D pour obtenir deux nouveaux indicateurs pour l'allocation de mémoire dynamique entre le processeur et le GPU:

Dans la prochaine mise à jour de Windows 10, D3D12 ajoutera deux nouveaux indicateurs à l'énumération D3D12_HEAP_FLAG. Incidemment, ces nouveaux drapeaux sont des propriétés «impermanentes». En termes simples, cela signifie que les nouveaux indicateurs n’affecteront pas directement la mémoire résultante elle-même. Au lieu de cela, les nouveaux indicateurs affecteront la façon dont la mémoire est allouée. De plus, ces drapeaux ne sont pas reflétés ID3D12Heap :: GetDesc ou ID3D12Resource :: GetHeapProperties .



D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT:

Dans son itération actuelle, chaque fois qu'un développeur demande à D3D d'allouer un tas ou une ressource validée, la dernière chose qui se produit avant de récupérer l'objet est que la mémoire est rendue résidente. Ceci est remarquablement similaire à ID3D12Device :: MakeResident en cours de réalisation. Inutile d'ajouter, un tel processus présente d'emblée deux problèmes:



  1. La conception bloque un thread CPU jusqu'à ce que la mémoire soit entièrement prête à être utilisée. Ce n'est pas une situation idéale ou souhaitée
  2. Le processus permettra également aux développeurs de surcharger la mémoire, au-delà de ce que le budget de processus actuel indique qu'il devrait utiliser.

Le nouvellement ajouté ID3D12Device3 :: EnqueueMakeResident permet aux applications de faire des choix différents. Les applications peuvent attendre la résidence en utilisant le GPU plutôt que le CPU ou demander l'échec de l'opération de résidence plutôt que de dépasser le budget. L'allocation de mémoire dans un état non résident a pour résultat de conférer les deux avantages à la première utilisation des ressources.

D3D12_HEAP_FLAG_CREATE_NOT_ZEROED:

Cet indicateur tente de traiter les contenus remis à zéro que les ressources engagées et les tas nouvellement créés par D3D ont reçus. Microsoft a tenté d'optimiser ce processus en permettant une plus grande réutilisation de la mémoire qui n'avait jamais quitté les limites d'un processus donné sans remise à zéro. Cependant, cela n'a pas bien fonctionné et a forcé les ingénieurs de Microsoft à revenir au retour uniquement de la mémoire remise à zéro. Inutile de mentionner que cette méthode était assez fastidieuse car le gestionnaire de mémoire doit écrire explicitement des zéros dans la mémoire avant de la renvoyer aux développeurs pour une réutilisation.

Afin d'optimiser le processus, les développeurs ont la possibilité de se désengager du processus fastidieux en spécifiant simplement le nouvel indicateur lors de l'allocation du tas / des ressources. Essentiellement, la réallocation dynamique pourrait minimiser le processus de remise à zéro obligatoire et allouer de la mémoire libérée que les processus du développeur utilisaient sans forcer à travers le processus de remise à zéro.



Microsoft a déjà ajouté ces nouveaux indicateurs et ils ne nécessitent pas de nouveaux pilotes. De plus, il n'y a pas VérifierCaractéristiqueSupport option pour ceux-ci. Essentiellement, ces nouveaux indicateurs sont disponibles chaque fois que ID3D12Device8 est exposé ou qu'une vérification de D3D12_FEATURE_D3D12_OPTIONS7 réussit. Tout ce que les nouveaux indicateurs demandent, c'est que les développeurs exécutent des processus sur une version de D3D12 qui les comprend.

Mots clés Direct X12 directx Microsoft les fenêtres