> ## 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 processeur pour copier des données dans une sous-ressource, ce qui permet au processeur de modifier le contenu de la plupart des textures dont la disposition n'est pas définie.

Utilise le processeur pour copier des données dans une sous-ressource, ce qui permet au processeur de modifier le contenu de la plupart des textures dont la disposition n'est pas 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 zone 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 tenir dans la destination (voir
[D3D12\_BOX](/fr/reference/graphics/d3d12/structs/d3d12_box_public)).

Une zone vide n'entraîne aucune opération.
Une zone est vide si la valeur top est supérieure ou égale à la valeur bottom, si la valeur left est supérieure ou égale à la valeur right,
ou si la valeur front est supérieure ou égale à la valeur back.
Lorsque la zone 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

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

*SrcDepthPitch*\
Type : UINT

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/reference/graphics/d3d12/interfaces/id3d12resource/methods/id3d12resource_map_public). Les textures doivent être dans l'état [D3D12\_RESOURCE\_STATE\_COMMON](/fr/reference/graphics/d3d12_x/enums/d3d12_resource_states) pour que l'accès CPU via **WriteToSubresource** et [ReadFromSubresource](/fr/reference/graphics/d3d12/interfaces/id3d12resource/methods/id3d12resource_readfromsubresource_public) soit légal ; ce n'est pas le cas pour les mémoires tampons.

Pour plus d'efficacité, assurez-vous que les limites et l'alignement des étendues de la zone sont de ( 64 / \[octets par pixel] ) pixels horizontalement.
Les limites et l'alignement verticaux doivent ê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 géré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 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 susceptible de perturber l'alignement sur les lignes de cache.

**WriteToSubresource** et [ReadFromSubresource](/fr/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 classiques doivent s'en tenir à des techniques de chargement adaptées aux adaptateurs discrets, sauf si elles reconnaissent que l'architecture de l'adaptateur est UMA. Pour plus de détails sur le chargement, consultez [CopyTextureRegion](/fr/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_copytextureregion_public), et pour plus de détails sur UMA, consultez [D3D12\_FEATURE\_DATA\_ARCHITECTURE](/fr/reference/graphics/d3d12/structs/d3d12_feature_data_architecture_public).

Sur les systèmes UMA, cette routine peut être utilisée pour réduire le coût de la copie de mémoire grâce à l'optimisation de boucle appelée [loop tiling](https://en.wikipedia.org/wiki/Loop_tiling) (pavage de boucle). En divisant le chargement en blocs qui tiennent confortablement dans le cache du processeur, la bande passante effective entre le processeur 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/reference/graphics/d3d12_xs/interfaces/ID3D12Resource/id3d12resource_xs)

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


## Related topics

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