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

# CopyTiles

> Copie des vignettes d'un tampon vers une ressource en mosaïque, ou inversement. (ID3D12GraphicsCommandList.CopyTiles)

Copie des vignettes d'un tampon vers une ressource en mosaïque, ou inversement.

## Syntaxe

```cpp theme={null}
void CopyTiles(
    ID3D12Resource  pTiledResource,
    const D3D12_TILED_RESOURCE_COORDINATE  pTileRegionStartCoordinate,
    const D3D12_TILE_REGION_SIZE  pTileRegionSize,
    ID3D12Resource  pBuffer,
    UINT64 BufferStartOffsetInBytes,
    D3D12_TILE_COPY_FLAGS Flags
)
```

### Paramètres

*pTiledResource \[in]*\
Type : ID3D12Resource \*

Pointeur vers une ressource en mosaïque.

*pTileRegionStartCoordinate \[in]*\
Type : const D3D12\_TILED\_RESOURCE\_COORDINATE \*

Pointeur vers une structure
[D3D12\_TILED\_RESOURCE\_COORDINATE](/fr/reference/graphics/d3d12/structs/d3d12_tiled_resource_coordinate_public) qui décrit les coordonnées de départ de la ressource en mosaïque.

*pTileRegionSize \[in]*\
Type : const D3D12\_TILE\_REGION\_SIZE \*

Pointeur vers une structure [D3D12\_TILE\_REGION\_SIZE](/fr/reference/graphics/d3d12/structs/d3d12_tile_region_size_public) qui décrit la taille de la région en mosaïque.

*pBuffer \[in]*\
Type : ID3D12Resource \*

Pointeur vers une [ID3D12Resource](/fr/reference/graphics/d3d12_xs/interfaces/ID3D12Resource/id3d12resource_xs) qui représente un tampon par défaut, dynamique ou intermédiaire.

*BufferStartOffsetInBytes*\
Type : UINT64

Décalage en octets dans le tampon <i>pBuffer</i> à partir duquel démarrer l'opération.

*Flags*\
Type : D3D12\_TILE\_COPY\_FLAGS

Combinaison de valeurs de type [D3D12\_TILE\_COPY\_FLAGS](/fr/reference/graphics/d3d12/enums/d3d12_tile_copy_flags_public) combinées à l'aide d'une opération OR au niveau du bit, qui identifie la manière de copier les vignettes.

### Valeur renvoyée

Type : void

Aucune.

## Remarques

**CopyTiles** ignore les opérations d'écriture vers
des zones non mappées et gère les opérations de lecture depuis des zones non mappées
(sauf sur les ressources en mosaïque de niveau Tier\_1,
où la lecture et l'écriture de zones non mappées ne sont pas valides ; reportez-vous à [D3D12\_TILED\_RESOURCES\_TIER](/fr/reference/graphics/d3d12/enums/d3d12_tiled_resources_tier_public)).

Si une opération de copie implique d'écrire plusieurs fois au même emplacement mémoire parce que plusieurs emplacements de la
ressource de destination sont mappés à la même mémoire de vignette, les opérations d'écriture résultantes vers les vignettes multimappées sont
non déterministes et non reproductibles ; autrement dit, les accès à la mémoire des vignettes se produisent dans l'ordre dans lequel le matériel
exécute l'opération de copie.

Les vignettes impliquées dans l'opération de copie ne peuvent pas inclure de vignettes contenant des mipmaps empaquetées, sinon les résultats de l'opération
de copie sont indéfinis. Pour transférer des données vers et depuis des mipmaps que le matériel empaquette dans la ou les vignettes qui constituent les mips empaquetées, vous devez
utiliser les API de copie standard (c'est-à-dire non spécifiques aux vignettes)
comme [CopyTextureRegion](/fr/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_copytextureregion_public).

**CopyTiles** copie les données selon un modèle légèrement différent de celui des méthodes de copie standard.

La disposition en mémoire des vignettes du côté de la ressource de tampon non en mosaïque de l'opération de copie est linéaire en mémoire au sein de vignettes de 64 Ko, que le matériel et le pilote réorganisent (swizzle) et restaurent (de-swizzle) par vignette, selon le cas, lors des transferts vers et depuis une ressource en mosaïque. Pour les surfaces à anticrénelage multiéchantillon (MSAA), le matériel et le pilote parcourent les échantillons de chaque pixel dans l'ordre de leur index avant de passer au pixel suivant. Pour les vignettes partiellement remplies sur le côté droit (pour une surface dont la largeur n'est pas un multiple de la largeur de vignette en pixels), le pas et la foulée pour descendre d'une ligne correspondent à la taille complète en octets du nombre de pixels qui tiendraient sur la largeur de la vignette si celle-ci était pleine. Il peut donc y avoir un écart entre chaque ligne de pixels en mémoire. Les mipmaps plus petites qu'une vignette ne sont pas empaquetées ensemble dans la disposition linéaire, ce qui peut sembler être un gaspillage d'espace mémoire, mais comme indiqué, vous ne pouvez pas utiliser **CopyTiles** pour copier vers des mipmaps que le matériel empaquette ensemble. Vous pouvez simplement utiliser des API de copie génériques, comme [CopyTextureRegion](/fr/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_copytextureregion_public), pour copier individuellement les petites mipmaps.

## 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** : consoles XBOX Series et famille XBOX One

## Voir aussi

[ID3D12GraphicsCommandList](/fr/reference/graphics/d3d12_xs/interfaces/ID3D12GraphicsCommandList/id3d12graphicscommandlist_xs)

[Ressources en mosaïque](https://learn.microsoft.com/en-us/windows/desktop/direct3d11/tiled-resources)


## Related topics

- [D3D12_TILE_COPY_FLAGS](/fr/reference/graphics/d3d12/enums/d3d12_tile_copy_flags_public.md)
- [D3D12_TILE_REGION_SIZE](/fr/reference/graphics/d3d12/structs/d3d12_tile_region_size_public.md)
- [D3D12_TILED_RESOURCE_COORDINATE](/fr/reference/graphics/d3d12/structs/d3d12_tiled_resource_coordinate_public.md)
- [CopyTileMappings](/fr/reference/graphics/d3d12/interfaces/id3d12commandqueue/methods/id3d12commandqueue_copytilemappings_public.md)
- [D3D12_TILE_MAPPING_FLAGS](/fr/reference/graphics/d3d12/enums/d3d12_tile_mapping_flags_public.md)
