Partager via


Améliorations des performances de rendu Direct3D

Les pilotes Windows Display Driver Model (WDDM) 1.3 et versions ultérieures peuvent prendre en charge les améliorations des performances de rendu Microsoft Direct3D qui permettent au matériel Direct3D 9 de mieux utiliser les mémoires tampons et compteurs de commandes matérielles et d’effectuer des copies efficaces de la mémoire système vers les sous-ressources. Ces fonctionnalités, qui miroir 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 des ressources Direct3D 11.1 sont également disponibles. Le scénario de carte par défaut est décrit dans la section Modifications de comportement ci-dessous.

Référence sur les performances de rendu

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

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

Cette section contient les fonctions qu’un pilote d’affichage en mode utilisateur Windows (WDDM) 1.3 et versions ultérieures implémente afin de prendre en charge les améliorations des performances de rendu 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 l’amélioration des performances de rendu et sont nouvelles ou mises à jour pour Windows 8.1. Tous s’appliquent aux pilotes Direct3D Level 9, à l’exception des D3D11_1_DDI_FLUSH_FLAGS.

Exigences d’implémentation de 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 Description

Fonctions Direct3D 9 facultatives antérieures à WDDM 1.3. Maintenant obligatoire :

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 immédiatement ci-dessus sont implémentées, ces fonctions ont des changements de comportement associés :

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 une prise en charge matérielle facultative pour l’instanciation.

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

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

Changements de comportement pour les appels aux fonctions de création de ressources, de mappage et d’annulation de carte

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 de carte par défaut. 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 entrées D3D11DDIARG_CREATERESOURCE membres de structure sont restreints :

Membre Description

ResourceDimension et utilisation

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 D3D10_DDI_MAP_READ, D3D10_DDI_MAP_WRITE et D3D10_DDI_MAP_READWRITE valeurs. 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 le DXGI_SAMPLE_DESC. Comptez le membre sur 1 et le membre Qualité sur zéro.

MipLevels

Le runtime définit la valeur 1.

ArraySize

Le runtime définit la valeur 1.

pPrimaryDesc

Le runtime définit la valeur NULL.

Fonction ResourceMap

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

Paramètre Description

hResource

Le runtime Direct3D définit uniquement une ressource D3D10DDIRESOURCE_BUFFER lorsqu’une valeur différente de zéro 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 être en mesure de 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 processeur vers le D3D10DDI_MAPPED_SUBRESOURCE. pData et doivent définir rowPitch et DepthPitch pour qu’ils correspondent à la taille de la mémoire tampon et aux données fournies dans pData.

Fonction ResourceUnmap

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

Paramètre Description

hDevice

Bien que la valeur d’entrée du runtime Direct3D ne soit pas restreinte, la valeur qui correspond à la valeur hDevice de l’appel ResourceMap d’origine.

hResource

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

Sous-ressource

Le runtime définit uniquement la valeur 0.