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 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.
Comentarios
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 que las GPU almacenen el estado de contexto de los búferes DMA que se adelanten 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 resida antes de colocar un comando de este contexto en la cola de ejecución de hardware de la GPU. El contexto permanecerá residente hasta que se coloque un comando de otro contexto 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 de contexto de hardware se conserva en la GPU después de completar un comando que pertenece al contexto. De esta manera, los contextos solo se activan en la GPU cuando se envía un comando de un contexto diferente a la cola de hardware.
DXGKCB_XXX funciones se implementan mediante Dxgkrnl. 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 mediante una llamada 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 mediante una llamada 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 (InitContextResource-Destination-VirtualAddress>> miembro de la estructura DXGKARG_BUILDPAGINGBUFFER), cuando el controlador de miniporte de pantalla llama a DxgkCbCreateContextAllocation, debe:
- Establezca los miembros CpuVisible y Protected de la estructura DXGK_ALLOCATIONINFOFLAGS .
- Página de la asignación solo a segmentos de apertura estableciendo el miembro SupportedSegmentSet de la estructura DXGKARGCB_CREATECONTEXTALLOCATION .
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 8 (WDDM 1.2) |
Servidor mínimo compatible | Windows Server 2012 |
Plataforma de destino | Escritorio |
Encabezado | d3dkmddi.h (incluya D3dkmddi.h) |
IRQL | PASSIVE_LEVEL |
Consulte también
DXGKARGCB_CREATECONTEXTALLOCATION