Uso de la relación de aspecto y los modos de escalado personalizados
Para admitir el escalado extendido conservando la relación de aspecto y los modos de escalado personalizados disponibles a partir de Windows 7 (donde DXGKDDI_INTERFACE_VERSION= DXGKDDI_INTERFACE_VERSION_WIN7>), se agregan las siguientes funcionalidades a los datos de ruta de acceso presentes de VidPN usados por los controladores de miniporte para mostrar:
D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT estructura:
Miembros AspectRatioCenteredMax y Custom
D3DKMDT_VIDPN_PRESENT_PATH_SCALING enumeración:
valores de D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX y D3DKMDT_VPPS_CUSTOM
Especificar modos de escalado
El comportamiento y la apariencia del escritorio en el monitor mediante estos modos de escalado se describe en Escalado de la imagen de escritorio. Cuando el administrador de modo de visualización (DMM) llama a la función DxgkDdiEnumVidPnCofuncModality , el controlador debe establecer los miembros de D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT según los tipos de escalado que admite la ruta de acceso presente vidPN, como se indica a continuación:
Escalado de identidades
Si la ruta de acceso puede mostrar contenido sin transformación, establezca el miembro Identity de D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT en un valor distinto de cero. Cuando se llama a DxgkDdiEnumVidPnCofuncModality , establezca el miembro Scaling de la estructura de D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATIONen D3DKMDT_VPPS_IDENTITY.
Escalado centrado
Si la ruta de acceso puede mostrar contenido sin escalar y centrado en el destino, establezca D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT. Centrado. Cuando se llama a DxgkDdiEnumVidPnCofuncModality , establezca D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION. Escalado a D3DKMDT_VPPS_CENTERED.
Escalado extendido
Si la ruta de acceso puede mostrar el contenido que se escala para ajustarse al destino sin conservar la relación de aspecto del origen, establezca D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT. Estirado. Cuando se llama a DxgkDdiEnumVidPnCofuncModality , establezca D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION. Escalado a D3DKMDT_VPPS_STRETCHED.
Escalado extendido conservando la relación de aspecto
Si la ruta de acceso puede escalar el contenido de origen para ajustarse al destino, conservando la relación de aspecto del origen, establezca D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT. AspectRatioCenteredMax. Cuando se llama a DxgkDdiEnumVidPnCofuncModality , establezca D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION. Escalado a D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX.
Escalado personalizado
Si la ruta de acceso puede mostrar uno o varios modos de escalado que los demás miembros de estructura de D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT no describen, establezca D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT. Personalizado. Cuando se llama a DxgkDdiEnumVidPnCofuncModality , establezca D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION. Escalado a D3DKMDT_VPPS_CUSTOM. Los proveedores de hardware independientes (IHD) pueden usar valores de escape privados para informar al controlador sobre cómo interpretar el escalado personalizado en un destino determinado.
Si los modos de destino y origen anclados actuales tienen la misma relación de aspecto, pero son tamaños diferentes, el controlador de minipuerto de pantalla solo debe establecer los miembros Stretched y Centered . En este caso, DMM borrará cualquier valor distinto de cero del miembro AspectRatioCenteredMax .
Escalado de API a DDI
En la tabla siguiente se muestra la correspondencia de los valores de escalado de api en modo de usuario con los valores de escala de DDI del controlador de miniporte para mostrar en la enumeración D3DKMDT_VIDPN_PRESENT_PATH_SCALING .
SetDisplayConfig Valor de escalado de API | Valor de escalado de DDI |
---|---|
DC_IDENTITY |
D3DKMDT_VPPS_IDENTITY |
DC_CENTERED |
D3DKMDT_VPPS_CENTERED |
DC_STRETCHED |
D3DKMDT_VPPS_STRETCHED |
DC_ASPRATIOMAX |
D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX |
DC_CUSTOM |
D3DKMDT_VPPS_CUSTOM |
DC_PREFERRED |
D3DKMDT_VPPS_PREFERRED |
Esta asignación se puede usar con las tablas de Escalado de la imagen de escritorio para comprender cómo se traducen los tipos de escalado en modo de usuario en tipos de escalado DDI que se envían al controlador de minipuerto de pantalla.
Escalado y versiones de controladores
En la tabla siguiente se muestra el comportamiento de diferentes versiones del controlador de miniporte de pantalla que se ejecutan en diferentes versiones del sistema operativo.
Versión del controlador Versión del sistema operativo
< DXGKDDI_INTERFACE_VERSION DXGKDDI_INTERFACE_VERSION_WIN7
y
>= DXGKDDI_INTERFACE_VERSION_VISTA
> DXGKDDI_INTERFACE_VERSION = DXGKDDI_INTERFACE_VERSION_WIN7
Windows Vista
El controlador tiene el comportamiento de Windows Vista.
El controlador debe comprobar la versión del sistema operativo durante la inicialización y nunca debe exponer o usar los miembros AspectRatioCenteredMax y Custom de D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT. Si el controlador infringe este requisito, DMM omitirá AspectRatioCenteredMax y Custom y solo reconocerá los miembros Identity, Centered o Stretched . Si el controlador intenta anclar el modo de escalado D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX en cualquier ruta de acceso vidPN, DMM devolverá el código de estado STATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION y tratará este modo de escalado igual que el modo extendido de pantalla completa.
Windows 7
El sistema operativo borra los valores de los miembros AspectRatioCenteredMax y Custom y supone que el controlador no admite el escalado extendido conservando la relación de aspecto y los modos de escalado personalizado. DMM solo establecerá los modos de escalado D3DKMDT_VPPS_IDENTITY, D3DKMDT_VPPS_STRETCHED o D3DKMDT_VPPS_CENTERED. El controlador se comporta como en Windows Vista.
El controlador debe admitir el miembro AspectRatioCenteredMax y el sistema operativo lo usa desde Panel de control aplicaciones. Opcionalmente, el controlador puede implementar la funcionalidad personalizada estableciendo el miembro Personalizado .
DMM siempre confirmará que la interfaz >del controlador = DXGKDDI_INTERFACE_VERSION_WIN7 antes de intentar comprobar y usar los miembros AspectRatioCenteredMax o Custom de D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT.
Importante Un controlador de minipuerto de pantalla que admita los valores de D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX o D3DKMDT_VPPS_CUSTOM nunca debe establecer un valor de D3DKMDT_VPPS_NOTSPECIFIED.
Escalado con varios adaptadores
Los valores de los tipos de escalado D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX y D3DKMDT_VPPS_CUSTOM introducidos con Windows 7 se almacenan en la base de datos de conexión CCD asociada a una unidad de procesamiento gráfico (GPU). Si el usuario mueve un monitor de una GPU con un controlador que admite estos miembros de escalado a otra GPU, es posible que el segundo controlador original no admita la segunda GPU. En este caso, el sistema operativo asignará estos tipos de escalado al escalado predeterminado del sistema.
Si ambas GPU admiten los tipos de escalado D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX y D3DKMDT_VPPS_CUSTOM, y el controlador para la primera GPU implementa la solicitud de escalado personalizada D3DKMDT_VPPS_CUSTOM , si el usuario cambia el monitor a la segunda GPU, es probable que el controlador de la segunda GPU no sepa interpretar la solicitud de escalado personalizada. En este caso, el segundo controlador debe producir un error en una llamada a la función DxgkDdiCommitVidPn y debe devolver el código de estado STATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED ; el sistema operativo asignará este tipo de escalado al escalado predeterminado del sistema.