> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XG_USAGE (famille XBOX One)

> Identifie l'utilisation prévue des ressources pendant le rendu. L'utilisation indique directement si une ressource est accessible par le processeur et/ou le GPU.

Identifie l'utilisation prévue des ressources pendant le rendu. L'utilisation indique directement si une ressource est accessible par le processeur et/ou le GPU (processeur graphique).

<a id="syntaxSection" />

## Syntaxe

```cpp theme={null}
enum XG_USAGE
{
    XG_USAGE_DEFAULT = 0,
    XG_USAGE_IMMUTABLE = 1,
    XG_USAGE_DYNAMIC = 2,
    XG_USAGE_STAGING = 3
}  
```

<a id="ID4EDC" />

## Constantes

| Constante | Description |
| - | - |
| XG\_USAGE\_DEFAULT | Une 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. |
| XG\_USAGE\_IMMUTABLE | Une ressource qui ne peut être lue que par le GPU. Elle ne peut pas être écrite par le GPU et n'est aucunement accessible par le processeur. Comme ce type de ressource ne peut pas être modifié après sa création, il doit être initialisé lors de sa création. |
| XG\_USAGE\_DYNAMIC | Une ressource accessible à la fois par le GPU (lecture seule) et par le processeur (écriture seule). Une ressource dynamique est un bon choix pour une ressource qui sera mise à jour par le processeur au moins une fois par image. Pour mettre à jour une ressource dynamique, utilisez une méthode **Map**. XG\_USAGE\_DYNAMIC n'est pas pris en charge pour les ressources hors ligne et les ressources placées. Si vous essayez d'utiliser cette constante d'énumération pour des ressources hors ligne ou placées, les fonctions de création d'objets de calcul de texture (comme [XGCreateTexture1DComputer](/fr-CA/reference/graphics/xg__NR/functions/xgcreatetexture1dcomputer)) ou les fonctions de calcul de disposition de texture (comme [XGComputeTexture1DLayout](/fr-CA/reference/graphics/xg__NR/functions/xgcomputetexture1dlayout)) retourneront E\_INVALIDARGS. |
| XG\_USAGE\_STAGING | Une ressource qui prend en charge les transferts de données (copie) du GPU vers le processeur. |

<a id="remarks" />

## Remarques

Une application indique 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 [XG\_TEXTURE1D\_DESC](/fr-CA/reference/graphics/xg__NR/structs/xg_texture1d_desc), [XG\_TEXTURE2D\_DESC](/fr-CA/reference/graphics/xg__NR/structs/xg_texture2d_desc), [XG\_TEXTURE3D\_DESC](/fr-CA/reference/graphics/xg__NR/structs/xg_texture3d_desc) et [XG\_BUFFER\_DESC](/fr-CA/reference/graphics/xg__NR/structs/xg_buffer_desc).

Une application ne précise pas le type de mémoire (le pool) dans lequel une ressource doit être créée. Vous indiquez plutôt 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 offrira les meilleures performances.

<a id="Restrictions" />

### Restrictions d'utilisation des ressources

Chaque utilisation impose un compromis entre l'accessibilité pour le processeur et/ou le GPU. En général, un accès plus performant pour l'un de ces deux processeurs signifie un accès moins performant pour l'autre. Aux deux extrêmes se trouvent les utilisations **XG\_USAGE\_DEFAULT** et **XG\_USAGE\_STAGING**. **XG\_USAGE\_DEFAULT** restreint l'accès presque entièrement au GPU. **XG\_USAGE\_STAGING** restreint l'accès presque entièrement au processeur et ne permet qu'un transfert de données (copie) d'une ressource entre le GPU et le processeur.

L'utilisation **XG\_USAGE\_DYNAMIC** est un cas particulier qui optimise le flux de données du processeur vers le GPU lorsque le processeur génère ces données à la volée et les envoie à haute fréquence. **XG\_USAGE\_DYNAMIC** est généralement utilisée pour les ressources contenant des données de sommets et pour les mémoires tampons de constantes.

