// d3dkmthk.h
NTSTATUS D3DKMTConnectDoorbell(
D3DKMT_CONNECT_DOORBELL *unnamedParam1
);
View the official Windows Driver Kit DDI referenceNo description available.
D3DKMTConnectDoorbell connects (or reconnects) a previously created doorbell to a hardware queue.
unnamedParam1[in] Pointer to a **D3DKMT_CONNECT_DOORBELL** structure that describes the doorbell to connect.
D3DKMTConnectDoorbell returns STATUS_SUCCESS when the OS successfully connects the doorbell to the hardware queue and UMD can use this doorbell for work submission. Typically this call should not fail; however, a failure code would be from GPU lost or stop kinds of irrecoverable scenarios.
Each time the UMD submits new work to the hardware queue and rings the doorbell, it must read the DoorbellStatusCPUVirtualAddress to check whether the doorbell ring succeeded. On failure, UMD must call D3DKMTConnectDoorbell to reconnect the doorbell and then try the submission again.
A doorbell can be disconnected for several reasons:
When UMD calls D3DKMTConnectDoorbell to connect the doorbell assigned to a hardware queue, the OS makes a corresponding DxgkDdiConnectDoorbell call to KMD, so that the KMD can find a physical doorbell, assign it to this hardware queue, and make the required connections between the hardware queue, doorbell, GPU scheduler and so forth.
For more information, see User-mode work submission.