Compartir a través de


Adelantamiento de GPU

Había disponible un modelo de adelantamiento de GPU más reciente a partir de Windows 8. En este modelo, el sistema operativo ya no permite deshabilitar el adelantamiento de los paquetes de acceso directo a memoria de GPU (DMA) y garantiza que las solicitudes de adelantamiento se enviarán a la GPU antes de que se inicie un proceso de detección y recuperación (TDR) de tiempo de espera .

Requisito Descripción
Versión mínima del controlador de pantalla de Windows (WDDM) 1.2
Versión mínima de Windows 8
Implementación del controlador: solo gráficos completos y representación Mandatory
Requisitos y pruebas de WHLK Device.Graphics... Prueba de adelantamiento, Device.Graphics... FlipOnVSyncMmIo

Si los paquetes de larga duración no se pueden adelantar correctamente, el trabajo de GPU de alta prioridad, como el trabajo requerido por el Administrador de ventanas de escritorio (DWM), se puede retrasar, lo que da lugar a problemas durante las transiciones de ventana y las animaciones. Además, los paquetes de GPU de larga duración que no se pueden adelantar pueden hacer que un proceso de TDR restablezca repetidamente la GPU y, finalmente, se puede producir una comprobación de errores del sistema.

Nota Todos los controladores de minipuerto de pantalla WDDM 1.2 deben admitir el modelo de adelantamiento Windows 8. Sin embargo, cuando está en funcionamiento, los controladores WDDM 1.2 también pueden rechazar el modelo de adelantamiento Windows 8 y conservar el comportamiento de Windows 7 mediante el programador del subsistema del kernel de gráficos de Microsoft DirectX.

Interfaces de controlador de dispositivo de adelantamiento de GPU (DDIs)

Las siguientes interfaces de controlador de dispositivo (DDIs) están disponibles para que el controlador de miniporte de pantalla implemente el modelo de adelantamiento de GPU Windows 8.

Visualización de la implementación del controlador de minipuerto

Siga estos pasos generales para implementar el modelo de adelantamiento de GPU de Windows 8 en el controlador de minipuerto de pantalla:

  1. Compile el controlador con encabezados que tengan DXGKDDI_INTERFACE_VERSION>= DXGKDDI_INTERFACE_VERSION_WIN8.
  2. Declare la compatibilidad con el modelo de adelantamiento de GPU de Windows 8 estableciendo los miembros PreemptionAware y MultiEngineAware de la estructura DXGK_VIDSCHCAPS en 1. Para admitir el modelo de adelantamiento de Windows 7, establezca PreemptionAware en cero.
  3. Especifique el nivel admitido de granularidad de adelantamiento en la estructura D3DKMDT_PREEMPTION_CAPS , que toma valores constantes de las enumeraciones D3DKMDT_GRAPHICS_PREEMPTION_GRANULARITY y D3DKMDT_COMPUTE_PREEMPTION_GRANULARITY .
  4. Si el hardware admite el cambio de contexto diferido, envíe un búfer de longitud cero a la función DxgkDdiSubmitCommand y establezca el miembro pSubmitCommand-Flags-ContextSwitch>> en 1. Anote la discusión en el miembro ContextSwitch de la estructura DXGK_SUBMITCOMMANDFLAGS .
  5. Establezca asignaciones de contexto de GPU y asignaciones de contexto de dispositivo mediante una llamada a la función DxgkCbCreateContextAllocation . Tenga en cuenta las instrucciones y restricciones específicas dadas en Comentarios para la función.
  6. Llame a la función DxgkCbDestroyContextAllocation para destruir las asignaciones de contexto de GPU y las asignaciones de contexto de dispositivo que se crearon con DxgkCbCreateContextAllocation.
  7. Al preparar el búfer DMA en respuesta a una llamada a la función DxgkDdiBuildPagingBuffer , inicialice el recurso de contexto rellenando la estructura interna InitContextResource dentro de la estructura DXGKARG_BUILDPAGINGBUFFER . Si los recursos de contexto se expulsan o se reubican, el administrador de memoria de vídeo conservará el contenido de los recursos de contexto.
  8. El controlador debe admitir el desplazamiento de E/S asignado a memoria en la siguiente sincronización vertical. En Windows 8, el programador de GPU intenta adelantar el hardware incluso si los volteos están pendientes. Por lo tanto, para evitar el desmontaje y la representación de artefactos, el controlador debe admitir el modelo de volteo de E/S asignado a memoria y debe establecer el miembro FlipOnVSyncMmIo de la estructura de DXGK_FLIPCAPS en 1 y admitir las operaciones descritas en FlipOnVSyncMmIo.

