Passer au contenu principal
Rend des objets résidents pour l’appareil.

Syntaxe

Paramètres

NumObjects
Type : UINT
Nombre d’objets du tableau ppObjects à rendre résidents pour l’appareil. ppObjects [in]
Type : ID3D12Pageable *const *
Pointeur vers un bloc de mémoire qui contient un tableau de pointeurs d’interface ID3D12Pageable pour les objets. Même si la plupart des objets D3D12 héritent de ID3D12Pageable, les modifications de résidence ne sont prises en charge que sur les objets suivants : tas de descripteurs, tas, ressources validées et tas de requêtes

Valeur renvoyée

Type : HRESULT Cette méthode renvoie l’un des codes de retour Direct3D 12.

Remarques

MakeResident charge depuis le disque les données associées à une ressource et réalloue la mémoire à partir du pool de mémoire approprié de la ressource. Cette méthode doit être appelée sur l’objet qui possède la mémoire physique. Utilisez cette méthode, ainsi que Evict, pour gérer la mémoire vidéo du GPU. Notez que cette opération était effectuée automatiquement dans D3D11, mais qu’elle doit désormais être effectuée par l’application dans D3D12. MakeResident et Evict peuvent aider les applications à gérer le budget de résidence sur de nombreux adaptateurs. MakeResident charge explicitement les données en mémoire (page-in), puis empêche leur déchargement (page-out) afin que le GPU puisse accéder aux données. Evict autorise le déchargement. Certaines architectures GPU ne tirent aucun avantage de la manipulation de la résidence, en raison d’un espace d’adressage virtuel GPU insuffisant. Utilisez D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT et IDXGIAdapter3::QueryVideoMemoryInfo pour déterminer si l’espace VA GPU maximal par processus est trop petit ou à peu près de la même taille que le budget de résidence. Pour de telles architectures, le budget de résidence sera toujours limité par la quantité d’espace d’adressage virtuel GPU. Evict ne libérera aucun budget de résidence sur de tels systèmes. Les applications doivent gérer les échecs de MakeResident, même si le budget de résidence disponible semble suffisant. La fragmentation de la mémoire physique et les particularités de l’architecture de l’adaptateur peuvent empêcher l’utilisation de grandes plages contiguës. Les applications doivent libérer davantage de budget de résidence avant de réessayer. MakeResident utilise un décompte de références, de sorte que Evict doit être appelé autant de fois que MakeResident avant que Evict ne prenne effet. Les objets qui prennent en charge la résidence sont rendus résidents lors de leur création ; un seul appel à Evict suffit donc à évincer l’objet. Les applications doivent utiliser des fences pour garantir que le GPU n’utilise pas d’objets non résidents. MakeResident doit retourner avant que le GPU n’exécute une liste de commandes qui référence l’objet. Evict doit être appelé après que le GPU a terminé l’exécution d’une liste de commandes qui référence l’objet. Les objets évincés consomment toujours la même adresse virtuelle GPU et la même quantité d’espace d’adressage virtuel GPU. Par conséquent, les descripteurs de ressources et les autres références d’adresses virtuelles GPU ne sont pas invalidés après Evict.

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

ID3D12Device
Dernière modification le 6 octobre 2026