ID3D11DeviceContext2::UpdateTiles, méthode (d3d11_2.h)
Mises à jour vignettes en copiant de la mémoire de l’application vers la ressource en mosaïque.
Syntaxe
void UpdateTiles(
[in] ID3D11Resource *pDestTiledResource,
[in] const D3D11_TILED_RESOURCE_COORDINATE *pDestTileRegionStartCoordinate,
[in] const D3D11_TILE_REGION_SIZE *pDestTileRegionSize,
[in] const void *pSourceTileData,
[in] UINT Flags
);
Paramètres
[in] pDestTiledResource
Type : ID3D11Resource*
Pointeur vers une ressource en mosaïque à mettre à jour.
[in] pDestTileRegionStartCoordinate
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] pDestTileRegionSize
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] pSourceTileData
Type : const void*
Pointeur vers la mémoire qui contient les données de vignette source que UpdateTiles utilise pour mettre à jour la ressource en mosaïque.
[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. La seule valeur valide est D3D11_TILE_COPY_NO_OVERWRITE. Les autres valeurs ne sont pas significatives ici, bien que, par définition, la valeur D3D11_TILE_COPY_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE correspond essentiellement à ce que fait UpdateTiles , mais aux sources de la mémoire de l’application.
Valeur de retour
Aucune
Remarques
UpdateTiles supprime les opérations d’écriture dans les zones non mappées (sauf sur Tier_1 ressources en mosaïques, où l’écriture dans des zones non mappées n’est pas valide).
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 depuis des mipmaps que le matériel packpe dans une vignette, 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 en mémoire des données du côté source de l’opération de copie est linéaire en mémoire dans des vignettes de 64 Ko, que le matériel et le pilote swizzle et deswizzle par vignette, selon le cas, quand ils sont transférés vers et depuis 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 ID3D11DeviceContext2::CopyTiles ou UpdateTiles pour copier dans des mipmaps que le matériel regroupe. Vous pouvez simplement utiliser les API de copie et de mise à jour génériques (comme ID3D11DeviceContext1::CopySubresourceRegion1 et ID3D11DeviceContext1::UpdateSubresource1) pour copier individuellement de petits mipmaps. 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ïques, consultez Ressources en mosaïque.
Configuration requise
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 |