Partager via


ID3D11DeviceContext2 ::CopyTiles, méthode (d3d11_2.h)

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

Syntaxe

void CopyTiles(
  [in] ID3D11Resource                        *pTiledResource,
  [in] const D3D11_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate,
  [in] const D3D11_TILE_REGION_SIZE          *pTileRegionSize,
  [in] ID3D11Buffer                          *pBuffer,
  [in] UINT64                                BufferStartOffsetInBytes,
  [in] UINT                                  Flags
);

Paramètres

[in] pTiledResource

Type : ID3D11Resource*

Pointeur vers une ressource en mosaïque.

[in] pTileRegionStartCoordinate

Type : const D3D11_TILED_RESOURCE_COORDINATE*

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

[in] pTileRegionSize

Type : const D3D11_TILE_REGION_SIZE*

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

[in] pBuffer

Type : ID3D11Buffer*

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

[in] BufferStartOffsetInBytes

Type : UINT64

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

[in] Flags

Type : UINT

Combinaison de valeurs de type D3D11_TILE_COPY_FLAG 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 maquées et gère les opérations de lecture à partir des zones non maquées (sauf sur Tier_1 ressources en mosaïques, où la lecture et l’écriture des zones non maapplées ne sont pas valides).

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 mosaïque, les opérations d’écriture qui en résultent sur des vignettes mappées multiples sont non déterministes et non reproductibles ; autrement dit, les accès à la mémoire de vignette 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 qui contiennent des mipmaps empaqueté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 empaquetés, vous devez utiliser les API de copie et de mise à jour standard (c’est-à-dire non spécifiques aux vignettes) (telles que ID3D11DeviceContext1 ::CopySubresourceRegion1 et ID3D11DeviceContext1 ::UpdateSubresource1) ou ID3D11DeviceContext ::GenerateMips pour l’ensemble de la chaîne mipmap.

La disposition de la mémoire des vignettes du côté des ressources de mémoire tampon non mosaïques 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 deswizzle par vignette selon le cas lorsqu’ils sont transférés vers et à partir d’une ressource mosaïque. Pour les surfaces msaa (multi-échantillonnage), 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 partiellement remplies sur le côté droit (pour une surface dont la largeur n’est pas multiple en pixels), le pas et la foulée pour descendre une ligne sont la taille totale 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 dans la 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 ou ID3D11DeviceContext2 ::UpdateTiles pour copier sur des mipmaps que le matériel regroupe. Vous pouvez simplement utiliser des API de copie et de mise à jour génériques (telles que ID3D11DeviceContext1 ::CopySubresourceRegion1 et ID3D11DeviceContext1 ::UpdateSubresource1) pour copier de petits mipmaps individuellement. Bien que dans le cas d’une API de copie générique (comme ID3D11DeviceContext1 ::CopySubresourceRegion1), la mémoire linéaire doit avoir la même dimension que la ressource en mosaïque ; ID3D11DeviceContext1 ::CopySubresourceRegion1 ne peut pas copier à partir d’une ressource de mémoire tampon vers une Texture2D pour instance.

Pour plus d’informations sur les ressources en mosaïque, consultez Ressources en mosaïque.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8.1 [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2012 R2 [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête d3d11_2.h
Bibliothèque D3D11.lib

Voir aussi

ID3D11DeviceContext2