Compartir a través de


Compatibilidad con el examen de recursos entre adaptadores (CASO)

Rendimiento anterior al caso (ruta de acceso de dos copias)

A partir de Windows 8.1 (WDDM 1.3), las aplicaciones D3D9 y DXGI pudieron usar la compatibilidad con la presentación entre adaptadores en configuraciones de varios adaptadores, como sistemas híbridos. Con esta compatibilidad, la representación se realiza en un adaptador de representación (normalmente la GPU discreta) y, a continuación, se realizan dos copias para obtener el contenido en el adaptador de pantalla (normalmente la GPU integrada) para examinar la pantalla.

  • La copia 1 procede del recurso del adaptador de representación a un recurso de adaptador cruzado.
  • La copia 2 procede del recurso entre adaptadores al recurso del adaptador de pantalla.

Estas copias pueden limitar el rendimiento de las aplicaciones, especialmente para las aplicaciones optimizadas para baja latencia.

Uso de CASO para optimizar el modelo de presentación invertida (ruta de acceso de una copia)

Windows Server 2022 (WDDM 2.9) y los controladores posteriores pueden declarar compatibilidad con un nivel de recurso de adaptador cruzado adecuado, lo que permite que la pila de presentaciones del sistema optimice las presentaciones entre adaptadores. Los controladores deben declarar la compatibilidad con esta característica en función de su propia funcionalidad de adaptador, independientemente de la configuración del dispositivo, de modo que el valor de característica se escale en todas las configuraciones de hardware aplicables. Este escalado incluye, pero no está limitado a, un único dispositivo gpu con conexión dinámica de otras GPU externas.

Si el adaptador de pantalla admite CASO, el sistema solo realiza la primera copia de la superficie del adaptador de representación a la superficie de adaptador cruzado y, a continuación, examina desde la superficie de adaptador cruzado directamente. Esta característica da como resultado un procesamiento reducido, ancho de banda, energía y latencia.

La característica CASO se implementa para el entorno de ejecución DXGI para el modelo de presentación invertida.

Cambios y adiciones de DDI para CASO

Indica la compatibilidad de niveles para los recursos entre adaptadores

DXGI implementa tres niveles de compatibilidad con recursos entre adaptadores:

  1. Copiar hacia y desde recursos entre adaptadores (nivel más bajo)
  2. Texturing de recursos entre adaptadores
  3. Examen de recursos entre adaptadores (nivel más alto)

Cada nivel superior de soporte técnico debe garantizar la compatibilidad de los niveles por debajo. Por ejemplo, para reclamar compatibilidad con el examen de recursos entre adaptadores, el controlador también debe admitir el texturing y la copia.

Los controladores declaran la compatibilidad con cada nivel estableciendo los siguientes valores de campo de bits de DXGK_VIDMMCAPS en DXGK_DRIVERCAPS. MemoryManagementCaps:

Nivel Significado del nivel valor de DXGK_VIDMMCAPS
Nivel 1 Compatibilidad con la copia: copiar y desde recursos entre adaptadores CrossAdapterResource (expuesto al modo de usuario por kernel de gráficos a través del bit SupportCrossAdapterResource en D3DKMT_WDDM_1_3_CAPS
Nivel 2 Compatibilidad con texturas: textura de recursos entre adaptadores) CrossAdapterResourceTexture (incluye compatibilidad con la vista de recursos del sombreador, la vista de acceso desordenado y el destino de representación).
Nivel 3 Compatibilidad con CASO: Examen de recursos entre adaptadores CrossAdapterResourceScanout

El kernel de gráficos produce un error al iniciar el adaptador si no indica compatibilidad de forma superconjunto para los tres niveles. Por ejemplo, CrossAdapterResource debe establecerse si se establece CrossAdapterResourceTexture .

Requisitos de soporte técnico de nivel 1

Los recursos entre adaptadores siguen siendo los mismos, que se usan para la compatibilidad con copias de WDDM 1.3 de nivel 1.

