Compartir a través de


Características de WDDM 2.1

En este artículo se proporcionan detalles sobre las características y mejoras del modelo de controladores de pantalla de Windows (WDDM) versión 2.1, que está disponible a partir de Windows 10 Anniversary Edition (Windows 10, versión 1607).

WDDM 2.1 es opcional. Si se implementa, es una colección de funcionalidades de controlador obligatorias y opcionales. Un controlador que admita cualquiera de estas funcionalidades de WDDM 2.1 debe admitir todas las obligatorias. Las pruebas del Windows Hardware Lab Kit (HLK) pueden validar la compatibilidad, pero Dxgkrnl comprueba si hay coherencia en las funcionalidades y las DDI.

Tabla de requisitos de WDDM 2.1

Característica Aplicabilidad
Mejoras de oferta y reclamación Mandatory
Administración de memoria de vídeo Opcionales
Mejoras de confiabilidad de contenido protegido de HW Seleccionar hardware
Compatibilidad de aplicaciones con GameDVR de Windows Mandatory
Pantalla indirecta Seleccionar hardware
Almacén de controladores e instalación en paralelo Mandatory
Uso compartido de superficie de memoria de DirectX para escenarios de cámara o captura Mandatory

WDDM 2.1 admite las siguientes versiones de 3D: D3D9, D3D10, D3D10.1, D3D11, D3D11.x, D3D12

Mejoras de oferta y reclamación

La función de devolución de llamada PFND3DDDI_RECLAIMALLOCATIONS3CB se agregó para reducir la superficie de memoria de las aplicaciones que se ejecutan en modo en segundo plano. Esta interfaz permite a las aplicaciones ofrecer recursos que son aceptables para descomprometerse totalmente al pasar a segundo plano. Como resultado, el Administrador de ciclo de vida de los procesos puede reclamar más memoria de las aplicaciones en segundo plano que usan DirectX, lo que conduce a menos finalizaciones de aplicaciones en segundo plano cuando están bajo presión de memoria.

Otros cambios de DDI:

Para obtener más información sobre los recursos de oferta y reclamación, consulte Cambios en oferta y reclamación.

Compatibilidad de aplicaciones con GameDVR de Windows

La edición aniversario de Windows 10 incluye la capacidad mejorada de usar la barra de juegos de Windows y GameDVR con juegos a pantalla completa.

Los controladores WDDM 2.1 son necesarios para admitir una característica de rendimiento denominada procesamiento por lotes de presencia, que agrega compatibilidad con varios subprocesos para cadenas de intercambio de modelos invertidos. Esta característica esencial garantiza que los juegos a pantalla completa con la barra de juegos se ejecuten en el mismo nivel de rendimiento que en versiones anteriores de Windows.

Se agregaron las siguientes DDI para habilitar esta característica:

Pantalla indirecta

En WDDM 2.1, la pantalla indirecta permite que las pantallas conectadas a USB participen en todas las mismas experiencias de usuario que cualquier otro monitor. Además, un controlador de pantalla indirecta (IDD) es un controlador en modo de usuario, que es más sencillo de desarrollar que un controlador en modo kernel y, como resultado, contribuye a aumentar la confiabilidad general del sistema.

En WDDM 2.1, se habilitan las siguientes características o experiencias de pantalla USB:

  • Cuando una pantalla USB está conectada a una plataforma Windows o actualiza los sistemas operativos, los controladores adecuados se descargan e instalan desde Windows Update.

  • La conexión de monitores al hardware de pantalla USB detectará y establecerá la topología de monitor correcta, la resolución y PPP.

  • Los usuarios pueden cambiar la resolución y el escalado del monitor.

  • Los usuarios pueden desconectar pantallas USB y volver a conectarlas sin efectos secundarios inesperados.

  • La topología del monitor se conserva mediante la desconexión y la reconexión al mismo monitor.

  • Las pantallas USB funcionan correctamente en varios estados de energía, incluidas la suspensión y la hibernación.

Para más información sobre la pantalla indirecta, consulte Información general sobre el modelo de controlador de pantalla indirecta.

Almacén de controladores e instalación en paralelo

WDDM 2.1 presenta la instalación de controladores de gráficos a través del almacén de controladores. Este mecanismo de instalación de controladores de gráficos mejora la resistencia de las actualizaciones de controladores de Windows Update. Elimina las discrepancias de la versión del archivo del controlador que dan lugar a inestabilidades del sistema y a los reinicios iniciados por el usuario. Cada actualización posterior del controlador se ejecutará directamente desde su ubicación única en el almacén de controladores (es decir, System32\DriverStore\FileRepository\[…]), lo que evita que el archivo de controlador se sobrescriba y no coincida.

