Expand Minimize

DxgkDdiQueryDependentEngineGroup routine

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

Syntax


PDXGKDDI_QUERYDEPENDENTENGINEGROUP DxgkDdiQueryDependentEngineGroup;

NTSTATUS APIENTRY DxgkDdiQueryDependentEngineGroup(
  _In_     const HANDLE hAdapter,
  _Inout_  DXGKARG_QUERYDEPENDENTENGINEGROUP *pQueryDependentEngineGroup
)
{ ... }

Parameters

hAdapter [in]

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 [in, out]

A value of type DXGKARG_QUERYDEPENDENTENGINEGROUP that specifies all nodes that are 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 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

Minimum supported client

Windows 8

Minimum supported server

Windows Server 2012

Header

D3dkmddi.h (include D3dkmddi.h)

IRQL

PASSIVE_LEVEL

See also

DxgkDdiAddDevice
DxgkDdiResetEngine
DXGK_DRIVERCAPS
DXGKARG_CREATECONTEXT
DXGKARG_QUERYDEPENDENTENGINEGROUP

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft