PFND3DDDI_SETPRIORITYCB función de devolución de llamada (d3dumddi.h)

La función pfnSetPriorityCb establece el nivel de prioridad de un recurso o lista de asignaciones.

Sintaxis

PFND3DDDI_SETPRIORITYCB Pfnd3dddiSetprioritycb;

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

Parámetros

hDevice

Identificador del dispositivo de visualización (contexto de gráficos).

unnamedParam2

pData [in]

Puntero a una estructura de D3DDDICB_SETPRIORITY que describe el nivel de prioridad en el que se va a establecer un recurso o una lista de asignaciones.

Valor devuelto

pfnSetPriorityCb devuelve uno de los siguientes valores:

Código devuelto Descripción
S_OK El nivel de prioridad se estableció correctamente.
E_INVALIDARG Los parámetros se validaron y determinaron que son incorrectos.

Esta función también puede devolver otros valores HRESULT.

Comentarios

El controlador de pantalla en modo de usuario puede llamar a la función pfnSetPriorityCb para establecer la prioridad del recurso subyacente o la lista de asignaciones. Si se establece el nivel de prioridad de un recurso, todas las asignaciones que pertenecen al recurso se establecen en el nivel de prioridad especificado. Normalmente, el controlador de visualización en modo de usuario establece la prioridad de un recurso o una lista de asignaciones después de que el tiempo de ejecución de Microsoft Direct3D llame a la función SetPriority o SetResourcePriorityDXGI del controlador de visualización en modo de usuario para establecer la prioridad de expulsión de memoria para un recurso. Sin embargo, el controlador de pantalla en modo de usuario puede establecer la prioridad de las asignaciones en cualquier momento.

Después de que una aplicación solicite establecer el nivel de prioridad de una superficie, el controlador de visualización en modo de usuario debe establecer el recurso o la lista adecuados de asignaciones en el nivel de prioridad especificado por la aplicación.

Nota Los niveles de prioridad son solo una sugerencia para el administrador de memoria de vídeo; El administrador de memoria puede omitirlas en varias condiciones.
 
Una prioridad de asignación define la probabilidad de que la asignación permanezca residente y la probabilidad de que el administrador de memoria de vídeo intente respetar la preferencia del controlador para la colocación de la asignación. Los siguientes niveles de prioridad se definen en el archivo de encabezado D3dukmdt.h:

El controlador puede usar niveles de prioridad distintos de los valores definidos anteriores cuando corresponda. Por ejemplo, marcar una asignación con un nivel de prioridad de 0x78000001 indica que la asignación está ligeramente por encima de lo normal.

Ejemplos

En el ejemplo de código siguiente se muestra cómo establecer el nivel de prioridad.

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));
}

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows.
Plataforma de destino Escritorio
Encabezado d3dumddi.h (incluya D3dumddi.h)

Consulte también

D3DDDICB_SETPRIORITY

D3DDDI_DEVICECALLBACKS

DxgkCbCreateContextAllocation

SetPriority

SetResourcePriorityDXGI