La implementación de características del almacén de controladores requiere cambios en el archivo INF del controlador de gráficos para asegurarse de que los archivos del controlador se copian en el repositorio de controladores único. Los cambios de INF se explican con más detalle en Requisitos de INF.

DXIL

WDDM 2.1 presenta la transición de la pila del compilador de sombreador de GPU de DirectX Byte Code (DXBC) a DirectX Intermediate Language (DXIL), un formato más reciente para transmitir instrucciones del sombreador a la GPU. La transición a DXIL ofrece las siguientes ventajas a los desarrolladores:

  • Programación. La facilidad de desarrollo se ha mejorado y la complejidad del proceso de creación del sombreador se reduce para los desarrolladores al minimizar las diferencias entre la sintaxis de programación de GPU y los lenguajes de CPU con los que los desarrolladores están familiarizados.

  • Compilador de mayor rendimiento:

    • El rendimiento del sombreador en tiempo de ejecución se ha habilitado para ofrecer un rendimiento mejorado.
    • DXIL proporciona un conjunto de intrínsecos que permite compartir datos entre los carriles de los procesadores SIMD en GPU.
  • Flexibilidad de flujo de trabajo: DXIL permite a los desarrolladores controlar sus propias herramientas y pasos de optimización personalizados y elegir qué pasos de compilación se aplican en tiempo de compilación frente al tiempo de ejecución.

  • Características avanzadas de lenguaje: un lenguaje evolucionado proporciona características clave que eliminan las diferencias entre el código de GPU y el código de CPU, y aplanan la curva de aprendizaje para los programadores de GPU.

Con estas características centradas en proporcionar ventajas a los desarrolladores, los usuarios finales ven las ventajas en mejorar el rendimiento de los juegos nuevos o actualizados incluso cuando se ejecutan en hardware existente.

Uso compartido de superficie de memoria de DirectX para escenarios de cámara o captura

En WDDM 2.1, se introdujo un componente de servidor de fotogramas para compartir una cámara o un dispositivo de captura en varios procesos simultáneamente. Los fotogramas capturados se pueden guardar en una ubicación de memoria desde la que se pueden leer varias aplicaciones, en lugar de copiar los datos de imagen entre procesos y coprocesos varias veces. Esta característica proporciona una administración más eficaz de imágenes capturadas en varios procesos, ahorro de energía, reducción de ancho de banda y reducción de latencia para controladores y hardware compatibles con WDDM 2.1. Los resultados finales son mejoras de rendimiento para aplicaciones y usuarios.

El servidor de fotogramas asigna una imagen capturada como memoria compartida entre procesos y comparte esta memoria para los procesos que solicitan acceso. Dado que el servidor de fotogramas transmite la textura a varios procesos de cliente, la textura debe admitir la lectura simultánea. Actualmente, se admiten texturas NV12 para este propósito.

Almacenamiento en caché y biblioteca del objeto de estado de canalización (PSSE)

El objeto de estado de canalización (ODBC) es una interfaz que representa las instrucciones y los recursos de canalización de gráficos (también conocidos como estado) como un objeto unificado para reducir la discrepancia entre D3D y las descomposiciones del controlador del estado. La ejecución de aplicaciones y juegos gráficamente exigentes requiere la creación de un gran número de SPO. PSo introdujo en D3D12.

La biblioteca y el almacenamiento en caché de WDDM 2.1 permiten que las aplicaciones de juegos almacenen un PSO en el almacenamiento físico después de crearse durante la ejecución inicial. Esta funcionalidad permite que el entorno de ejecución D3D recupere los PSO creados previamente de la biblioteca en instancias futuras, lo que reduce el tiempo de extracción de PSO. Por ejemplo, al ejecutar un juego por primera vez o después de reiniciar el equipo, el contenido se cargará desde la biblioteca física como PSO guardados.

Inicio de marcas de tiempo de GPU de canalización

En WDDM 2.1, se introdujo la capacidad de recuperar las marcas de tiempo del inicio de eventos de gráficos en la canalización de GPU. Esta característica, que se usa con las marcas de tiempo de finalización de la canalización, proporciona a los desarrolladores una visualización clara y detallada de la paralelización, la canalización y el tiempo de las actividades de la aplicación que se producen en la GPU. Los desarrolladores pueden optimizar aún más su código e investigar las ineficacias y otros problemas de rendimiento cuando se proporcionan con el tiempo de ejecución de cada evento.

