Enumerar los modos de origen y destino de VidPN cofuncionales

En este tema se describe cómo colaboran el administrador de red de vídeo presente (VidPN) y el controlador de minipuerto de pantalla para enumerar los modos disponibles en los orígenes y destinos de vídeo presentes. Antes de leer este material, debe estar familiarizado con el material en los temas siguientes:

De vez en cuando, el administrador de VidPN pide al controlador de minipuerto de pantalla que enumere los modos disponibles en los destinos y orígenes de vídeo del adaptador de pantalla. Normalmente, la solicitud tiene el siguiente patrón:

  1. El administrador de VidPN crea u obtiene un VidPN que tiene modos anclados en algunos, pero no todos, de sus orígenes y destinos.

  2. El administrador de VidPN llama a DxgkDdiIsSupportedVidPn para determinar si el VidPN se puede extender para formar un VidPN funcional compatible con el adaptador de pantalla. Es decir, pregunta si los modos se pueden anclar en los orígenes y destinos restantes sin cambiar los modos anclados existentes.

  3. El administrador de VidPN llama a DxgkDdiEnumVidPnCofuncModality para obtener los modos disponibles en los orígenes y destinos que aún no tienen modos anclados.

Uno de los argumentos pasados a DxgkDdiEnumVidPnCofuncModality es un identificador de un objeto VidPN denominado VidPN restringido.

DxgkDdiEnumVidPnCofuncModality debe hacer lo siguiente:

  • Inspeccione la vidPN restringida.

  • Para cada origen y destino que no tiene un modo anclado, ajuste el conjunto de modo para que sea el conjunto de modo más grande posible que sea cofuncional con las restricciones.

  • Para cada ruta de acceso que no tenga una transformación de escalado anclada, ajuste las marcas de compatibilidad de escalado para que sean cofuncionales con las restricciones.

  • Para cada ruta de acceso que no tenga una transformación de rotación anclada, ajuste las marcas de compatibilidad de rotación para que sean cofunctionales con las restricciones.

  • Para cada origen que tenga un modo anclado, notifique los métodos de muestreo múltiple que están disponibles para ese origen.

En los párrafos siguientes se proporcionan detalles sobre cómo realizar cada una de las tareas de la lista con viñetas anterior.

Inspección de la vidPN restringida

Las siguientes propiedades de vidPN restringidas son las restricciones que debe respetar DxgkDdiEnumVidPnCofuncModality.

  • Topología (conjunto de asociaciones entre orígenes y destinos)

  • Modos anclados

  • Escalado, compatibilidad con el escalado, rotación y rotación de cada ruta de acceso

  • Base de color de destino de cada ruta de acceso

  • Intervalos dinámicos de coeficiente de color de destino de cada ruta de acceso

  • Tipo de contenido (gráficos o vídeo) de cada ruta de acceso

  • Rampa gamma de cada ruta

Para extraer las restricciones de la vidPN restringida, realice los pasos siguientes:

  • Comience llamando a la función pfnGetTopology para obtener un puntero a una interfaz de topología VidPN que representa la topología de VidPN restringida.

  • Llame a las funciones pfnAcquireFirstPathInfo y pfnAcquireNextPathInfo para obtener información sobre cada ruta de acceso de la topología de VidPN restringida. La información sobre una ruta de acceso determinada (id. de origen, identificador de destino, transformación de escalado, transformación de rotación, base de color de destino, etc.) se encuentra en una estructura de D3DKMDT_VIDPN_PRESENT_PATH .

  • Para cada ruta de acceso, pase el identificador de origen de la ruta de acceso a la función pfnAcquireSourceModeSet para obtener el origen de la ruta de acceso.

  • Llame a la función pfnAcquirePinnedModeInfo para determinar qué modo (si existe) está anclado en el modo del origen establecido. Si el conjunto de modos del origen tiene un modo anclado, es probable que no sea necesario examinar los modos restantes del conjunto. Si el conjunto de modos no tiene un modo anclado, examine los modos restantes del conjunto llamando a pfnAcquireFirstModeInfo y pfnAcquireNextModeInfo.

    Use un procedimiento similar para examinar los conjuntos de modo de destino y para determinar qué conjuntos de modo de destino tienen modos anclados.

Ajustar conjuntos de modo

A medida que inspecciona los conjuntos de modos asociados a orígenes y destinos en la topología de VidPN restringida, tome nota de qué conjuntos de modos tienen modos anclados. Si un conjunto de modo no tiene un modo anclado, determine si debe ajustarse. Se debe ajustar un conjunto de modos si contiene modos que no son cofuncionales con las restricciones o si carece de modos disponibles que son cofuncionales con las restricciones.

