ID3D12GraphicsCommandList ::CopyTiles, méthode (d3d12.h)

Copie les vignettes de la mémoire tampon vers la ressource en mosaïque ou vice versa.

Syntaxe

void CopyTiles(
  [in] ID3D12Resource                        *pTiledResource,
  [in] const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
  [in] const D3D12_TILE_REGION_SIZE          *pTileRegionSize,
  [in] ID3D12Resource                        *pBuffer,
       UINT64                                BufferStartOffsetInBytes,
       D3D12_TILE_COPY_FLAGS                 Flags
);

Paramètres

[in] pTiledResource

Type : ID3D12Resource*

Pointeur vers une ressource en mosaïque.

[in] pTileRegionStartCoordinate

Type : const D3D12_TILED_RESOURCE_COORDINATE*

Pointeur vers une structure D3D12_TILED_RESOURCE_COORDINATE qui décrit les coordonnées de départ de la ressource en mosaïque.

[in] pTileRegionSize

Type : const D3D12_TILE_REGION_SIZE*

Pointeur vers une structure D3D12_TILE_REGION_SIZE qui décrit la taille de la région en mosaïque.

[in] pBuffer

Type : ID3D12Resource*

Pointeur vers un ID3D12Resource qui représente une mémoire tampon par défaut, dynamique ou intermédiaire.

BufferStartOffsetInBytes

Type : UINT64

Décalage en octets dans la mémoire tampon sur pBuffer pour démarrer l’opération.

Flags

Type : D3D12_TILE_COPY_FLAGS

Combinaison de valeurs D3D12_TILE_COPY_FLAGS typées qui sont combinées à l’aide d’une opération OR au niveau du bit et qui identifie comment copier des vignettes.

Valeur de retour

None

Remarques

CopyTiles supprime les opérations d’écriture dans les zones non mappées et gère les opérations de lecture à partir des zones non mappées (sauf sur Tier_1 ressources en mosaïque, où la lecture et l’écriture des zones non mappées ne sont pas valides ( reportez-vous à D3D12_TILED_RESOURCES_TIER).

Si une opération de copie implique l’écriture dans le même emplacement mémoire plusieurs fois, car plusieurs emplacements de la ressource de destination sont mappés à la même mémoire de vignette, les opérations d’écriture résultantes sur des vignettes multi mappé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 compressés ou les résultats de l’opération de copie ne sont pas définis. Pour transférer des données vers et à partir de mipmaps que le matériel emballe dans une ou plusieurs vignettes qui constituent les mips compressés, vous devez utiliser les API de copie standard (c’est-à-dire non spécifiques aux vignettes) comme CopyTextureRegion.

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

La disposition de la mémoire des vignettes côté ressource de mémoire tampon non en mosaïque de l’opération de copie est linéaire en mémoire dans les vignettes de 64 Ko, que le matériel et le pilote swizzle et de-swizzle par vignette selon le cas quand ils sont transférés vers et à partir d’une ressource en mosaïque. Pour les surfaces MSAA (Multisample Antialiasing), le matériel et le pilote parcourent les échantillons de chaque pixel dans l’ordre d’échantillonnage-index avant de passer au pixel suivant. Pour les vignettes qui sont partiellement remplies sur le côté droit (pour une surface dont la largeur n’est pas un multiple de largeur de vignette en pixels), la hauteur et la foulée pour se déplacer vers le bas d’une ligne sont la taille complète, en octets, du nombre de pixels qui correspondrait à la vignette si la vignette était pleine. Ainsi, il peut y avoir un espace entre chaque ligne de pixels en mémoire. Les Mipmaps plus petits qu’une vignette ne sont pas regroupés dans la disposition linéaire, ce qui peut sembler être une perte d’espace mémoire, mais comme mentionné, vous ne pouvez pas utiliser CopyTiles pour copier vers des mipmaps que le matériel regroupe. Vous pouvez simplement utiliser des API de copie génériques, telles que CopyTextureRegion, pour copier de petits mipmaps individuellement.

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête d3d12.h
Bibliothèque D3d12.lib
DLL D3d12.dll

Voir aussi

ID3D12GraphicsCommandList

Ressources en mosaïque