L'utilisation **XG\_USAGE\_IMMUTABLE** est un autre cas particulier qui fait en sorte que le GPU génère les données une seule fois, lorsque vous créez une ressource. **XG\_USAGE\_IMMUTABLE** convient bien aux données comme les textures, car ces données sont généralement lues en mémoire à partir d'un format de fichier. Par conséquent, lorsque vous créez une texture avec **XG\_USAGE\_IMMUTABLE**, le GPU lit cette texture directement en mémoire.

Utilisez le tableau suivant pour choisir l'utilisation qui décrit le mieux la façon dont le processeur et le GPU doivent accéder à la ressource. Il existe des compromis en matière de performances.

| Utilisation de la ressource | Par défaut | Dynamique | Immuable | Intermédiaire |
| - | - | - | - | - |
| Lecture GPU | oui | oui | oui | oui<sup>1</sup> |
| Écriture GPU | oui | | | oui<sup>1</sup> |
| Lecture processeur | | | | oui<sup>1</sup> |
| Écriture processeur | | oui | | oui<sup>1</sup> |

1 : Les lectures et écritures par le GPU d'une ressource ayant l'utilisation **XG\_USAGE\_STAGING** sont limitées aux opérations de copie. De plus, comme les formats de profondeur-gabarit et les dispositions multiéchantillons sont des détails d'implémentation propres à une conception de GPU particulière, le système d'exploitation ne peut généralement pas exposer ces formats et dispositions au processeur. Par conséquent, les ressources intermédiaires ne peuvent pas être des mémoires tampons de profondeur-gabarit ni des cibles de rendu multiéchantillonnées.

Comme les ressources **XG\_USAGE\_DYNAMIC** consomment des capacités matérielles précises, utilisez-les avec parcimonie. Le pilote d'affichage alloue généralement la mémoire des ressources **XG\_USAGE\_DYNAMIC** avec un algorithme de mise en cache qui favorise les écritures du processeur et nuit à ses lectures. Par conséquent, ne vous attendez pas à des lectures processeur performantes, ni même constantes, à partir des ressources **XG\_USAGE\_DYNAMIC**.

<a id="Bind" />

### Options de liaison des ressources

Pour maximiser les performances, les options d'utilisation des ressources ne peuvent pas toutes servir de ressources d'entrée ou de sortie pour le pipeline. Ce tableau indique ces limitations.

| La ressource peut être liée en tant que | Par défaut | Dynamique | Immuable | Intermédiaire |
| - | - | - | - | - |
| Entrée d'une étape | oui<sup>2</sup> | oui<sup>3</sup> | oui | |
| Sortie d'une étape | oui<sup>2</sup> | | | |

* 2 : Si la ressource est liée en tant qu'entrée et sortie au moyen de vues différentes, chaque vue doit utiliser des sous-ressources différentes.
* 3 : La ressource ne peut être créée qu'avec une seule sous-ressource, ne peut pas être un tableau de textures et ne peut pas être une chaîne de mipmaps.

<a id="requirements" />

## Configuration requise

**En-tête :** xg.h

**Bibliothèque :** xg\_x.lib

**Plateformes prises en charge :** famille XBOX One

## Voir aussi

[Référence XG](/fr-CA/reference/graphics/xg__NR/xg_members)


## Related topics

- [Répertoire des rubriques NDA : liens actifs vers Microsoft Learn](/fr-CA/nda/nda-topic-directory.md)
- [Index des rubriques NDA pour le développement sur console avec XBOX GDK](/fr-CA/nda/nda-overview.md)
- [GameInputUsage](/fr-CA/reference/input/gameinput/structs/gameinputusage.md)
- [XNetworkingTcpQueuedReceivedBufferUsageStatistics](/fr-CA/reference/networking/xnetworking/structs/xnetworkingtcpqueuedreceivedbufferusagestatistics.md)
- [Outils GDK pour XBOX One et XBOX Series X|S](/fr-CA/tools/tools-console/tools-sdk.md)
