Partager via


Compression de mipmaps

Selon le niveau de prise en charge des ressources en mosaïques, les mipmaps avec certaines dimensions ne suivent pas les formes de vignette standard et sont considérés comme étant regroupés les uns avec les autres d’une manière opaque pour l’application. Les niveaux de prise en charge supérieurs ont des garanties plus larges quant aux types de dimensions de surface qui correspondent aux formes de vignette standard (et peuvent donc être mappés individuellement par les applications).

Ce qui peut varier d’une implémentation à l’autre, c’est que, compte tenu des dimensions, du format, du nombre de mipmaps et des tranches de tableau d’une ressource en mosaïque, un certain nombre de M de mips (par tranche de tableau) peuvent être emballés dans des vignettes nombre N. L’API ID3D11Device2::GetResourceTiling existe pour permettre au pilote de signaler à l’application ce que sont M et N (entre autres détails sur la surface signalée par cette API, qui sont standard et ne varient pas selon le fournisseur de matériel). L’ensemble de vignettes pour les mips emballés est toujours de 64 Ko et peut être mappé individuellement à des emplacements disparates dans un pool de vignettes. Mais la forme des pixels des vignettes et la façon dont les mipmaps s’ajustent dans l’ensemble des vignettes sont spécifiques à un fournisseur de matériel et trop complexes à exposer. Par conséquent, les applications doivent mapper toutes les vignettes désignées comme étant empaquetées, ou aucune d’entre elles, à la fois. Sinon, le comportement d’accès à la ressource en mosaïque n’est pas défini.

Pour les surfaces matricielles, l’ensemble de mips empaquetés et le nombre de vignettes empaquetées stockant ces mips (M et N décrits ci-dessus) s’appliquent individuellement à chaque tranche de tableau.

Les API dédiées pour la copie de vignettes (ID3D11DeviceContext2::CopyTiles et ID3D11DeviceContext2::UpdateTiles) ne peuvent pas accéder aux mips packed. Les applications qui souhaitent copier des données vers et à partir de mips packés peuvent le faire à l’aide de toutes les API spécifiques aux ressources non mosaïques pour la copie et le rendu sur des surfaces.

Comment la zone d’une ressource en mosaïque est en mosaïque