Améliorations des performances de rendu Direct3D

Le modèle de pilote d’affichage Windows (WDDM) 1.3 et versions ultérieures peut prendre en charge les améliorations des performances de rendu Microsoft Direct3D 9 qui permettent au matériel Direct3D 9 d’utiliser mieux les mémoires tampons et compteurs de commandes matérielles et d’effectuer des copies efficaces de la mémoire système dans des sous-ressources. Ces fonctionnalités, qui reflètent certaines des fonctionnalités disponibles pour le matériel Direct3D Version 10, sont nouvelles à partir de Windows 8.1.

De nouvelles améliorations des performances par défaut pour le trim et le mappage des ressources Direct3D 11.1 sont également disponibles. Le scénario par défaut de carte est décrit dans la section Modifications de comportement ci-dessous.

Informations de référence sur les performances de rendu

Cette section de référence décrit les interfaces de pilote de périphérique en mode utilisateur (DDIS).

Fonctions de performances de rendu Direct3D implémentées par le pilote en mode utilisateur

Cette section contient des fonctions qu’un pilote d’affichage en mode utilisateur du modèle de pilote d'affichage Windows (WDDM) version 1.3 ou ultérieure implémente afin de prendre en charge les améliorations des performances de rendu de Microsoft Direct3D.

PFND3DDDI_FLUSH1 : PFND3DDDI_CHECKCOUNTERINFO

PFND3DDDI_CHECKCOUNTER : PFND3DDDI_UPDATESUBRESOURCEUP

Structures et énumérations de performances de rendu Direct3D

Ces structures et énumérations en mode utilisateur prennent en charge les améliorations de performances de rendu et sont nouvelles ou mises à jour pour Windows 8.1. Tous s’appliquent aux pilotes Direct3D Level 9, à l’exception de D3D11_1_DDI_FLUSH_FLAGS.

Exigences d’implémentation DDI à partir de WDDM 1.3

À compter de WDDM 1.3, les fonctions suivantes sont requises ou facultatives pour les pilotes en mode utilisateur à implémenter.

Groupe de fonctions Descriptif

Fonctions Direct3D 9 facultatives avant WDDM 1.3. Maintenant nécessaire :

Fonctions Direct3D 9 disponibles à partir de WDDM 1.3. Un pilote doit implémenter toutes ces fonctions ou aucune d’entre elles :

Lorsque les fonctions facultatives WDDM 1.3 et ultérieures sont implémentées immédiatement ci-dessus, ces fonctions ont des modifications de comportement associées :

Ces scénarios s’appliquent lorsque GetCaps est appelé :

  • Si D3DDDICAPS_GETD3DQUERYDATA est défini, le pilote peut éventuellement signaler la prise en charge des horodatages, ce qui signifie que le runtime Direct3D ne masque pas la prise en charge.
  • Si D3DDDICAPS_GET_SIMPLE_INSTANCING_SUPPORT est défini, le pilote peut signaler le support facultatif de l’instanciation par le matériel.

Ces fonctions Direct3D 11 ont des changements de comportement associés :

  • CreateResource(D3D11) : carte de mémoire tampon par défaut (voir section Modifications du comportement ci-dessous)
  • pfnFlush1 — découpage des ressources
  • ResourceMap : carte de mémoire tampon par défaut (voir section Modifications de comportement ci-dessous)
  • ResourceUnmap : carte de mémoire tampon par défaut (voir section Modifications de comportement ci-dessous)

Modifications de comportement pour les appels à des fonctions de création, de mappage et de démappage de ressources

Pour ces fonctions implémentées par les pilotes WDDM 1.3 et versions ultérieures, le runtime Direct3D fournit un ensemble restreint de valeurs d’entrée pour le scénario par défaut de carte. Ces valeurs restreintes s’appliquent uniquement aux pilotes qui prennent en charge le niveau de fonctionnalité 11.1 et versions ultérieures.

CreateResource(D3D11)function

Ces membres de la structure d'entrée D3D11DDIARG_CREATERESOURCE sont restreints :

Membre Descriptif

ResourceDimension et Usage

Ces modifications de comportement s’appliquent uniquement lorsque le runtime Direct3D fournit le type D3D10DDIRESOURCE_BUFFER pour ResourceDimension et le type D3D10_DDI_USAGE_DEFAULT pour l’utilisation.

BindFlags

Le runtime Direct3D définit uniquement les valeurs D3D10_DDI_BIND_SHADER_RESOURCE et D3D11_DDI_BIND_UNORDERED_ACCESS .

MapFlags

Si toutes les autres exigences de membre répertoriées ici sont remplies, le runtime peut définir les valeurs D3D10_DDI_MAP_READ, D3D10_DDI_MAP_WRITE et D3D10_DDI_MAP_READWRITE. Le pilote doit prendre en charge ces valeurs. Les valeurs de D3D10_DDI_MAP_WRITE_DISCARD et D3D10_DDI_MAP_WRITE_NOOVERWRITE ne sont pas valides.

MiscFlags

Le runtime définit uniquement les valeurs D3D11_DDI_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS et D3D11_DDI_RESOURCE_MISC_BUFFER_STRUCTURED .

Format

Le runtime définit uniquement la valeur DXGI_FORMAT_UNKNOWN .

SampleDesc

Le runtime définit la DXGI_SAMPLE_DESC, le membre Count sur 1 et le membre Qualité à zéro.

MipLevels

Le runtime définit la valeur sur 1.

ArraySize

Le runtime définit la valeur sur 1.

pPrimaryDesc

Le runtime définit la valeur sur NULL.

Fonction ResourceMap:

Ces paramètres d’entrée dans ResourceMap sont restreints :

Paramètre Descriptif

hResource

Le runtime Direct3D définit uniquement une ressource D3D10DDIRESOURCE_BUFFER lorsqu’une valeur non nulle pour MapFlags est définie dans l’appel de création à CreateResource(D3D11).

Le runtime définit uniquement la valeur DXGI_FORMAT_UNKNOWN .

Sous-ressource

Le runtime définit uniquement la valeur 0.

DDIMap

Si toutes les autres exigences de membre répertoriées ici sont remplies, le runtime peut définir des valeurs D3D10_DDI_MAP_READ, D3D10_DDI_MAP_WRITE ou D3D10_DDI_MAP_READWRITE , correspondant à la valeur MapFlags définie dans l’appel de création à CreateResource(D3D11).

Drapeaux

Bien que la valeur d’entrée du runtime ne soit pas restreinte, le pilote doit pouvoir prendre en charge la valeur D3D10_DDI_MAP_FLAG_DONOTWAIT .

pMappedSubResource

Bien que la valeur d’entrée du runtime ne soit pas restreinte, le pilote doit affecter un pointeur valide pouvant être mis en cache par le CPU au membre D3D10DDI_MAPPED_SUBRESOURCE.pData et doit définir RowPitch et DepthPitch pour correspondre à la taille du tampon et aux données fournies dans pData.

Fonction ResourceUnmap:

Ces paramètres d’entrée dans ResourceUnmap sont restreints :

Paramètre Descriptif

hDevice

Bien que la valeur d'entrée issue du runtime Direct3D ne soit pas limitée, la valeur doit correspondre à la valeur hDevice obtenue lors de l'appel ResourceMap d'origine.

hResource

Le runtime définit uniquement une ressource D3D10DDIRESOURCE_BUFFER lorsqu’une valeur non nulle pour MapFlags est définie dans l’appel de création à CreateResource(D3D11).

Sous-ressource

Le runtime définit uniquement la valeur 0.