DXGK_VIDSCHCAPS structure (d3dkmddi.h)

The DXGK_VIDSCHCAPS structure identifies the graphics processing unit (GPU) scheduling capabilities, in bit-field flags, that a driver can support.

Syntax

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;
#if ...
      UINT Reserved : 20;
#elif
      UINT Reserved : 21;
#elif
      UINT Reserved : 25;
#elif
      UINT Reserved : 27;
#else
      UINT Reserved : 30;
#endif
    };
    UINT Value;
  };
} DXGK_VIDSCHCAPS;

Members

MultiEngineAware

A UINT value that specifies whether the driver supports the creation and destruction of a device context (through the DxgkDdiCreateContext and DxgkDdiDestroyContext functions) and the use of a device context (through the DxgkDdiPresent and DxgkDdiRender functions). If the driver does not support context creation, for every call to the driver that would pass a handle to a context, the Microsoft DirectX graphics kernel subsystem replaces the handle to the context with a handle to the device.

Setting this member is equivalent to setting the first bit of the 32-bit Value member (0x00000001).

VSyncPowerSaveAware

A UINT value that specifies whether the driver supports vertical-sync power-saving functionality.

If VSyncPowerSaveAware is set to 1 (TRUE), the operating system can save power by disabling and enabling the vertical-sync interrupt that occurs from the usage of some applications. If VSyncPowerSaveAware is set to zero (FALSE), the operating system will never disable the vertical-sync interrupt for applications that might cause the vertical-sync interrupt to occur.

Setting this member is equivalent to setting the second bit of the 32-bit Value member (0x00000002).

Supported starting with Windows Server 2008 and Windows Vista with SP1.

PreemptionAware

A UINT value that specifies whether the driver supports the GPU preemption policy of Windows 8 and later versions of Windows. With this policy, the operating system always issues preemption requests to the GPU before it initiates the **Timeout Detection and Recovery (TDR) process.

If PreemptionAware is set to 1 (TRUE), the driver supports the preemption policy of Windows 8 and later versions of Windows.

If PreemptionAware is set to zero (FALSE), the driver supports the preemption policy of Windows 7. With this policy, the operating system may not issue preemption requests while potentially long running operations are being executed on the GPU. As a result, these GPU requests are not preempted before the TDR process is initiated. This may cause the TDR process to repeatedly reset the GPU which could lead to a system stop error.

Note

If PreemptionAware is set to 1, the MultiEngineAware member must also be set to a value of 1. If PreemptionAware is set to 1 but MultiEngineAware is set to zero, the operating system will halt the driver initialization process and return a failure code.

Setting this member is equivalent to setting the third bit of the 32-bit Value member (0x00000004).

Supported starting with Windows 8.

NoDmaPatching

A UINT value that specifies whether the driver disables leak detection for DMA buffers that are split into multiple parts. This detection is performed after the driver's DxgkDdiPatch function is called to assign, or patch, physical addresses to each part of the DMA buffer.

Note

Display devices that support virtual addresses can reprogram a virtual address to a new video memory location without having to patch the value of the DMA buffer address. For these types of display devices, the driver should set NoDmaPatching to 1.

If NoDmaPatching is set to 1 (TRUE), the driver disables leak detection, and the behavior of DMA buffer splitting is the same as in Windows 7.

If NoDmaPatching is set to 0 (FALSE), the driver enables leak detection for patched DMA buffer addresses. The operating system performs leak detection before it calls the driver's DxgkDdiPatch function.

Note

If NoDmaPatching is set to 1, the PreemptionAware and MultiEngineAware members must also be set to a value of 1. If NoDmaPatching is set to 1 but PreemptionAware or MultiEngineAware are set to zero, the operating system will halt the driver initialization process and return a failure code.

Setting this member is equivalent to setting the fourth bit of the 32-bit Value member (0x0000008).

Supported starting with Windows 8.

CancelCommandAware

A UINT value that specifies whether the driver supports cleaning up internal resources (through the DxgkDdiCancelCommand function) after a command is removed from the hardware queue.

If CancelCommandAware is set to 1 (TRUE), the driver supports cleaning up resources associated with a canceled DMA packet. If CancelCommandAware is set to zero (FALSE), the driver does not support cleaning up resources.

Note

If CancelCommandAware is set to 1, the MultiEngineAware member must also be set to a value of 1. If CancelCommandAware is set to 1 but MultiEngineAware is set to zero, the operating system returns a failure code.

Setting this member is equivalent to setting the fifth bit of the 32-bit Value member (0x0000010).

Supported starting with Windows 8.

No64BitAtomics

Value Meaning
TRUE Indicates a GPU is capable of only updating 32 bit values atomically. In this case, the OS will handle the fence wraparound case automatically, however it will place a restriction that an outstanding wait and signal fence values cannot be more than UINT_MAX/2 apart from the last signaled fence value.
FALSE Indicates a GPU is capable of updating 64 bit values atomically as visible by the CPU.

Supported starting with Windows 10.

LowIrqlPreemptCommand

HwQueuePacketCap

Maximum number of DMA packets allowed to be queued to a node.

NativeGpuFence

Reserved

This member is reserved and should be set to zero.

Value

A member in the union that DXGK_VIDSCHCAPS contains that can hold a 32-bit value that identifies the GPU scheduling capabilities that the driver can support.

Requirements

Requirement Value
Minimum supported client Available beginning with Windows Vista.
Header d3dkmddi.h (include D3dkmddi.h)

See also

DXGK_DRIVERCAPS

DxgkDdiCancelCommand

DxgkDdiCreateContext

DxgkDdiDestroyContext

DxgkDdiPatch

DxgkDdiPresent

DxgkDdiRender