Commit 558d5eb4 by Jamie Madill

Use a sparse histogram for D3D11CreateDevice errors.

This avoid us needing to capture an enum value for every possible error code. Leave the existing enum values in for now. BUG=477701 Change-Id: Iccaa4d9b732fe4d56432e17578421cba11bcf9ce Reviewed-on: https://chromium-review.googlesource.com/271159Tested-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarBrandon Jones <bajones@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent 72537ef1
...@@ -60,4 +60,7 @@ ...@@ -60,4 +60,7 @@
#define ANGLE_HISTOGRAM_MEMORY_MB(name, sample) ANGLE_HISTOGRAM_CUSTOM_COUNTS( \ #define ANGLE_HISTOGRAM_MEMORY_MB(name, sample) ANGLE_HISTOGRAM_CUSTOM_COUNTS( \
name, sample, 1, 1000, 50) name, sample, 1, 1000, 50)
#define ANGLE_HISTOGRAM_SPARSE_SLOWLY(name, sample) \
ANGLEPlatformCurrent()->histogramSparse(name, sample)
#endif // BASE_METRICS_HISTOGRAM_MACROS_H_ #endif // BASE_METRICS_HISTOGRAM_MACROS_H_
...@@ -159,11 +159,6 @@ void CalculateConstantBufferParams(GLintptr offset, GLsizeiptr size, UINT *outFi ...@@ -159,11 +159,6 @@ void CalculateConstantBufferParams(GLintptr offset, GLsizeiptr size, UINT *outFi
// https://msdn.microsoft.com/en-us/library/windows/desktop/hh404649%28v=vs.85%29.aspx // https://msdn.microsoft.com/en-us/library/windows/desktop/hh404649%28v=vs.85%29.aspx
} }
egl::Error GenerateD3D11CreateDeviceErr(HRESULT errorCode)
{
return egl::Error(EGL_NOT_INITIALIZED, errorCode, "Could not create D3D11 device.");
}
enum ANGLEFeatureLevel enum ANGLEFeatureLevel
{ {
ANGLE_FEATURE_LEVEL_INVALID, ANGLE_FEATURE_LEVEL_INVALID,
...@@ -378,39 +373,12 @@ egl::Error Renderer11::initialize() ...@@ -378,39 +373,12 @@ egl::Error Renderer11::initialize()
&mDeviceContext); &mDeviceContext);
// Cleanup done by destructor // Cleanup done by destructor
if (FAILED(result)) if (!mDevice || FAILED(result))
{
// Most likely error codes, see
// https://msdn.microsoft.com/en-us/library/windows/desktop/ff476082%28v=vs.85%29.aspx
// 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:
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_ERROR);
}
}
if (!mDevice)
{ {
return GenerateD3D11CreateDeviceErr(D3D11_INIT_CREATEDEVICE_NULL); ANGLE_HISTOGRAM_SPARSE_SLOWLY("GPU.ANGLE.D3D11CreateDeviceError", static_cast<int>(result));
return egl::Error(EGL_NOT_INITIALIZED,
D3D11_INIT_CREATEDEVICE_ERROR,
"Could not create D3D11 device.");
} }
double createDeviceSec = ANGLEPlatformCurrent()->currentTime() - createDeviceBegin; double createDeviceSec = ANGLEPlatformCurrent()->currentTime() - createDeviceBegin;
......
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