Partager via


Améliorations apportées à DXGI 1.4

Les fonctionnalités suivantes ont été ajoutées ou modifiées dans Microsoft DirectX Graphics Infrastructure (DXGI) 1.4, principalement pour prendre en charge Direct3D 12.

Énumération d’adaptateurs moins coûteuse

Pour Direct3D 12, il n’est plus possible de revenir d’un appareil à l’IDXGIAdapter utilisé pour le créer. Il n’est plus possible de fournir D3D_DRIVER_TYPE_WARP dans D3D12CreateDevice. Pour faciliter le développement, vous pouvez utiliser IDXGIFactory4 pour traiter ces deux problèmes. IDXGIFactory4::EnumAdapterByLuid (conçu pour être associé à ID3D12Device::GetAdapterLuid) permet à une application de récupérer des informations sur l’adaptateur où un appareil Direct3D 12 a été créé. IDXGIFactory4::EnumWarpAdapter fournit un adaptateur qui peut être fourni à D3D12CreateDevice pour utiliser le convertisseur WARP.

Suivi du budget de la mémoire vidéo

Les développeurs d’applications sont encouragés à utiliser un système de réservation de mémoire vidéo pour informer le système d’exploitation de la quantité de mémoire vidéo physique dont l’application ne peut pas se passer.

La quantité de mémoire physique disponible pour un processus est appelée « budget de mémoire vidéo ». Le budget peut varier sensiblement à mesure que les processus de veille et de veille en arrière-plan sont en cours de veille; et fluctuent considérablement lorsque l’utilisateur passe à une autre application. L’application peut être avertie lorsque le budget change et interroger le budget actuel et la quantité de mémoire actuellement consommée. Si une application ne reste pas dans son budget, le processus est figé par intermittence pour permettre à d’autres applications de s’exécuter et/ou les API de création retournent un échec. L’interface IDXGIAdapter3 fournit les méthodes relatives à cette fonctionnalité, en particulier QueryVideoMemoryInfo et RegisterVideoMemoryBudgetChangeNotificationEvent.

Pour plus d’informations, reportez-vous à la rubrique Direct3D 12 sur résidence.

Modifications de la chaîne d’échange Direct3D 12

Certaines des fonctionnalités existantes de la chaîne d’échange Direct3D 11 ont été déconseillées pour obtenir les réductions de la surcharge dans Direct3D 12. Bien que d’autres modifications aient été apportées pour s’aligner sur les concepts de Direct3D 12 ou fournir une meilleure prise en charge des fonctionnalités Direct3D 12.

Identité de backbuffer invariante

Dans Direct3D 11, les applications ne peuvent appeler GetBuffer( 0, ... ) qu’une seule fois. Chaque appel à Present a implicitement modifié l’identité de ressource de l’interface retournée. Direct3D 12 ne prend plus en charge cette modification implicite d’identité de ressource, en raison de la surcharge processeur requise et de la conception flexible du descripteur de ressources. Par conséquent, l’application doit appeler manuellement GetBuffer pour chaque mémoire tampon créée avec la chaîne d’échange. L’application doit effectuer manuellement le rendu vers la mémoire tampon suivante dans la séquence après avoir appelé Present. Les applications sont encouragées à créer un cache de descripteurs pour chaque mémoire tampon, au lieu de recréer de nombreux objets chaque présent.

Prise en charge de plusieurs adaptateurs

Lorsqu’une chaîne d’échange est créée sur une carte multi-GPU, les backbuffers sont tous créés sur le nœud 1 et une seule file d’attente de commandes est prise en charge. ResizeBuffers1 permet aux applications de créer des backbuffers sur différents nœuds, ce qui permet d’utiliser une file d’attente de commandes différente avec chacun d’eux. Ces fonctionnalités permettent d’utiliser des techniques AFR (Alternate Frame Rendering) avec la chaîne d’échange. Reportez-vous à Systèmes multi-adaptateurs.

Divers

  • Un objet de file d’attente de commandes doit être passé aux méthodes CreateSwapChain au lieu de l’objet d’appareil Direct3D 12.
  • Seuls les deux effets d’échange de modèle de retournement suivants sont pris en charge :
    DXGI_SWAP_EFFECT_FLIP_DISCARD doivent être préférables lorsque les applications s’affichent entièrement sur le backbuffer avant de le présenter ou sont intéressés à prendre en charge facilement des scénarios multi-adaptateurs.
    DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL doivent être utilisés par les applications qui s’appuient sur des optimisations de présentation partielles ou lisent régulièrement à partir de backbuffers précédemment présentés.
  • SetFullscreenState ne possède plus exclusivement l’affichage, de sorte que les éléments du système d’exploitation initiés par l’utilisateur peuvent apparaître en toute transparence devant la sortie de l’application. Les paramètres de volume en sont un exemple.

Niveaux de fonctionnalités matérielles Direct3D 12

Guide de programmation pour DXGI