Syntaxe
Paramètres
NumObjectsType : UINT Le nombre d’objets du tableau ppObjects à rendre résidents pour l’appareil. ppObjects [in]
Type : ID3D12Pageable *const * Un 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 pour les objets suivants : tas de descripteurs, tas, ressources validées et tas de requêtes
Valeur de retour
Type : HRESULT Cette méthode retourne l’un des codes de retour Direct3D 12.Remarques
MakeResident charge les données associées à une ressource à partir du disque 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, en notant que cette gestion était effectuée automatiquement dans D3D11, mais qu’elle doit maintenant ê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 permet le déchargement. Certaines architectures de 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 s’il semble y avoir suffisamment de budget de résidence disponible. 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ée le même nombre de fois que MakeResident avant que Evict prenne effet. Les objets qui prennent en charge la résidence sont rendus résidents lors de leur création; un seul appel à Evict évincera donc réellement l’objet. Les applications doivent utiliser des clôtures pour s’assurer que le GPU n’utilise pas d’objets non résidents. MakeResident doit retourner avant que le GPU exécute une liste de commandes qui fait référence à l’objet. Evict doit être appelée après que le GPU a fini d’exécuter une liste de commandes qui fait 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.hBibliothèque : d3d12_xs.lib ou d3d12_x.lib
Plateformes prises en charge : consoles XBOX Series et famille XBOX One
