> ## 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 | 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 | Ressource qui ne peut être lue que par le GPU. Elle ne peut pas être écrite par le GPU et n'est pas du tout 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 | 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 connexion et de placement. Si vous essayez d'utiliser cette constante d'énumération pour des ressources hors connexion et de placement, les fonctions de création de calculateur de texture (telles que [XGCreateTexture1DComputer](/fr/reference/graphics/xg__NR/functions/xgcreatetexture1dcomputer)) ou les fonctions de calcul de disposition de texture (telles que [XGComputeTexture1DLayout](/fr/reference/graphics/xg__NR/functions/xgcomputetexture1dlayout)) retournent E\_INVALIDARGS. |
| XG\_USAGE\_STAGING | Ressource qui prend en charge les transferts de données (copie) du GPU vers le processeur. |

<a id="remarks" />

## Remarques

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

Une application ne spécifie pas le type de mémoire (le pool) dans lequel une  ressource doit être créée. 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 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 implique 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 n'autorise 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 à une fréquence élevée. **XG\_USAGE\_DYNAMIC** est généralement utilisée pour les ressources contenant des données de vertex et pour les mémoires tampons de constantes.

L'utilisation **XG\_USAGE\_IMMUTABLE** est un autre cas particulier qui amène le GPU à générer les données une seule fois, lors de la création d'une ressource. **XG\_USAGE\_IMMUTABLE** convient bien aux données telles que 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 manière dont le processeur et le GPU doivent accéder à la ressource. Des compromis de performances sont à prendre en compte.

| 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 GPU d'une ressource avec l'utilisation **XG\_USAGE\_STAGING** sont limitées aux opérations de copie.   De plus, comme les formats de profondeur-stencil et les dispositions multi-échantillons sont des détails d'implémentation propres à la conception d'un GPU donné, le système d'exploitation ne peut en général 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-stencil ni des cibles de rendu multi-échantillonnées.

Comme les ressources **XG\_USAGE\_DYNAMIC** consomment des capacités matérielles spécifiques, 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 pénalise ses lectures.  Par conséquent, ne vous attendez pas à des lectures processeur performantes, ni même cohérentes, à partir des ressources **XG\_USAGE\_DYNAMIC**.

<a id="Bind" />

### Options de liaison des ressources

Pour optimiser les performances, toutes les options d'utilisation des ressources ne peuvent pas servir de ressources d'entrée ou de sortie pour le pipeline. Ce tableau identifie 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 à l'aide 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/reference/graphics/xg__NR/xg_members)


## Related topics

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