En el caso de los destinos de vídeo que tienen monitores conectados, también debe tener en cuenta el conjunto de modos admitidos por el monitor. Incluso si un destino de vídeo presente en el adaptador de pantalla admite un modo determinado (dadas las restricciones), solo debe enumerar ese modo en el modo del destino establecido si el monitor conectado también admite el modo . Para determinar los modos admitidos por el monitor conectado, realice los pasos siguientes:

Ajuste de las marcas de compatibilidad de escalado

Para cada ruta de acceso de la topología de VidPN restringida, determine si la ruta de acceso tiene una transformación de escalado anclada. Para realizar esa determinación, inspeccione vpnPath. ContentTransformation.Scaling, donde vpnPath es la estructura D3DKMDT_VIDPN_PRESENT_PATH que representa la ruta de acceso. Si vpnPath. ContentTransformation.Scaling se establece en D3DKMDT_VPPS_IDENTITY, D3DKMDT_VPPS_CENTERED o D3DKMDT_VPPS_STRETCHED, a continuación, se ancla la transformación de escalado de la ruta de acceso. De lo contrario, la transformación de escalado no está anclada.

Si la ruta de acceso no tiene una transformación de escalado anclada, determine si es necesario ajustar las marcas de compatibilidad de escalado de la ruta de acceso. Las marcas de compatibilidad deben ajustarse si muestran compatibilidad con un tipo de escalado que no es cofuncional con las restricciones o si no muestran compatibilidad con un tipo de escalado que es cofuncional con las restricciones. Para modificar las marcas de compatibilidad de escalado, establezca los miembros de la estructura D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT que contiene las marcas.

Ajuste de las marcas de compatibilidad de rotación

Ajustar las marcas de compatibilidad de rotación de una ruta de acceso es similar a ajustar las marcas de compatibilidad de escalado de una ruta de acceso. Supongamos que vpnPath es una estructura D3DKMDT_VIDPN_PRESENT_PATH. Si vpnPath. ContentTransformation.Rotation se establece en D3DKMDT_VPPR_IDENTITY, D3DKMDT_VPPR_ROTATE90, D3DKMDT_VPPR_ROTATE180 o D3DKMDT_VPPR_ROTATE270 y, a continuación, se ancla la transformación de rotación de la ruta de acceso. De lo contrario, la transformación de rotación no está anclada. Las marcas de compatibilidad de rotación están en vpnPath. ContentTransformation.RotationSupport.

Informes de métodos de muestreo múltiple

Si el adaptador de pantalla tiene uno o varios códecs de salida de vídeo que son capaces de suavizar el suavizado mediante el muestreo múltiple, debe notificar los métodos de muestreo múltiple que están disponibles (dadas las restricciones), para cada origen que tenga un modo anclado. Para notificar los métodos de muestreo múltiple disponibles, realice los pasos siguientes:

La estructura D3DDDI_MULTISAMPLINGMETHOD tiene dos miembros, que debe establecer, que caracterizan un método de muestreo múltiple. El miembro NumSamples indica el número de subpíxeles que se muestrean. El miembro NumQualityLevels indica el número de niveles de calidad en los que el método puede funcionar. Puede especificar cualquier número de niveles de calidad, siempre y cuando cada aumento en el nivel mejore notablemente la calidad de la imagen presentada.

Tablas dinámicas de enumeración

Como se ha descrito anteriormente, DxgkDdiEnumVidPnCofuncModality debe crear conjuntos de modo que sean cofunccionales con el VidPN pasado en su parámetro hConstrainingVidPn . En algunos casos, DxgkDdiEnumVidPnCofuncModality debe aumentar su comportamiento según la información adicional (una tabla dinámica de enumeración) pasada en los parámetros EnumPivotType y EnumPivot .

La tabla dinámica de enumeración puede ser una de las siguientes:

  • El conjunto de modos de un origen de vídeo en particular presente

  • El conjunto de modos de un destino de vídeo en particular

  • Transformación de escalado de una ruta de acceso actual de VidPN determinada

  • Transformación de rotación de una ruta de acceso presente de VidPN determinada

Si la tabla dinámica de enumeración es un conjunto de modos, DxgkDdkEnumVidPnCofuncModality debe dejar ese modo establecido sin cambios. Si el pivot de enumeración es la transformación de escalado (rotación) de una ruta de acceso, DxgkDdiEnumVidPnCofuncModality no debe cambiar las marcas de compatibilidad de escalado (rotación) para esa ruta de acceso.