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 |