Driver Internal Errors

In Microsoft?DirectX?8.0, applications could receive D3DERR_DRIVERINTERNALERROR from Createxxx calls; 3-D rendering calls would never return it. Instead, if D3DERR_DRIVERINTERNALERROR happened in the 3-D rendering operations, the runtime would partially reset the internal data structures and then attempt to carry on with debug information, saying that something failed. This usually resulted in an application fault or an operating system failure.

In DirectX 9.0, the following happens:

If D3DERR_DRIVERINTERNALERROR is returned from a Createxxx call, it should not be considered fatal. The driver should treat it similar to a D3DERR_UNSUPPORTED or D3DERR_OUTOFMEMORY error.

If D3DERR_DRIVERINTERNALERROR happens during 3-D rendering, the runtime returns it at the IDirect3DDevice9::Present call. The application can do one of the following:

End, with the pop-up window saying that the application cannot continue because of problems in the display adapter and that the user should contact the adapter manufacturer.

Attempt to restart by calling IDirect3DDevice9::Reset, which is essentially the same path as recovering from a lost device. If IDirect3DDevice9::Reset fails with D3DERR_DRIVERINTERNALERROR, the application should end immediately with the message that the user should contact the adapter manufacturer.