Commit 6afcd6dd by Jamie Madill

Refactor CreateDevice error checking.

Also return a different code for a NULL pointer, vs a failed call. BUG=477701 Change-Id: Ib0584371d51b99760e80ce5481a1e72e1ec673e0 Reviewed-on: https://chromium-review.googlesource.com/267753Tested-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Reviewed-by: 's avatarBrandon Jones <bajones@chromium.org>
parent 4d16f6d8
...@@ -353,37 +353,41 @@ egl::Error Renderer11::initialize() ...@@ -353,37 +353,41 @@ egl::Error Renderer11::initialize()
&mDeviceContext); &mDeviceContext);
// Cleanup done by destructor // Cleanup done by destructor
if (FAILED(result))
// Most likely error codes, see {
// https://msdn.microsoft.com/en-us/library/windows/desktop/ff476082%28v=vs.85%29.aspx // Most likely error codes, see
// And https://msdn.microsoft.com/en-us/library/windows/desktop/ff476174(v=vs.85).aspx // https://msdn.microsoft.com/en-us/library/windows/desktop/ff476082%28v=vs.85%29.aspx
switch (result) // And https://msdn.microsoft.com/en-us/library/windows/desktop/ff476174(v=vs.85).aspx
{ switch (result)
case E_INVALIDARG:
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_INVALIDARG);
case E_FAIL:
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_FAIL);
case E_NOTIMPL:
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_NOTIMPL);
case E_OUTOFMEMORY:
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_OUTOFMEMORY);
case DXGI_ERROR_INVALID_CALL:
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_INVALIDCALL);
case DXGI_ERROR_SDK_COMPONENT_MISSING:
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_COMPONENTMISSING);
case DXGI_ERROR_WAS_STILL_DRAWING:
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_WASSTILLDRAWING);
case DXGI_ERROR_NOT_CURRENTLY_AVAILABLE:
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_NOTAVAILABLE);
case DXGI_ERROR_DEVICE_HUNG:
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_DEVICEHUNG);
default:
if (!mDevice || FAILED(result))
{ {
case E_INVALIDARG:
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_INVALIDARG);
case E_FAIL:
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_FAIL);
case E_NOTIMPL:
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_NOTIMPL);
case E_OUTOFMEMORY:
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_OUTOFMEMORY);
case DXGI_ERROR_INVALID_CALL:
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_INVALIDCALL);
case DXGI_ERROR_SDK_COMPONENT_MISSING:
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_COMPONENTMISSING);
case DXGI_ERROR_WAS_STILL_DRAWING:
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_WASSTILLDRAWING);
case DXGI_ERROR_NOT_CURRENTLY_AVAILABLE:
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_NOTAVAILABLE);
case DXGI_ERROR_DEVICE_HUNG:
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_DEVICEHUNG);
default:
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_ERROR); return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_ERROR);
} }
} }
if (!mDevice)
{
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_NULL);
}
double createDeviceSec = ANGLEPlatformCurrent()->currentTime() - createDeviceBegin; double createDeviceSec = ANGLEPlatformCurrent()->currentTime() - createDeviceBegin;
int createDeviceMS = static_cast<int>(createDeviceSec * 1000); int createDeviceMS = static_cast<int>(createDeviceSec * 1000);
ANGLE_HISTOGRAM_TIMES("GPU.ANGLE.D3D11CreateDeviceMS", createDeviceMS); ANGLE_HISTOGRAM_TIMES("GPU.ANGLE.D3D11CreateDeviceMS", createDeviceMS);
......
...@@ -78,6 +78,8 @@ enum D3D11InitError ...@@ -78,6 +78,8 @@ enum D3D11InitError
D3D11_INIT_CREATEDEVICE_NOTAVAILABLE, D3D11_INIT_CREATEDEVICE_NOTAVAILABLE,
// CreateDevice returned DXGI_ERROR_DEVICE_HUNG // CreateDevice returned DXGI_ERROR_DEVICE_HUNG
D3D11_INIT_CREATEDEVICE_DEVICEHUNG, D3D11_INIT_CREATEDEVICE_DEVICEHUNG,
// CreateDevice returned NULL
D3D11_INIT_CREATEDEVICE_NULL,
NUM_D3D11_INIT_ERRORS NUM_D3D11_INIT_ERRORS
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment