Partager via


PFND3DDDI_SETPRIORITYCB fonction de rappel (d3dumddi.h)

La fonction pfnSetPriorityCb définit le niveau de priorité d’une ressource ou d’une liste d’allocations.

Syntaxe

PFND3DDDI_SETPRIORITYCB Pfnd3dddiSetprioritycb;

HRESULT Pfnd3dddiSetprioritycb(
  HANDLE hDevice,
  D3DDDICB_SETPRIORITY *unnamedParam2
)
{...}

Paramètres

hDevice

Handle pour le périphérique d’affichage (contexte graphique).

unnamedParam2

pData [in]

Pointeur vers une structure de D3DDDICB_SETPRIORITY qui décrit le niveau de priorité auquel définir une ressource ou une liste d’allocations.

Valeur retournée

pfnSetPriorityCb retourne l’une des valeurs suivantes :

Code de retour Description
S_OK Le niveau de priorité a été correctement défini.
E_INVALIDARG Les paramètres ont été validés et déterminés comme incorrects.

Cette fonction peut également retourner d’autres valeurs HRESULT.

Remarques

Le pilote d’affichage en mode utilisateur peut appeler la fonction pfnSetPriorityCb pour définir la priorité de la ressource sous-jacente ou de la liste d’allocations. Si le niveau de priorité d’une ressource est défini, toutes les allocations qui appartiennent à la ressource sont définies sur le niveau de priorité spécifié. En règle générale, le pilote d’affichage en mode utilisateur définit la priorité d’une ressource ou d’une liste d’allocations après que le runtime Microsoft Direct3D a appelé la fonction SetPriority ou SetResourcePriorityDXGI du pilote d’affichage en mode utilisateur pour définir la priorité d’éviction de la mémoire pour une ressource. Toutefois, le pilote d’affichage en mode utilisateur peut définir la priorité des allocations à tout moment.

Une fois qu’une application demande à définir le niveau de priorité d’une surface, le pilote d’affichage en mode utilisateur doit définir la ressource ou la liste d’allocations appropriée sur le niveau de priorité spécifié par l’application.

Note Les niveaux de priorité ne sont qu’un indicateur pour le gestionnaire de mémoire vidéo ; elles peuvent être ignorées par le gestionnaire de mémoire dans différentes conditions.
 
Une priorité d’allocation définit à la fois la probabilité que l’allocation reste résidente et la probabilité que le gestionnaire de mémoire vidéo essaie de respecter la préférence du pilote pour le placement de l’allocation. Les niveaux de priorité suivants sont définis dans le fichier d’en-tête D3dukmdt.h :

Le pilote peut utiliser d’autres niveaux de priorité que les valeurs définies précédentes le cas échéant. Par exemple, le marquage d’une allocation avec un niveau de priorité de 0x78000001 indique que l’allocation est légèrement supérieure à la normale.

Exemples

L’exemple de code suivant montre comment définir le niveau de priorité.

HRESULT CD3DContext::SetPriority(CONST D3DDDIARG_SETPRIORITY* pSetPriority) {
    DWORD  dwSurfaceHandle = (DWORD)(DWORD_PTR)pSetPriority->hResource;
    CResource   &res = m_RTbl[dwSurfaceHandle];
    D3DDDICB_SETPRIORITY    setPri;
    UINT                    priority;

    priority = pSetPriority->Priority;

    memset(&setPri, 0, sizeof(setPri));

    setPri.hResource   = res.m_hResRuntime;
    setPri.pPriorities = &priority;

    return (m_d3dCallbacks.pfnSetPriorityCb(m_hD3D, &setPri));
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows Vista et versions ultérieures des systèmes d’exploitation Windows.
Plateforme cible Desktop (Expérience utilisateur)
En-tête d3dumddi.h (inclure D3dumddi.h)

Voir aussi

D3DDDICB_SETPRIORITY

D3DDDI_DEVICECALLBACKS

DxgkCbCreateContextAllocation

SetPriority

SetResourcePriorityDXGI