D3DDEVINFO_D3D9INTERFACETIMINGS

Percent of time processing data in the driver. These statistics may help identify cases when the driver is waiting for other resources.

typedef struct D3DDEVINFO_D3D9INTERFACETIMINGS {
    FLOAT WaitingForGPUToUseApplicationResourceTimePercent;
    FLOAT WaitingForGPUToAcceptMoreCommandsTimePercent;
    FLOAT WaitingForGPUToStayWithinLatencyTimePercent;
    FLOAT WaitingForGPUExclusiveResourceTimePercent;
    FLOAT WaitingForGPUOtherTimePercent;
} D3DDEVINFO_D3D9INTERFACETIMINGS, *LPD3DDEVINFO_D3D9INTERFACETIMINGS;

Members

WaitingForGPUToUseApplicationResourceTimePercent
Percentage of time the driver spent waiting for the GPU to finish using a locked resource (and D3DLOCK_DONOTWAIT wasn't specified).
WaitingForGPUToAcceptMoreCommandsTimePercent
Percentage of time the driver spent waiting for the GPU to finish processing some commands before the driver could send more. This indicates the driver has run out of room to send commands to the GPU.
WaitingForGPUToStayWithinLatencyTimePercent

Percentage of time the driver spent waiting for the GPU latency to reduce to less than three rendering frames.

If an application is GPU-limited, the driver must stall the CPU until the GPU gets within three frames. This prevents an application from queueing up many seconds' worth of rendering calls which may dramatically increase the latency between when the user inputs new data and when the user sees the results of that input. In general, the driver can track the number of times IDirect3DDevice9::Present is called to prevent queueing up more than three frames of rendering work.

WaitingForGPUExclusiveResourceTimePercent
Percentage of time the driver spent waiting for a resource that cannot be pipelined (that is operated in parallel). An application may want to avoid using a non-pipelined resource for performance reasons.
WaitingForGPUOtherTimePercent
Percentage of time the driver spent waiting for other GPU processing.

Remarks

These metrics help identify when a driver is waiting and what it is waiting for. High percentages are not necessarily a problem.

These system-global metrics may or may not be implemented. Depending on the specific hardware, these metrics may not support multiple queries simultaneously.

See Also

IDirect3DQuery9::GetData