Passer au contenu principal
Copie des vignettes d’un tampon vers une ressource en mosaïque, ou inversement.

Syntaxe

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 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 qui décrit la taille de la région en mosaïque. pBuffer [in]
Type : ID3D12Resource *
Pointeur vers une ID3D12Resource qui représente un tampon par défaut, dynamique ou intermédiaire. BufferStartOffsetInBytes
Type : UINT64
Décalage en octets dans le tampon pBuffer à partir duquel démarrer l’opération. Flags
Type : D3D12_TILE_COPY_FLAGS
Combinaison de valeurs de type D3D12_TILE_COPY_FLAGS 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). 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. 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, 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 Ressources en mosaïque
Dernière modification le 6 octobre 2026