Esta característica contribuye a permitir la recopilación de datos de rendimiento de la GPU "en tiempo real y con poca sobrecarga" y, al mismo tiempo, proporciona información suficiente para visualizar y medir las cargas de trabajo en las GPU. El objetivo de la característica es proporcionar suficiente información para reconstruir el orden exacto y la duración de las operaciones ejecutadas por la GPU. Con esta información, las herramientas pueden visualizar el paralelismo y la canalización con un motor, medir las cargas de trabajo de GPU e identificar posibles problemas de sincronización.

Visualización de microcódigo de GPU

WDDM 2.1 permite a los desarrolladores optimizar aún más sus sombreadores mediante la presentación de la visualización del microcódigo de GPU. Los desarrolladores programan la canalización de gráficos mediante la creación de sombreadores en lenguaje de sombreador de alto nivel (HLSL), que luego se compilan en un lenguaje intermedio para el controlador de GPU. El controlador ejecuta compilaciones y optimizaciones adicionales para convertir este código en instrucciones específicas de GPU que seguían siendo opacas para los desarrolladores. Con esta característica, los desarrolladores presentan código específico de GPU legible para evaluar la extensión de su optimización y velocidad del sombreador.

Esta característica permite al controlador en modo de usuario (UMD) comentar cada fase programable de la canalización de gráficos (sombreadores) y devolver información accionable sobre el uso o el uso incorrecto del programador de esos sombreadores. El microcódigo específico de GPU se desensambla y se presenta en formato de cadena legible junto con los comentarios de UMD. Los desarrolladores pueden ver su asignación de código HLSL al código de GPU legible en paralelo, lo que les permite modificar dinámicamente su código y ver los resultados de optimización del compilador en el lado del código de GPU.

Determinación de la versión de WDDM

Límites de WDDM 2.1

Los controladores notifican compatibilidad con WDDM 2.1 a través de DXGK_DRIVERCAPS::WDDMVersion con la constante de versión:

DXGK_WDDMVERSION::DXGKDDI_WDDMv2_1 = 0x2100

Dxgkrnl no usa el límite de WDDMVersion como una manera de determinar qué características se admiten; esa tarea se deja a otros límites o presencia de DDI. Sin embargo, si el controlador informa de la compatibilidad con WDDM 2.1 a través del límite de WDDMVersion, Dxgkrnl valida que los límites o DDI requeridos por WDDM 2.1 están presentes y no pueden crear el adaptador si no lo están. Los límites incoherentes producen un error al crear el adaptador o segmento.

Nota:

Las aplicaciones, existentes o más recientes, no deben tener que consultar el modelo de controlador para aprovechar las características de Windows 10 Anniversary Edition que están habilitadas a través de mejoras de plataforma, como las que se describen aquí. Los cambios de funcionalidad deben mostrarse a través del tiempo de ejecución correspondiente.

Se ha agregado la siguiente constante para que coincida con KMT_DRIVERVERSION_WDDM_2_1:

typedef enum _DXGIDRIVERMODELVERSION
{
    DXGIDMVERSION_1_0            = 1000,
    DXGIDMVERSION_1_1_PRERELEASE = 1102,
    DXGIDMVERSION_1_1            = 1105, 
    DXGIDMVERSION_1_2            = 1200,
    DXGIDMVERSION_1_3            = 1300,
    DXGIDMVERSION_2_0            = 2000,
    DXGIDMVERSION_2_1            = 2100,

} DXGIDRIVERMODELVERSION;

Las versiones de la interfaz de DDI en el controlador en modo kernel (KMD) son las siguientes:

#define DXGKDDI_INTERFACE_VERSION_VISTA      0x1052
#define DXGKDDI_INTERFACE_VERSION_VISTA_SP1  0x1053
#define DXGKDDI_INTERFACE_VERSION_WIN7       0x2005
#define DXGKDDI_INTERFACE_VERSION_WIN8       0x300E
#define DXGKDDI_INTERFACE_VERSION_WDDM1_3    0x4002
#define DXGKDDI_INTERFACE_VERSION_WDDM1_3_PATH_INDEPENDENT_ROTATION  0x4003
#define DXGKDDI_INTERFACE_VERSION_WDDM2_0    0x5023
#define DXGKDDI_INTERFACE_VERSION_WDDM2_1    0x6002

Requisitos de INF de gráficos

