Compatibilidad con la rotación en un controlador de minipuerto de pantalla
Una función DxgkDdiEnumVidPnCofuncModality del controlador de miniporte llama a la función pfnUpdatePathSupportInfo para notificar la compatibilidad con la rotación de cada ruta de acceso de una topología de red (VidPN) de vídeo presente. Para obtener más información sobre la compatibilidad con la rotación de informes, vea Enumerar los modos de origen y destino de VidPN cofunctional.
El subsistema del kernel de gráficos de Microsoft DirectX usa dimensiones de superficie no giradas para crear la superficie principal compartida. Para notificar a un controlador de minipuerto de pantalla que gire la superficie, el subsistema del kernel de gráficos de DirectX especifica D3DKMDT_VIDPN_PRESENT_PATH_ROTATION valores con tipo en el miembro Rotation de la estructura de D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION que se especifica en el miembro ContentTransformation de la estructura de D3DKMDT_VIDPN_PRESENT_PATH en las llamadas a dxgkDdiCommitVidPn y DxgkDdiUpdateActiveVidPnPresentPath Funciones.
Nota Todos los grados de rotación se definen en la dirección en sentido contrario a las agujas del reloj, que es coherente con la forma en que GDI define la rotación.
Cuando el subsistema directX notifica al controlador de minipuerto de pantalla para girar la superficie, el controlador debe girar los datos de la superficie solo si la marca de campo de bits Rotate se estableció en el miembro Flags de la estructura DXGKARG_PRESENT a la que apunta el parámetro pPresent en una llamada a la función DxgkDdiPresent del controlador. Incluso si el controlador determina que la orientación actual de la pantalla se gira a partir de los datos de presentación y no se estableció Rotate , el controlador no debe rotar los datos.
Comportamiento del modo clonado
El modo clonar es un modo en el que un origen de vídeo presente se conecta a varios destinos de vídeo presentes a través de varias rutas de acceso en una red de vídeo presente. (Para obtener más información sobre las redes de presentación de vídeo, vea Multiple Monitors y Video Present Networks).
Un controlador de minipuerto de pantalla controla la rotación de forma diferente si funciona en modo de clonación, ya que cada destino puede requerir una rotación diferente. El sistema operativo, varias versiones de los entornos de ejecución de Microsoft DirectX y los clientes en modo de usuario detectan solo la orientación del destino actual del vídeo principal. Por lo tanto, el contenido del origen del vídeo presente siempre coincidirá con la orientación del destino actual del vídeo principal.
En la tabla siguiente se muestra cómo se comporta un controlador de minipuerto de pantalla en modo de clonación para todas las situaciones pertinentes. El valor de la marca Rotate es el valor del campo De bits Girar en el miembro Flags de la estructura DXGKARG_PRESENT .
Destino principal | Destino secundario | Marca de rotación | Comportamiento del controlador |
---|---|---|---|
No girado |
No girado |
Sin establecer |
El controlador no realiza ninguna rotación. |
No girado |
Girar |
Sin establecer |
El controlador gira el destino secundario aunque no esté establecida la marca Rotate . |
Girar |
No girado |
Set |
El controlador gira el destino principal, pero no el destino secundario. |
Girar |
No girado |
Sin establecer |
Dado que Rotate no está establecido, el controlador no gira el destino principal. Dado que el destino secundario no coincide con la orientación del contenido en el origen, el controlador debe rotar el destino secundario. Esta situación se produce cuando el cliente es compatible con la rotación y ya ha orientado correctamente el contenido del origen. Por lo tanto, el sistema operativo no establece Rotate. |
Girar |
Girar |
Set |
El controlador gira los destinos principal y secundario. |
Girar |
Girar |
Sin establecer |
El cliente compatible con rotación ya ha orientado correctamente el contenido del origen. Por lo tanto, no se requiere ninguna rotación adicional. |
Requisitos del modo de clonación a partir de Windows 8.1 Update
A partir de Windows 8.1 Update, los controladores deben cumplir estos requisitos. Si la firma de prueba está habilitada, se producirá una comprobación de errores del sistema si un controlador no cumple estos requisitos.
Ruta de acceso de clonación principal
Definición: Ruta de acceso que incluye el monitor de destino que duplica la pantalla de origen, por ejemplo, un monitor externo que duplica la pantalla en un equipo portátil.
Requisito: En la ruta de acceso de clonación principal, el controlador debe establecer Offset0 en TRUE y los otros 3 valores de desplazamiento en D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORTen FALSE.
En el caso de una presentación de origen vertical, la ruta de acceso del clon principal no se desplaza de forma rotacional. Esto significa que la ruta de acceso de clonación principal siempre tiene un desplazamiento de cero (D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT. Offset0 es TRUE) y el Administrador de ventanas de escritorio (DWM) gira su contenido de antemano para que coincida con la orientación adecuada.
La ruta de acceso de clonación principal determina la frecuencia de actualización del monitor para todos los destinos de clonación principal y secundario.
Ruta de acceso de clonación secundaria
Definición: Ruta de acceso que incluye cualquier monitor de destino adicional, no parte de la ruta de acceso de clonación principal, que también duplica la presentación del origen.
Requisito: En la ruta de acceso de clonación secundaria, el controlador debe establecer al menos uno de los 4 valores de desplazamiento en D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORTen TRUE. Si el controlador no admite la rotación independiente de la ruta de acceso, debe establecer Offset0 en TRUE en todas las rutas de acceso de clonación secundarias.
Estos son dos ejemplos de configuración que el controlador debe realizar si admite la rotación independiente de la ruta de acceso:
Ejemplo en primer plano
Si la presentación de origen y el destino en la ruta de acceso de clonación secundaria son monitores de primera creación horizontal, en la ruta de acceso de clonación secundaria, el controlador establecería D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT. Desplazamiento0 a TRUE y los otros 3 valores de desplazamiento en D3DKMDT_VIDPN_PRESENT_PATH_ROTATION_SUPPORT a FALSE. Como alternativa, en este caso, en la ruta de acceso de clonación secundaria, el controlador establecería Offset0 y Offset180 en TRUE y los demás valores de desplazamiento en FALSE.
Ejemplo de vertical-first
Si la pantalla de origen es un dispositivo vertical primero y se conecta a un monitor externo primero horizontal, en la ruta de acceso de clonación secundaria, el controlador establecería Offset270 o Offset90 en TRUE.
Para obtener más información, consulta Compatibilidad con la rotación de Path-Independent.