DXGKCB_CREATECONTEXTALLOCATION función de devolución de llamada (d3dkmddi.h)

DXGKCB_CREATECONTEXTALLOCATION asigna un contexto de GPU o un contexto específico del dispositivo.

Sintaxis

DXGKCB_CREATECONTEXTALLOCATION DxgkcbCreatecontextallocation;

NTSTATUS DxgkcbCreatecontextallocation(
  [in/out] INOUT_PDXGKARGCB_CREATECONTEXTALLOCATION unnamedParam1
)
{...}

Parámetros

[in/out] unnamedParam1

Puntero a una estructura de DXGKARGCB_CREATECONTEXTALLOCATION que especifica los atributos del contexto que se van a asignar.

Valor devuelto

DXGKCB_CREATECONTEXTALLOCATION devuelve STATUS_SUCCESS si se realiza correctamente. De lo contrario, devuelve uno de los códigos de error definidos en Ntstatus.h.

Observaciones

A partir de WDDM 1.2, los controladores de minipuerto de pantalla pueden asignar un contexto específico de GPU (asignación de contexto de GPU) o un contexto específico del dispositivo (asignación de contexto de dispositivo).

Una asignación de contexto de GPU permite a las GPU almacenar el estado de contexto de los búferes DMA que se adelantan en medio de su ejecución. Los controladores crean asignaciones asociadas a un contexto de GPU para guardar su estado cuando sea necesario. El sistema operativo garantiza que la asignación de contexto reside antes de que un comando de este contexto se coloque en la cola de ejecución de hardware de la GPU. El contexto permanecerá residente hasta que un comando de otro contexto se coloque en la cola de ejecución de hardware.

Además, el sistema operativo admite el cambio de contexto de GPU diferida suponiendo que el estado del contexto de hardware se conserva en la GPU después de completar un comando que pertenece al contexto. De este modo, los contextos solo se activan en la GPU cuando se envía un comando desde un contexto diferente a la cola de hardware.

Dxgkrnl implementa DXGKCB_XXX funciones. Para usar esta función de devolución de llamada, establezca los miembros de DXGKARGCB_ALLOCATEPAGESFORMDL y, a continuación, llame a DxgkCbCreateContextAllocation a través del DXGKRNL_INTERFACE.

Asignaciones de contexto de GPU

Las asignaciones de contexto de GPU solo se pueden realizar para contextos que no son del sistema. El controlador de minipuerto de pantalla crea estos contextos llamando a DxgkDdiCreateContext. Para crear un contexto que no sea del sistema, el controlador establece el miembro SystemContext de una estructura de DXGK_CREATECONTEXTFLAGS en cero y pasa un puntero a esta estructura en el parámetro pCreateContext .

Una asignación de contexto de dispositivo sigue un modelo similar, salvo que permanecerá residente para cualquier contexto que pertenezca al dispositivo al que está asociado. Este modelo permite a los controladores usar asignaciones de contexto de GPU para almacenar datos de área de guardado de contexto de GPU (CSA) y usar asignaciones de contexto de dispositivo para almacenar datos de tabla de páginas.

Asignaciones de contexto de dispositivo

Las asignaciones de contexto de dispositivo solo se pueden realizar para dispositivos que no son del sistema. El controlador de minipuerto de pantalla crea estos dispositivos llamando a DxgkDdiCreateDevice. Para crear un dispositivo que no sea del sistema, el controlador establece el miembro Flags.SystemDevice de una estructura de DXGK_CREATEDEVICEFLAGS en cero y pasa un puntero a esta estructura en el parámetro pCreateDevice .

El controlador de minipuerto de pantalla llama a DXGKCB_DESTROYCONTEXTALLOCATION para liberar los recursos de contexto asignados a través de DxgkCbCreateContextAllocation.

Direcciones virtuales para las asignaciones de contexto de destino

Para asegurarse de que el sistema operativo establece una dirección virtual válida (no NULL) para la asignación de contexto de destino (Miembro InitContextResource-Destination-VirtualAddress>> de la estructura DXGKARG_BUILDPAGINGBUFFER), cuando el controlador de miniporte de pantalla llama a DxgkCbCreateContextAllocation debe:

Requisitos

   
Cliente mínimo compatible Windows 8 (WDDM 1.2)
Servidor mínimo compatible Windows Server 2012
Plataforma de destino Escritorio
Header d3dkmddi.h (incluye D3dkmddi.h)
IRQL PASSIVE_LEVEL

Consulte también

DXGK_ALLOCATIONINFOFLAGS

DXGK_CREATECONTEXTFLAGS

DXGK_CREATEDEVICEFLAGS

DXGKARG_BUILDPAGINGBUFFER

DXGKARGCB_CREATECONTEXTALLOCATION

DXGKCB_DESTROYCONTEXTALLOCATION

DxgkDdiCreateContext

DxgkDdiCreateDevice

DXGKRNL_INTERFACE