estructura DXGK_VIDSCHCAPS (d3dkmddi.h)

La estructura de DXGK_VIDSCHCAPS tiene marcas de campo de bits que identifican las funcionalidades de programación de la GPU que un controlador de miniporte (KMD) en modo kernel puede admitir.

Sintaxis

typedef struct _DXGK_VIDSCHCAPS {
  union {
    struct {
      UINT MultiEngineAware : 1;
      UINT VSyncPowerSaveAware : 1;
      UINT PreemptionAware : 1;
      UINT NoDmaPatching : 1;
      UINT CancelCommandAware : 1;
      UINT No64BitAtomics : 1;
      UINT LowIrqlPreemptCommand : 1;
      UINT HwQueuePacketCap : 4;
      UINT NativeGpuFence : 1;
      UINT OptimizedNativeFenceSignaledInterrupt : 1;
#if ...
      UINT Reserved : 19;
#elif
      UINT Reserved : 21;
#elif
      UINT Reserved : 25;
#elif
      UINT Reserved : 27;
#else
      UINT Reserved : 30;
#endif
    };
    UINT Value;
  };
} DXGK_VIDSCHCAPS;

Miembros

MultiEngineAware

Valor UINT que especifica si el controlador admite la creación y destrucción de un contexto de dispositivo (a través de las funciones DxgkDdiCreateContext y DxgkDdiDestroyContext ) y el uso de un contexto de dispositivo (a través de las funciones DxgkDdiPresent y DxgkDdiRender ). Si el controlador no admite la creación de contextos, para cada llamada al controlador que pasaría un identificador a un contexto, el subsistema del kernel de gráficos de Microsoft DirectX reemplaza el identificador al contexto por un identificador para el dispositivo.

VSyncPowerSaveAware

Valor UINT que especifica si el controlador admite la funcionalidad de ahorro de energía de sincronización vertical.

Si VSyncPowerSaveAware está establecido en 1 (TRUE), el sistema operativo puede ahorrar energía deshabilitando y habilitando la interrupción de sincronización vertical que se produce desde el uso de algunas aplicaciones. Si VSyncPowerSaveAware está establecido en cero (FALSE), el sistema operativo nunca deshabilitará la interrupción de sincronización vertical para las aplicaciones que podrían provocar la interrupción de sincronización vertical. Se admite a partir de Windows Server 2008 y Windows Vista con SP1.

PreemptionAware

Valor UINT que especifica si el controlador admite la directiva de adelantamiento de GPU de Windows 8 y versiones posteriores de Windows. Con esta directiva, el sistema operativo siempre emite solicitudes de adelantamiento a la GPU antes de iniciar el proceso **Detección y recuperación de tiempo de espera (TDR). Se admite a partir de Windows 8.

Si PreemptionAware está establecido en 1 (TRUE), el controlador admite la directiva de adelantamiento de Windows 8 y versiones posteriores de Windows. Tenga en cuenta que si PreemptionAware está establecido en 1, el miembro MultiEngineAware también debe establecerse en un valor de 1. Si PreemptionAware está establecido en 1, pero MultiEngineAware está establecido en cero, el sistema operativo detendrá el proceso de inicialización del controlador y devolverá un código de error.

Si PreemptionAware se establece en cero (FALSE), el controlador admite la directiva de adelantamiento de Windows 7. Con esta directiva, es posible que el sistema operativo no emita solicitudes de adelantamiento mientras se ejecutan operaciones de larga duración potencialmente en la GPU. Como resultado, estas solicitudes de GPU no se adelanten antes de que se inicie el proceso de TDR. Esto puede hacer que el proceso de TDR restablezca repetidamente la GPU, lo que podría provocar un error de detención del sistema.

NoDmaPatching

Valor UINT que especifica si el controlador deshabilita la detección de fugas para los búferes DMA divididos en varias partes. Esta detección se realiza después de llamar a la función DxgkDdiPatch del controlador para asignar, o aplicar revisiones, direcciones físicas a cada parte del búfer DMA. Se admite a partir de Windows 8.

