PFND3DDDI_MAKERESIDENTCB fonction de rappel (d3dumddi.h)
pfnMakeResidentCb est utilisé pour indiquer au système d’exploitation d’ajouter une ressource à la liste de résidence de l’appareil et d’incrémenter le nombre de références de résidence sur cette allocation.
Syntaxe
PFND3DDDI_MAKERESIDENTCB Pfnd3dddiMakeresidentcb;
HRESULT Pfnd3dddiMakeresidentcb(
HANDLE hDevice,
D3DDDI_MAKERESIDENT *unnamedParam2
)
{...}
Paramètres
hDevice
Handle pour le périphérique d’affichage.
unnamedParam2
pData [in, out]
Pointeur vers une structure D3DDDI_MAKERESIDENT qui décrit les pages mémoire à rendre résidentes.
Valeur retournée
pfnMakeResidentCb retourne l’une des valeurs suivantes :
Code de retour | Description |
---|---|
S_OK | Toutes les allocations ont été rendues résidentes sur le GPU à la sortie de cette fonction et sont prêtes à être accessibles immédiatement. |
E_PENDING | Les allocations ont été ajoutées à la liste des conditions de résidence de l’appareil, mais les opérations de pagination sont toujours en attente avant de pouvoir y accéder. Dans ce cas, le pilote en mode utilisateur doit attendre que PagingFenceValue sur l’objet de synchronisation de clôture surveillé associé à hPagingQueue soit signalé avant d’envoyer des mémoires tampons de commande qui référencent des allocations ou une erreur de page GPU. |
E_OUTOFMEMORY | Le gestionnaire de mémoire vidéo ne peut pas rendre toutes les allocations demandées résidentes. Dans ce cas, aucune allocation dans la liste fournie ne verra son nombre de résidences modifié. En d’autres mots, il s’agit d’une opération atomique où toutes les allocations obtiennent leur nombre de résidences augmentées, ou aucune d’entre elles. De plus, NumBytesToTrim indique au pilote combien d’octets doivent être supprimés de la liste des conditions de résidence des appareils, en appelant pfnEvictCb, avant de tenter de réaffecter les allocations ayant échoué. Le budget de mémoire associé à une application peut changer de façon asynchrone avec l’application en cours d’exécution. Par conséquent, la réduction du nombre d’octets demandé ne garantira pas que la prochaine tentative d’affectations résidente réussira, car le budget mémoire de l’application a peut-être diminué. Pour cette raison, un pilote doit s’assurer qu’il tente une demande de résidence dans une boucle, en coupant entre chaque itération, jusqu’à ce que la requête aboutisse ou que le pilote ait supprimé tout ce qu’il peut pour avancer sur une seule opération et utiliser la ressource requise lors de cette dernière tentative. Si cette dernière tentative échoue, l’appareil sous-jacent est mis en erreur et le pilote en mode utilisateur doit abandonner la demande et revenir à l’application. Aucune autre soumission à l’un des contextes appartenant à un appareil en erreur ne sera autorisée par le noyau. Pour le pilote en mode utilisateur DirectX 12.0, pfnMakeResidentCb se comporte légèrement différemment, car il n’est plus responsable de la suppression ou de la pagination dans les allocations. Cela permet de s’assurer que l’état de toutes les allocations après le retour de l’appel reste le même qu’avant l’appel. Cela signifie que si E_OUTOFMEMORY est retourné par la fonction : - Toutes les allocations restent dans leur état d’origine. - Les allocations n’ont pas été rendues résidentes. - PagingFenceValue doit être ignoré. Si le pilote doit effectuer des appels pfnMakeResidentCb dans plusieurs lots pour prendre en charge la traduction de ressource en allocation, le pilote doit annuler tous les appels antérieurs à pfnMakeResidentCb avec des appels équivalents à pfnEvictCb et propager le code d’erreur au runtime. |
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10 |
Serveur minimal pris en charge | Windows Server 2016 |
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | d3dumddi.h (inclure D3dumddi.h) |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour