énumération D3D10_USAGE (d3d10.h)
Identifie l’utilisation attendue des ressources pendant le rendu. L’utilisation indique directement si une ressource est accessible par le processeur et/ou le GPU.
Syntax
typedef enum D3D10_USAGE {
D3D10_USAGE_DEFAULT = 0,
D3D10_USAGE_IMMUTABLE = 1,
D3D10_USAGE_DYNAMIC = 2,
D3D10_USAGE_STAGING = 3
} ;
Constantes
D3D10_USAGE_DEFAULT Valeur : 0 Ressource qui nécessite un accès en lecture et en écriture par le GPU. Il s’agit probablement du choix d’utilisation le plus courant. |
D3D10_USAGE_IMMUTABLE Valeur : 1 Ressource qui ne peut être lue que par le GPU. Il ne peut pas être écrit par le GPU et n’est pas du tout accessible par le processeur. Ce type de ressource doit être initialisé lors de sa création, car il ne peut pas être modifié après sa création. |
D3D10_USAGE_DYNAMIC Valeur : 2 Ressource accessible à la fois par le GPU et le processeur (écriture uniquement). Une ressource dynamique est un bon choix pour une ressource qui sera mise à jour par le processeur au moins une fois par image. Pour écrire dans une ressource dynamique sur le processeur, utilisez une méthode Map . Vous pouvez écrire dans une ressource dynamique sur le GPU à l’aide de CopyResource ou CopySubresourceRegion. |
D3D10_USAGE_STAGING Valeur : 3 Ressource qui prend en charge le transfert de données (copie) du GPU vers le processeur. |
Remarques
Une application identifie la façon dont une ressource est destinée à être utilisée (son utilisation) dans une description de ressource. Il existe plusieurs structures pour créer des ressources, notamment : D3D10_TEXTURE1D_DESC, D3D10_TEXTURE2D_DESC, D3D10_TEXTURE3D_DESC, D3D10_BUFFER_DESC et D3DX10_IMAGE_LOAD_INFO.
Différences entre Direct3D 9 et Direct3D 10 : Dans Direct3D 9, vous spécifiez le type de mémoire dans lequel une ressource doit être créée au moment de la création de la ressource (à l’aide de D3DPOOL). C’était le travail d’une application de décider quel pool de mémoire fournirait la meilleure combinaison de fonctionnalités et de performances. Dans Direct3D 10, une application ne spécifie plus le type de mémoire (le pool) dans lequel créer une ressource. Au lieu de cela, vous spécifiez l’utilisation prévue de la ressource et laissez le runtime (de concert avec le pilote et un gestionnaire de mémoire) choisir le type de mémoire qui obtiendra les meilleures performances. |
Restrictions d’utilisation des ressources
Chaque utilisation dicte un compromis entre les fonctionnalités et les performances. En général, l’accès aux ressources s’effectue avec les API suivantes.- L’accès au processeur s’effectue avec ID3D10Buffer ::Map, ID3D10Texture1D ::Map, ID3D10Texture2D ::Map ou ID3D10Texture3D ::Map
- L’accès GPU s’effectue avec CopySubresourceRegion, CopyResource ou UpdateSubresource.
Utilisation des ressources | Default | Dynamique | Non modifiable | Staging |
---|---|---|---|---|
GPU-Read | Oui | oui¹ | Oui | oui1, 2 |
GPU-Write | oui¹ | oui1, 2 | ||
CPU-Read | oui1, 2 | |||
CPU-Write | oui | oui1, 2 |
- 1 - Cette propriété est limitée à CopySubresourceRegion, CopyResource et UpdateSubresource.
- 2 - Il ne peut pas s’agir d’une mémoire tampon de gabarit de profondeur ou d’une cible de rendu multi-échantillonnée.
Options de liaison de ressources
Pour optimiser les performances, toutes les options d’utilisation des ressources ne peuvent pas être utilisées comme ressources d’entrée ou de sortie dans le pipeline. Ce tableau identifie ces limitations.La ressource peut être liée en tant que | Default | Dynamique | Non modifiable | Staging |
---|---|---|---|---|
Entrée dans une étape | oui 3 | oui⁴ | oui | |
Sortie à partir d’une étape | oui 3 |
- 3 - S’il est lié en tant qu’entrée et en sortie utilisant des vues différentes, chaque vue doit utiliser des sous-ressources différentes.
- 4 - La ressource ne peut être créée qu’avec une seule sous-ressource. La ressource ne peut pas être un tableau de textures. La ressource ne peut pas être une chaîne mipmap.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | d3d10.h |