Consideraciones de asignación de memoria en la implementación

Cree un controlador sólido que admita el modelo de adelantamiento de GPU de Windows 8 y proporcione una experiencia de usuario de calidad siguiendo estas instrucciones:

  • Solicite el adelantamiento del búfer de DMA medio de la GPU cuando el programador del programador de kernel de gráficos directX (Dxgkrnl) envía un comando de adelantamiento. Los dispositivos de hardware que tienen una granularidad más fina del adelantamiento del búfer de DMA mid-DMA deben producir una mejor experiencia del cliente.
  • Permitir que se vuelvan a usar los identificadores de barrera de comandos de paginación: si una solicitud de adelantamiento dio lugar a comandos de paginación en la cola de hardware, el programador dxgkrnl volverá a enviar comandos de paginación previamente reemplazados con los mismos identificadores de barrera que se usaron originalmente para ellos y los comandos de paginación se programarán antes de cualquier otro comando de ese motor. Los comandos que no son de paginación se volverán a enviar con identificadores de barrera recién asignados.
  • Proporcione una lista de ubicaciones de revisión para los búferes DMA divididos; consulte División de un búfer DMA.
  • Hay disponible un modo de verificación, denominado detección de fugas de enlace, que recorre la lista de ubicaciones de revisión y rechaza los paquetes que no se desenladan o que no programan asignaciones para cada paquete dividido. Algunas direcciones virtuales admiten hardware, lo que permite un nivel adicional de direccionamiento indirecto que puede hacer que esta comprobación sea innecesaria. En tal caso, para indicar que el controlador no participa en el modo de verificación, establezca el miembro NoDmaPatching de la estructura DXGK_VIDSCHCAPS en 1.
  • En Windows 7, el programador dxgkrnl garantiza que todos los paquetes DMA divididos que corresponden al mismo comando de representación se ejecutan secuencialmente sin cambiar a otro contexto de representación. En el modelo de adelantamiento de Windows 8, el programador puede ejecutar paquetes de representación desde un contexto diferente entre dos paquetes divididos que corresponden al mismo comando de representación. Como consecuencia, los controladores que conocen el adelantamiento deben controlar un envío de paquetes DMA dividido/parcial de la misma manera que un envío de paquetes completo normal. En concreto, el estado de GPU debe guardarse o restaurarse en el límite de dichos envíos.
  • Un controlador compatible con el adelantamiento no debe cambiar el contenido de un búfer DMA dividido cuando se transmite a varios adaptadores en el modo de adaptador de pantalla vinculado (LDA), donde varias GPU físicas están vinculadas para formar una GPU virtual única, más rápida y rápida. Esto se debe a que, en el modelo de adelantamiento de Windows 8, el programador dxgkrnl ya no garantiza la ejecución sincrónica de una secuencia de paquetes dividida sin cambiar a otro contexto. Un controlador que cambió el contenido de un paquete DMA dividido ponería en peligro la integridad de los datos del paquete porque si el paquete se ejecutara en otro motor, funcionaría en la misma copia de los datos del búfer de DMA.
  • En el modelo de adelantamiento de GPU Windows 8, el programador dxgkrnl habilita el adelantamiento para los paquetes que tienen asociadas primitivas de sincronización de "señal al enviar". Si un dispositivo usa primitivos de sincronización de "señal en envío" junto con estados de espera basados en hardware, debe admitir la capacidad de adelantar una instrucción de espera antes de que se cumpla la condición de espera.

Requisitos de certificación de hardware

Para obtener información sobre los requisitos que deben cumplir los dispositivos de hardware al implementar esta característica, consulte la documentación de WHCK pertinente en Device.Graphics... Prueba de adelantamiento y Device.Graphics... FlipOnVSyncMmIo.

Consulte Características de WDDM 1.2 para obtener una revisión de las características agregadas con Windows 8.