Requisitos de soporte técnico de nivel 2

Los requisitos son similares a la funcionalidad CrossAdapterRowMajorTextureSupported del controlador D3D12 (cap); Es decir, el dispositivo admite vistas de recursos de sombreador, vistas de acceso desordenadas y vistas de destino de representación de texturas principales de fila entre adaptadores. Sin embargo, aunque CrossAdapterRowMajorTextureSupported de D3D12 requiere compatibilidad con todos los formatos de textura pertinentes, este límite de nivel 2 solo requiere compatibilidad con los formatos DisplayScanOut enumerados en los requisitos de compatibilidad de nivel 3, como mínimo.

Dado que el límite de D3D12 es un superconjunto de este límite de nivel 2, D3D12CreateDevice también comprueba que el límite CrossAdapterResourceTexture del controlador del kernel se establece si se establece su límite CrossAdapterRowMajorTextureSupported y produce un error en la creación del dispositivo si no lo está.

Requisitos de soporte técnico de nivel 3

El sistema debe poder realizar las funcionalidades de volteo admitidas, declaradas por el controlador en DXGK_FLIPCAPS, para los recursos entre adaptadores de las siguientes especificaciones mínimas:

  • Un tamaño de búfer principal de adaptador cruzado de 1920 x 1080 o menor
  • Formato de píxel de búfer de cualquiera de los formatos DisplayScanOut admitidos. A partir de Windows 10 versión 20H1, estos formatos son:
    • DXGI_FORMAT_R16G16B16A16_FLOAT
    • DXGI_FORMAT_R10G10B10A2_UNORM
    • DXGI_FORMAT_R8G8B8A8_UNORM
    • DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
    • DXGI_FORMAT_B8G8R8A8_UNORM
    • DXGI_FORMAT_B8G8R8A8_UNORM_SRGB

Si el controlador admite el examen de recursos entre adaptadores de más formatos de textura, también debe admitir la texturización de esos formatos según los requisitos de compatibilidad de nivel.

Nota

El tiempo de ejecución de DXGI consulta el controlador para su compatibilidad con CrossAdapterResourceScanout . Si se admite, la pila de presentación deja de funcionar la ruta de acceso de una copia. Por lo tanto, los controladores que declaran la compatibilidad con CrossAdapterResourceScanout son necesarios para admitir el DDI de DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3 . Además, también debe admitir todos los DDIs relacionados con la presentación pertinentes para los principales adaptadores de las especificaciones mínimas anteriores. Algunos ejemplos son: pfnCreateResource, pfnCheckMultiplaneOverlaySupport y pfnPresentMultiplaneOverlay/pfnPresent1. Para obtener más información, consulte Compatibilidad con la superposición multiplano. Para obtener más información sobre cómo salir de CASO, consulte DDIs del controlador para la optimización de la presentación.

Ambos niveles tienen pruebas HLK complementarias para la comprobación.

Compatibilidad con la marca StaticCheck para DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3

La marca StaticCheck se agregó a DXGK_MULTIPLANE_OVERLAY_FLAGS en WDDM 3.0. Esta marca expande el uso del DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3 DDI para la compatibilidad con CASO. Esta marca permite que DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3 consultar un controlador para determinar si el plano marcado con la marca StaticCheck es capaz de examinar. Esta llamada es una llamada única y no debería afectar al comportamiento real de la presentación. Por lo tanto, los controladores que realizan cualquier almacenamiento en caché de información presente de DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3 no deben incluir la información de las llamadas DDI con un plano StaticCheck . Solo deben realizar la determinación de compatibilidad de forma independiente o estática.

DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3 con el conjunto de marcas StaticCheck se garantiza que:

  • Tener exactamente un plano marcado con la marca
  • No contiene ninguna información del plano PostComposition

Una llamada a DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3 con el conjunto de marcas StaticCheck se usa desde el proceso de la aplicación desde DXGI durante la creación del búfer, como durante la creación de la cadena de intercambio o ResizeBuffers, como un intento de mejor esfuerzo para determinar si CASO es compatible con la configuración de hardware actual.

Caso especial HybridIntegrated

Es importante tener en cuenta que los controladores HybridIntegrated están diseñados para tener compatibilidad con el examen de nivel 3. A partir de WDDM 3.0, se requieren controladores HybridIntegrated para declarar la compatibilidad con CrossAdapterResourceScanout. Una prueba de HLK comprueba este requisito.

Es posible que los límites híbridos existentes se consideren en desuso en el futuro. Por lo tanto, es clave que el límite CrossAdapterResourceScanout se desacopla para permitir una mayor flexibilidad para evolucionar en este espacio en el futuro. Por lo tanto, incluso los controladores que no son HybridIntegrated pueden establecer el nivel de compatibilidad entre adaptadores según corresponda.

Cambios del kernel de gráficos

A partir de WDDM 2.9, se realizaron las siguientes adiciones o cambios para la compatibilidad con recursos entre adaptadores:

Ejemplo de uso:

D3DKMT_CROSSADAPTERRESOURCE_SUPPORT KernelSupport = {};
D3DKMT_QUERYADAPTERINFO QueryAdapterInfo;
QueryAdapterInfo.hAdapter = m_hAdapter;
QueryAdapterInfo.Type = KMTQAITYPE_CROSSADAPTERRESOURCE_SUPPORT;
QueryAdapterInfo.pPrivateDriverData = &KernelSupport;
QueryAdapterInfo.PrivateDriverDataSize = sizeof( KernelSupport );
VERIFY_SUCCEEDED(D3DKMTQueryAdapterInfo(&QueryAdapterInfo));

// Use KernelSupport.SupportTier as appropriate

DDIs del controlador para la optimización de la presentación

Los controladores usan las siguientes DDIs para indicar si se admite el examen cruzado del adaptador:

  • DXGK_VIDMMCAPS::CrossAdapterResourceScanout cap

    El sistema consulta este límite antes para determinar si el controlador admite la funcionalidad CASO.

    Si el controlador admite CASO, DXGI continúa con la ruta de acceso caso de una copia; de lo contrario, DXGI vuelve a la ruta de acceso de dos copias.

  • pfnCreateResource DDI

    En la ruta de acceso caso de una copia, DXGI crea el recurso entre adaptadores como principal en el adaptador de pantalla, a través de pfnCreateResource. El controlador debe evaluarse en función de las propiedades del recurso si puede examinar desde ese recurso.

    Si el controlador admite el examen en función de las propiedades del recurso, DXGI continúa con la ruta de acceso caso de una copia. De lo contrario, el controlador debe rechazar los exámenes devolviendo DXGI_DDI_PRIMARY_DRIVER_FLAG_NO_SCANOUT. En este caso, DXGI vuelve a la ruta de acceso de dos copias. Esta reserva solo debe producirse si las propiedades de recursos están fuera de los requisitos mínimos, como se muestra en Requisitos de soporte técnico de nivel 3.

  • pfnCheckMultiplaneOverlaySupport DDI

    Por comportamiento actual, el Administrador de Windows de escritorio (DWM) llama a la DDI pfnCheckMultiplaneOverlaySupport del controlador de pantalla para determinar con precisión si se puede examinar la superficie principal. Si el controlador lo admite, se produce el examen. De lo contrario, DWM vuelve al modo de composición DWM.

    Tenga en cuenta que es probable que los regalos compuestos por DWM sean menos deseables que El volteo independiente (iFlip) a través de la ruta de acceso de dos copias o iFlip a través de la ruta de acceso caso de una copia. Por lo tanto, puede haber escenarios de visualización comunes en los que el ancho de banda de presentación está limitado, como rotación o varias pantallas, donde los controladores podrían producir un error constante en la compatibilidad con pfnCheckMultiplaneOverlaySupport en DWM, lo que probablemente provocaría una experiencia más deficiente que la ruta de acceso de dos copias.

    Para mitigar la experiencia de reserva negativa, DXGI llama a pfnCheckMultiplaneOverlaySupport durante la creación del búfer con el recurso entre adaptadores como un plano marcado con la marca StaticCheck , para comprobar con alta precisión si el controlador puede realizar el examen dadas las características de ancho de banda conocidas existentes. Si se admite, DXGI continúa con la ruta caso de una copia; de lo contrario, vuelve a la ruta de acceso de dos copias.

Pruebas de HLK

Se agregó un requisito y una característica de HLK de WDDM 3.0, con sus pruebas HLK correspondientes. Este requisito está vinculado a la compatibilidad DXGK_VIDMMCAPS que los controladores pueden declarar; específicamente, CrossAdapterResourceTexture y CrossAdapterResourceScanout.

CrossAdapterResourceTexture

Se ha agregado una prueba de HLK para comprobar las operaciones de vista de recursos del sombreador (SRV) en recursos entre adaptadores.

  • Para D3D12, se agregó la prueba HLK "D3D12 - Recurso de adaptador cruzado DX12" para Device.Graphics.AdapterRender.D3D12Core.CoreRequirement; específicamente, el caso de prueba CrossAdapterResource::CrossAdapterTextureSRV.

    Se ha agregado a este caso de prueba de HLK la comprobación de la relación de superconjunto entre el límite KMD CrossAdapterResourceTexture y el límite D3D12 UMD CrossAdapterRowMajorTextureSupported . De forma similar, la lógica se agregó en D3D12CreateDevice para asegurarse de que, si se establece su límite de UMD, el límite del controlador de nivel de kernel 2 también debe establecerse y se producirá un error en la creación del dispositivo si no lo hace.

  • Para D3D11, el caso de prueba anterior se agregó a la prueba HLK para Device.Graphics.WDDM30.Render.CrossAdapterScanOut; en concreto, D3DConf_11_CrossAdapterResource::CrossAdapterResourceSRV.

Examen de recursos entre adaptadores

Se agregaron las siguientes pruebas HLK:

  • Device.Graphics.WDDM30.Render.CrossAdapterScanOut

    • Una prueba de HLK para comprobar que los controladores pueden crear correctamente recursos principales entre adaptadores sin optar por no tener que examinar el comportamiento a través de la marca DXGI_DDI_PRIMARY_DRIVER_FLAG_NO_SCANOUT .
    • Prueba de HLK para comprobar que estos controladores admiten la DXGKDDI_CHECKMULTIPLANEOVERLAYSUPPORT3 DDI.
    • Una prueba manual de HLK para un evaluador para comprobar manualmente que:
      • La superficie de adaptador cruzado escaneada está libre de daños visuales o artefactos o desmontaje inesperado
      • La superficie entre adaptadores se examina directamente sin ninguna transformación o copia interna previa.

    Estas pruebas de un extremo a otro también comprueban naturalmente que los DDIs CheckMultiplaneOverlaySupport y Present son compatibles con los recursos entre adaptadores. La aplicación de prueba manual tiene algunos requisitos de hardware específicos, como una alta resolución y un monitor de frecuencia de actualización alta. Para obtener más información, consulte el documento de referencia que acompaña a la prueba.

  • Device.Graphics.WDDM30.Render.CoreRequirement

    • Una prueba de HLK para comprobar que los controladores que declaran el límite HybridIntegrated también declaran el límite CrossAdapterResourceScanout .
  • System.Fundamentals.Graphics.HybridGraphics.MultiGPU

    • Una prueba HLK basada en el sistema para permitir que los OEM ejecuten estas pruebas en sus dispositivos híbridos capaces de ejercer la ruta de acceso de una copia única de DXGI como parte de la validación del sistema de un extremo a otro.