Mostrar dispositivos que admiten direcciones virtuales pueden volver a programar una dirección virtual a una nueva ubicación de memoria de vídeo sin tener que aplicar revisiones al valor de la dirección del búfer DMA. Para estos tipos de dispositivos de visualización, el controlador debe establecer NoDmaPatching en 1.

Si NoDmaPatching se establece en 1 (TRUE), el controlador deshabilita la detección de fugas y el comportamiento de la división del búfer DMA es el mismo que en Windows 7. Tenga en cuenta que, cuando NoDmaPatching está establecido en 1, los miembros PreemptionAware y MultiEngineAware también deben establecerse en 1. Si NoDmaPatching está establecido en 1, pero PreemptionAware o MultiEngineAware se establecen en cero, el sistema operativo detendrá el proceso de inicialización del controlador y devolverá un código de error.

Si NoDmaPatching está establecido en 0 (FALSE), el controlador habilita la detección de fugas para las direcciones de búfer de DMA revisadas. El sistema operativo realiza la detección de fugas antes de llamar a la función DxgkDdiPatch del controlador.

CancelCommandAware

Valor UINT que especifica si el controlador admite la limpieza de recursos internos (a través de la función DxgkDdiCancelCommand ) después de quitar un comando de la cola de hardware. Se admite a partir de Windows 8.

Si CancelCommandAware está establecido en 1 (TRUE), el controlador admite la limpieza de recursos asociados a un paquete DMA cancelado. Tenga en cuenta que, cuando CancelCommandAware está establecido en 1, el miembro MultiEngineAware también debe establecerse en 1. Si CancelCommandAware está establecido en 1, pero MultiEngineAware está establecido en cero, el sistema operativo devuelve un código de error.

Si CancelCommandAware está establecido en cero (FALSE), el controlador no admite la limpieza de recursos.

No64BitAtomics

Si No64BitAtomics está establecido en 1 (TRUE), el controlador indica que la GPU solo es capaz de actualizar los valores de 32 bits de forma atómica. En este caso, el sistema operativo controlará automáticamente el caso de ajuste de la barrera, pero colocará una restricción de que los valores pendientes de espera y barrera de señal no puedan ser más de UINT_MAX/2 aparte del último valor de barrera señalizado. Se admite a partir de Windows 10.

Si No64BitAtomics está establecido en cero (FALSE), el controlador indica que la GPU es capaz de actualizar los valores de 64 bits de forma atómica como visibles por la CPU.

LowIrqlPreemptCommand

HwQueuePacketCap

Número máximo de paquetes DMA que se pueden poner en cola en un nodo.

NativeGpuFence

Si el sistema operativo ha habilitado la característica de DXGK_FEATURE_NATIVE_FENCE , el controlador puede declarar la compatibilidad con la funcionalidad de barrera de GPU nativa durante la inicialización del adaptador estableciendo el bit NativeGpuFence en 1. Esta funcionalidad se expone al modo de usuario a través de un bit D3DKMT_WDDM_3_1_CAPS::NativeGpuFenceSupported correspondiente. Para más información, consulte Objetos de barrera de GPU nativas. Disponible a partir de Windows 11, versión 22H2 (WDDM 3.1).

OptimizedNativeFenceSignaledInterrupt

El controlador establece este valor TRUE si, en una interrupción señalada, la GPU puede especificar en DXGKARGCB_NOTIFY_INTERRUPT_DATA::NativeFenceSignaled solo el identificador DE KMD del HWQueue que se estaba ejecutando. Para más información, consulte Objetos de barrera de GPU nativas. Disponible a partir de Windows 11, versión 22H2 (WDDM 3.1).

Reserved

Este miembro está reservado y debe establecerse en cero.

Value

Una manera alternativa de acceder a las marcas de campo de bits en la unión.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista
Encabezado d3dkmddi.h (incluye D3dkmddi.h)

Consulte también

DXGK_DRIVERCAPS

DxgkDdiCancelCommand

DxgkDdiCreateContext

DxgkDdiDestroyContext

DxgkDdiPatch

DxgkDdiPresent

DxgkDdiRender