Los controladores de gráficos WDDM 2.1 tienen requisitos INF diferentes en comparación con los controladores WDDM 2.0 o anteriores:

  1. WDDM 2.1 debe tener una puntuación de características idéntica como el controlador de gráficos WDDM 2.0 (D1).

  2. Los controladores de gráficos WDDM 2.1 deben usar otra sección de instalación del INF del SO.

  3. El INF del controlador de gráficos de WDDM 2.1 cambia para la instalación de "Almacén de controladores".

Para obtener más información, consulte Secciones y directivas del archivo INF.

Los archivos de controlador de 32 y 64 bits permanecerán en el almacén de controladores y se cargarán desde ahí. El redireccionamiento del sistema de archivos WoW64 no se aplica al almacén de controladores. Los IHV pueden especificar subcarpetas mediante la sintaxis de INF estándar para crear, por ejemplo, una carpeta WoW64 en la carpeta del almacén de controladores único si lo desea.

En el ejemplo siguiente se muestra cómo una ejecución compatible con INF del almacén de controladores difiere del comportamiento anterior.

WINDOWS 10 ANNIVERSARY EDITION APPROACH: RUNNING DRIVERS FROM THE DRIVER STORE
[DestinationDirs]
KMDCopyFiles = 13
UMDCopyFiles = 13
UMDWoW64CopyFiles = 13

[DDInstall]
CopyFiles=KMDCopyFiles
CopyFiles=UMDCopyFiles
CopyFiles=UMDWoW64CopyFile

[KMDCopyFiles]
myKMD.sys

[UMDCopyFiles]
myUMD64.dll
myOpenCL64.dll
myOpenGL64.dll

[UMDWow64CopyFiles]
myUMD32.dll
myOpenCL32.dll
myOpenGL32.dll

[DDInstall.Services]
AddService = serviceName, 0x00000002, serviceName_Service_Inst

[serviceName_Service_Inst]
ServiceBinary = %13%\serviceName.sys

[regAdd]
HKR,,UserModeDriverName,%REG_MULTI_SZ%,%13%\myUMD64.dll, %13%\myUMD64.dll, %13%\myUMD64.dll, %13%\myUMD64.dll
HKR,,UserModeDriverNameWoW,%REG_MULTI_SZ%, %13%\myUMD32.dll, %13%\myUMD32.dll, %13%\myUMD32.dll, %13%\myUMD32.dll
HKLM,"Software\Khronos\OpenCL\Vendors",%13%\myOpenCL64.dll,%REG_DWORD%,0x00000000
HKLM,"Software\Wow6432Node\Khronos\OpenCL\Vendors",%13%\ myOpenCL32.dll,%REG_DWORD%,0x00000000
HKR,,OpenGLDriverName,%REG_MULTI_SZ%,%13%\myOpenGL64.dll
HKR,,OpenGLDriverNameWoW,%REG_MULTI_SZ%,%13%\myOpenGL32.dll

Para especificar una subcarpeta, los controladores pueden usar la sintaxis como se muestra en el ejemplo siguiente:

...
[DestinationDirs]
...
UMDWoW64CopyFiles = 13,WoW64
...
[regAdd]
...
HRK,, UserModeDriverNameWoW,%REG_MULTI_SZ%, %13%\WoW64\myUMD.dll, %13%\WoW64\myUMD.dll, %13%\

The manufacturer install section decoration for Windows 10 Anniversary edition WDDM 2.1 drivers is as follows: 
...
[Manufacturer]
%Grfx_Manf% =  IHVGfx, NTamd64.10.0…14310
...
[IHVGfx.NTamd64.10.0…14310]
; HW ID list
[list of HW IDs]

Control de versiones del controlador

Los archivos DLL y SYS del controlador para un adaptador de gráficos o un conjunto de chips deben tener una versión de archivo con formato correcto.

La información del archivo de información del controlador (.inf), el controlador en modo kernel (.sys) y la versión del controlador en modo de usuario (.dll) debe coincidir. Además, la información de versión de los archivos identificados en la sección [SignatureAttributes] del archivo .inf como archivos binarios PETrust debe coincidir con el archivo .inf. Se recomienda que la información de la versión del archivo para archivos binarios adicionales en un paquete de controladores coincida con el archivo .inf.

