> ## 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.

# WriteToSubresource

> Utilise le CPU pour copier des données dans une sous-ressource, permettant au CPU de modifier le contenu de la plupart des textures dont la disposition est non définie.

Utilise le CPU pour copier des données dans une sous-ressource, permettant au CPU de modifier le contenu de la plupart des textures dont la disposition est non définie.

## Syntaxe

```cpp theme={null}
HRESULT WriteToSubresource(
    UINT DstSubresource,
    const D3D12_BOX  pDstBox,
    const void  pSrcData,
    UINT SrcRowPitch,
    UINT SrcDepthPitch
)
```

### Paramètres

*DstSubresource*\
Type : UINT

Spécifie l'index de la sous-ressource.

*pDstBox \[in, optional]*\
Type : const D3D12\_BOX \*

Pointeur vers une boîte qui définit la partie de la sous-ressource de destination dans laquelle copier les données de la ressource.
Si NULL, les données sont écrites dans la sous-ressource de destination sans décalage.
Les dimensions de la source doivent correspondre à la destination (voir
[D3D12\_BOX](/fr-CA/reference/graphics/d3d12/structs/d3d12_box_public)).

Une boîte vide n'entraîne aucune opération.
Une boîte est vide si la valeur du haut est supérieure ou égale à la valeur du bas, ou si la valeur de gauche est supérieure ou égale à la valeur de droite,
ou si la valeur avant est supérieure ou égale à la valeur arrière.
Lorsque la boîte est vide, cette méthode n'effectue aucune opération.

*pSrcData \[in]*\
Type : const void \*

Pointeur vers les données sources en mémoire.

*SrcRowPitch*\
Type : UINT

La distance entre une ligne de données sources et la ligne suivante.

*SrcDepthPitch*\
Type : UINT

La distance entre une tranche de profondeur de données sources et la suivante.

### Valeur de retour

Type : HRESULT

Cette méthode retourne l'un des [codes de retour Direct3D 12](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/d3d12-graphics-reference-returnvalues).

## Remarques

<Note>
  ***REMARQUE :*** Cette fonctionnalité n'est actuellement pas prise en charge sur les consoles XBOX Series et la famille XBOX One.
</Note>

La ressource doit d'abord être mappée à l'aide de
[Map](/fr-CA/reference/graphics/d3d12/interfaces/id3d12resource/methods/id3d12resource_map_public). Les textures doivent être dans l'état [D3D12\_RESOURCE\_STATE\_COMMON](/fr-CA/reference/graphics/d3d12_x/enums/d3d12_resource_states) pour que l'accès du CPU au moyen de **WriteToSubresource** et de [ReadFromSubresource](/fr-CA/reference/graphics/d3d12/interfaces/id3d12resource/methods/id3d12resource_readfromsubresource_public) soit légal; ce n'est toutefois pas le cas des mémoires tampons.

Pour plus d'efficacité, assurez-vous que les limites et l'alignement des étendues à l'intérieur de la boîte sont de ( 64 / \[octets par pixel] ) pixels horizontalement.
Les limites et l'alignement verticaux devraient être de 2 lignes, sauf lorsque des formats à 1 octet par pixel sont utilisés, auquel cas 4 lignes sont recommandées.
Les tranches de profondeur uniques par appel sont traitées efficacement.
Il est recommandé, mais pas nécessaire, de fournir des pointeurs et des pas alignés sur 128 octets.

Lors de l'écriture dans des sous-niveaux de mipmap, il est recommandé d'utiliser des largeurs et des hauteurs plus grandes que celles décrites ci-dessus.
En effet, les petits niveaux de mipmap peuvent en réalité être stockés dans un bloc de mémoire plus grand, avec un décalage opaque qui peut nuire à l'alignement sur les lignes de cache.

**WriteToSubresource** et [ReadFromSubresource](/fr-CA/reference/graphics/d3d12/interfaces/id3d12resource/methods/id3d12resource_readfromsubresource_public) permettent des optimisations quasi sans copie pour les adaptateurs UMA, mais peuvent nuire considérablement à l'efficacité des adaptateurs discrets/NUMA, car les données de texture ne peuvent pas résider dans la mémoire vidéo locale. Les applications typiques devraient s'en tenir aux techniques de chargement adaptées aux adaptateurs discrets, à moins qu'elles ne reconnaissent que l'architecture de l'adaptateur est UMA. Pour plus de détails sur le chargement, consultez [CopyTextureRegion](/fr-CA/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_copytextureregion_public), et pour plus de détails sur UMA, consultez [D3D12\_FEATURE\_DATA\_ARCHITECTURE](/fr-CA/reference/graphics/d3d12/structs/d3d12_feature_data_architecture_public).

Sur les systèmes UMA, cette routine peut être utilisée pour réduire au minimum le coût de la copie de mémoire grâce à l'optimisation de boucle appelée [pavage de boucle](https://en.wikipedia.org/wiki/Loop_tiling). En divisant le chargement en blocs qui tiennent aisément dans le cache du CPU, la bande passante effective entre le CPU et la mémoire principale se rapproche davantage des maximums théoriques.

## Configuration requise

**En-tête :** d3d12\_xs.h ou d3d12\_x.h\
**Bibliothèque :** d3d12\_xs.lib ou d3d12\_x.lib\
**Plateformes prises en charge :** actuellement non pris en charge sur les consoles XBOX Series et la famille XBOX One

## Voir aussi

[ID3D12Resource](/fr-CA/reference/graphics/d3d12_xs/interfaces/ID3D12Resource/id3d12resource_xs)

[Sous-ressources](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/subresources)


## Related topics

- [ReadFromSubresource](/fr-CA/reference/graphics/d3d12/interfaces/id3d12resource/methods/id3d12resource_readfromsubresource_public.md)
- [D3D12_BOX](/fr-CA/reference/graphics/d3d12/structs/d3d12_box_public.md)
- [Map](/fr-CA/reference/graphics/d3d12/interfaces/id3d12resource/methods/id3d12resource_map_public.md)
- [D3D12_FEATURE_DATA_ARCHITECTURE1](/fr-CA/reference/graphics/d3d12/structs/d3d12_feature_data_architecture1_public.md)
- [ResolveSubresourceRegion](/fr-CA/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist1/methods/id3d12graphicscommandlist1_resolvesubresourceregion_public.md)
