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

Redimensionne un pool de vignettes.

Syntaxe

HRESULT ResizeTilePool(
  [in] ID3D11Buffer *pTilePool,
  [in] UINT64       NewSizeInBytes
);

Paramètres

[in] pTilePool

Type : ID3D11Buffer*

Pointeur vers un ID3D11Buffer pour le pool de vignettes à redimensionner.

[in] NewSizeInBytes

Type : UINT64

Nouvelle taille en octets du pool de vignettes. La taille doit être un multiple de 64 Ko ou 0.

Valeur retournée

Type : HRESULT

Retourne S_OK en cas de réussite ; dans le cas contraire, retourne l’un des éléments suivants :

  • Retourne E_INVALIDARG si la nouvelle taille du pool de vignettes n’est pas un multiple de 64 Ko ou 0.
  • Retourne E_OUTOFMEMORY si l’appel entraîne le fait que le pilote doit allouer de l’espace pour les nouveaux mappages de tables de pages, mais manque de mémoire.
  • Retourne DXGI_ERROR_DEVICE_REMOVED si le carte vidéo a été physiquement supprimé du système ou si une mise à niveau du pilote pour la carte vidéo s’est produite.
Pour E_INVALIDARG ou E_OUTOFMEMORY, le pool de vignettes existant reste inchangé, ce qui inclut les mappages existants.

Remarques

ResizeTilePool augmente ou diminue la taille du pool de vignettes selon que l’application a besoin de plus ou moins d’un ensemble de travail pour les ressources en mosaïques qui y sont mappées. Une application peut allouer des pools de vignettes supplémentaires pour les nouvelles ressources en mosaïques, mais si une seule ressource en mosaïque a besoin de plus d’espace qu’initialement disponible dans son pool de vignettes, l’application peut augmenter la taille du pool de vignettes de la ressource. Une ressource en mosaïque ne peut pas avoir de mappages dans plusieurs pools de vignettes simultanément.

Lorsque vous augmentez la taille d’un pool de vignettes, des vignettes supplémentaires sont ajoutées à la fin du pool de vignettes via une ou plusieurs nouvelles allocations par le pilote ; votre application ne peut pas détecter la répartition dans les nouvelles allocations. La mémoire existante dans le pool de vignettes n’est pas affectée, et les mappages de ressources en mosaïques existants dans cette mémoire restent intacts.

Lorsque vous réduisez la taille d’un pool de vignettes, les vignettes sont supprimées de la fin (cela est autorisé même en dessous de la taille d’allocation initiale, jusqu’à 0). Cela signifie que les nouveaux mappages ne peuvent pas être effectués au-delà de la nouvelle taille. Toutefois, les mappages existants au-delà de la fin de la nouvelle taille restent intacts et utilisables. La mémoire reste active tant que les mappages à n’importe quelle partie des allocations utilisées pour la mémoire du pool de mosaïques restent. Si, après avoir diminué, une partie de la mémoire a été maintenue active parce que les mappages de vignettes pointent vers elle et que le pool de vignettes est à nouveau augmenté (de n’importe quelle quantité), la mémoire existante est réutilisée d’abord avant que des allocations supplémentaires ne se produisent pour traiter la taille de l’augmentation.

Pour pouvoir économiser de la mémoire, une application doit non seulement diminuer un pool de vignettes, mais également supprimer et remapper les mappages existants au-delà de la fin du nouveau pool de vignettes plus petit.

Le fait de diminuer (et de supprimer les mappages) ne produit pas nécessairement des économies de mémoire immédiates. La libération de la mémoire dépend de la précision des allocations sous-jacentes du pilote pour le pool de vignettes. Lorsqu’une diminution de la taille d’un pool de vignettes est suffisante pour rendre une allocation de pilotes inutilisée, le pilote peut libérer l’allocation. Si un pool de vignettes a été augmenté et que vous réduisez ensuite les tailles précédentes (et supprimez et remappagez les mappages de vignettes en conséquence), vous obtiendrez probablement des économies de mémoire. Toutefois, ce scénario n’est pas garanti dans le cas où les tailles ne s’alignent pas exactement sur les tailles d’allocation sous-jacentes choisies par le pilote.

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