Para ser coherente con los requisitos de control de versiones de archivos que prevalecen para los sistemas operativos heredados, el formato de la versión de archivo debe seguir un patrón AA.BB.CCCCC.DDDDD en el que:

  • AA indica la versión del modelo de controlador del dispositivo más capaz que se muestra en el .inf.

  • BB (para controladores WDDM 1.2 y versiones posteriores) indica el nivel de característica D3D más alto disponible del dispositivo más capaz que aparece en el .inf.

  • BB (para controladores WDDM 1.1 y versiones inferiores) indica la versión de DDI más alta disponible compatible con el dispositivo más compatible con el archivo .inf.

  • CCCCC es un número de hasta cinco dígitos de 0 a 65535 elegido por el proveedor

  • DDDDD es un número de hasta cinco dígitos de 0 a 65535 elegido por el proveedor

Valores para el campo AA:

Modelo de controlador Valor de AA
WDDM v2.1 21
WDDM v2.0 20
WDDM v1.3 10
WDDM v1.2 9
WDDM v1.1 8
Versión 1.0 de WDDM 7
XDDM 6

Valores para el campo BB (WDDM 1.2 y versiones posteriores):

Nivel de característica de DirectX Valor de BB
12_x 21
12_1 20
12_0 19
11_1 18
11_0 17
10_1 16
10_0 15
9_3 14
9_2 14
9_1 14

Valores para el campo BB (WDDM 1.1 y versiones anteriores):

Versión de DDI Valor de BB
D3D11-DDI en el nivel de característica 11_0 17
D3D11-DDI en el nivel de característica 10 16
D3D10-DDI 15
D3D9 DDI 14

Ejemplos

Nota:

No es necesario rellenar números con ceros iniciales, es decir, no es necesario representar 123 como 00123 para los campos CCCCC o DDDDD. En versiones anteriores del sistema operativo Windows, los dos últimos campos eran de 4 dígitos, es decir, CCCC.DDDD. Por lo tanto, los ejemplos de versiones de controladores anteriores a Windows 10 y WDDM 2.0 solo tienen 4 dígitos.

  • Windows Vista WDDM 1.0:

    • Los controladores de DDI D3D9 pueden usar de 7.14.0000.0000 a 7.14.9999.9999
    • Los controladores de DDI D3D10 pueden usar de 7.15.0000.0000 a 7.15.9999.9999
  • Windows 7 WDDM 1.1:

    • Los controladores de DDI D3D9 pueden usar de 8.14.0000.0000 a 8.14.9999.9999
    • Los controladores de DDI D3D10 pueden usar de 8.15.0000.0000 a 8.15.9999.9999
    • Los controladores de DDI D3D11 con FL_10_0 pueden usar de 8.16.0000.0000 a 8.16.9999.99999
    • Los controladores de DDI D3D11 con FL_10_0 pueden usar de 8.16.0000.0000 a 8.16.9999.99999
  • Windows 8 WDDM 1.2:

    • FL_10_0 HW puede usar de 9.15.0000.0000 a 9.15.9999.99999
    • FL_10_1 HW puede usar de 9.16.0000.0000 a 9.16.9999.9999
    • FL_11_0 HW puede usar de 9.17.0000.0000 a 9.17.9999.9999
    • FL_10_1 HW puede usar de 9.18.0000.0000 a 9.18.9999.9999
  • Windows 8.1 WDDM 1.3:

    • FL_10_0 HW puede usar de 10.15.0000.0000 a 10.15.9999.9999
    • FL_10_1 HW puede usar de 10.16.0000.0000 a 10.16.9999.9999
    • FL_11_0 HW puede usar de 10.17.0000.0000 a 10.17.9999.9999
    • FL_11_1 HW puede usar de 10.18.0000.0000 a 10.18.9999.9999
  • Windows 10 WDDM 2.0:

    • FL_11_1 HW puede usar de 20.18.0000.0000 a 20.18.65535.65535
    • FL_12_0 HW puede usar de 20.19.0000.0000 a 20.19.65535.65535
    • FL_12_1 HW puede usar de 20.20.0000.0000 a 20.20.65535.65535
  • Windows 10 WDDM 2.1:

    • FL_11_1 HW puede usar de 20.18.0000.0000 a 21.18.65535.65535
    • FL_12_0 HW puede usar de 20.19.0000.0000 a 21.19.65535.65535
    • FL_12_1 HW puede usar de 20.20.0000.0000 a 21.20.65535.65535

Aplicación

Una prueba obligatoria en la lista de reproducción de certificación de HLK para compilaciones de Windows 10 superiores a 10586 aplica las reglas especificadas en este artículo. La prueba es opcional para versiones anteriores del sistema operativo. Para las compilaciones de Windows 10 después de 10586, la versión de WDDM se actualizó a la versión 2.1. Otra manera de ver esto es que el requisito obligatorio solo se aplica a los controladores creados para WDDM 2.1 o versiones posteriores.