DXGKDDI_QUERYDEPENDENTENGINEGROUP callback function (d3dkmddi.h)

DXGKDDI_QUERYDEPENDENTENGINEGROUP is called by the display port driver's GPU scheduler to query dependencies of nodes in a physical display adapter.

Syntax

DXGKDDI_QUERYDEPENDENTENGINEGROUP DxgkddiQuerydependentenginegroup;

NTSTATUS DxgkddiQuerydependentenginegroup(
  IN_CONST_HANDLE hAdapter,
  INOUT_DXGKARG_QUERYDEPENDENTENGINEGROUP pQueryDependentEngineGroup
)
{...}

Parameters

hAdapter

A handle to a context block that is associated with a display adapter. The display miniport driver previously provided this handle to the DirectX graphics kernel subsystem in the MiniportDeviceContext output parameter of the DxgkDdiAddDevice function.

pQueryDependentEngineGroup

A value of type DXGKARG_QUERYDEPENDENTENGINEGROUP that specifies all nodes affected by the reset operation.

Return value

Returns STATUS_SUCCESS if it succeeds. Otherwise, it returns one of the error codes defined in Ntstatus.h.

Remarks

This function is used to describe all physical adapters (engines) that are affected by an engine reset request. It helps improve user experience on hardware architectures that have dependencies among multiple engines that can affect the reset process. Note that all affected nodes must have the same engine affinity value. (See the engine affinity discussion in TDR changes in Windows 8.)

The display port driver's GPU scheduler calls DxgkDdiQueryDependentEngineGroup every time it calls the DxgkDdiResetEngine function. The GPU scheduler waits 500 milliseconds for the display miniport driver to complete preemption of all dependent engines. For any engines for which the driver cannot complete a preemption, the GPU scheduler calls the DxgkDdiResetEngine function sequentially based upon the engine ordinal value.

Here is an example of how to compute the bitmask in the DXGKARG_QUERYDEPENDENTENGINEGROUP.DependentNodeOrdinalMask member. If the original values of the DXGKARG_QUERYDEPENDENTENGINEGROUP structure's NodeOrdinal and EngineOrdinal members are 1 and 0, respectively, and additional nodes with identifiers 2 and 4 will also be reset when node 1 is reset, the driver should set the binary value of DependentNodeOrdinalMask to 10110, or 0x16 in hexadecimal notation. The index value EngineOrdinal is assumed to be identical for all dependent nodes. The node being reset is included in the DependentNodeOrdinalMask bit mask.

This function should be made pageable, and it should always succeed.

The operating system guarantees that this function follows the first level synchronization mode as defined in Threading and Synchronization First Level.

For more information, see TDR changes in Windows 8.

Requirements

Requirement Value
Minimum supported client Windows 8
Minimum supported server Windows Server 2012
Target Platform Desktop
Header d3dkmddi.h
IRQL PASSIVE_LEVEL

See also

DXGKARG_CREATECONTEXT

DXGKARG_QUERYDEPENDENTENGINEGROUP

DXGK_DRIVERCAPS

DxgkDdiAddDevice

DxgkDdiResetEngine