Partager via


Redimensionnement d’un pool de vignettes

Redimensionnez un pool de vignettes pour développer un pool de vignettes si l’application a besoin d’un ensemble plus fonctionnel pour le mappage des ressources de diffusion en continu, ou pour réduire si moins d’espace est nécessaire. Une autre option pour les applications consiste à allouer des pools de vignettes supplémentaires pour les nouvelles ressources de streaming. Toutefois, si une seule ressource de diffusion en continu a besoin d’un espace supérieur à celui initialement disponible dans son pool de mosaïques, la croissance du pool de vignettes est une bonne option. Une ressource de streaming ne peut pas avoir de mappages dans plusieurs pools de vignettes en même temps.

Lorsqu’un pool de vignettes est agrandi, des vignettes supplémentaires sont ajoutées à la fin via une ou plusieurs nouvelles allocations par le pilote d’affichage. Cette répartition en allocations n’est pas visible pour l’application. La mémoire existante dans le pool de vignettes reste intacte et les mappages de ressources de diffusion en continu existants dans cette mémoire restent intacts.

Lorsqu’un pool de vignettes est réduit, les vignettes sont supprimées de la fin. Les vignettes sont supprimées même en dessous de la taille d’allocation initiale, jusqu’à 0, ce qui 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. Le pilote d’affichage conserve la mémoire tant que les mappages à n’importe quelle partie des allocations que le pilote utilise pour la mémoire du pool de mosaïques restent. Si après la réduction de la mémoire a été conservée en vie, car les mappages de vignettes pointent vers celui-ci et que le pool de mosaïques est réinscrire (par n’importe quelle quantité), la mémoire existante est réutilisée en premier avant que des allocations supplémentaires ne se produisent pour traiter la taille de l’opération de croissance.

Pour pouvoir enregistrer de la mémoire, une application doit non seulement réduire un pool de vignettes, mais également supprimer/remapper les mappages existants au-delà de la fin de la nouvelle taille de pool de vignettes plus petite.

L’acte de réduction (et de suppression des mappages) ne produit pas nécessairement d’é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 d’affichage pour le pool de vignettes. Lorsque la réduction est suffisante pour rendre une allocation de pilote d’affichage inutilisée, le pilote d’affichage peut le libérer. Si un pool de vignettes a été agrandi, la réduction des tailles précédentes (et la suppression/remapping des mappages de vignettes correspondants) est plus susceptible de générer des économies de mémoire, mais pas garantie dans le cas où les tailles ne s’alignent pas exactement sur les tailles d’allocation sous-jacentes choisies par le pilote d’affichage.

Les mappages se trouvent dans un pool de vignettes