Bug 1142516 - Improve assertions and logging on the compositor side. r=Bas

This commit is contained in:
Nicolas Silva 2015-04-07 16:17:15 +02:00
parent 0b1f75bea0
commit e81603747c
2 changed files with 28 additions and 22 deletions

View File

@ -1458,18 +1458,24 @@ CompositorD3D11::HandleError(HRESULT hr, Severity aSeverity)
if (SUCCEEDED(hr)) {
return;
}
// XXX - It would be nice to use gfxCriticalError, but it needs to
// be made to work off the main thread first.
//MOZ_ASSERT(aSeverity != DebugAssert);
if (aSeverity == Critical) {
MOZ_CRASH("Unrecoverable D3D11 error");
}
if (mDevice && hr == DXGI_ERROR_DEVICE_REMOVED) {
bool deviceRemoved = hr == DXGI_ERROR_DEVICE_REMOVED;
if (deviceRemoved && mDevice) {
hr = mDevice->GetDeviceRemovedReason();
}
// Device reset may not be an error on our side, but can mess things up so
// it's useful to see it in the reports.
gfxCriticalError(CriticalLog::DefaultOptions(!deviceRemoved))
<< (deviceRemoved ? "[CompositorD3D11] device removed with error code: "
: "[CompositorD3D11] error code: ")
<< hexa(hr);
// Always crash if we are making invalid calls
if (hr == DXGI_ERROR_INVALID_CALL) {
MOZ_CRASH("Invalid D3D11 api call");

View File

@ -240,7 +240,7 @@ DeviceManagerD3D9::Init()
mD3D9 = dont_AddRef(d3d9Create(D3D_SDK_VERSION));
if (!mD3D9) {
gfxCriticalError() << "[D3D9] Failed to create the device";
gfxCriticalError() << "[D3D9] Failed to create the IDirect3D9 object";
return false;
}
}
@ -249,7 +249,7 @@ DeviceManagerD3D9::Init()
hr = mD3D9->GetAdapterIdentifier(D3DADAPTER_DEFAULT, 0, &ident);
if (FAILED(hr)) {
gfxCriticalError() << "[D3D9] Failed to create the environment";
gfxCriticalError() << "[D3D9] Failed to create the environment code: " << gfx::hexa(hr);
return false;
}
@ -331,13 +331,13 @@ DeviceManagerD3D9::Init()
mNv3DVUtils->SetDeviceInfo(devUnknown);
}
auto failCreateShaderMsg = "[D3D9] failed to create a critical resource (shader)";
auto failCreateShaderMsg = "[D3D9] failed to create a critical resource (shader) code: ";
hr = mDevice->CreateVertexShader((DWORD*)LayerQuadVS,
getter_AddRefs(mLayerVS));
if (FAILED(hr)) {
gfxCriticalError() << failCreateShaderMsg;
gfxCriticalError() << failCreateShaderMsg << gfx::hexa(hr);
return false;
}
@ -345,7 +345,7 @@ DeviceManagerD3D9::Init()
getter_AddRefs(mRGBPS));
if (FAILED(hr)) {
gfxCriticalError() << failCreateShaderMsg;
gfxCriticalError() << failCreateShaderMsg << gfx::hexa(hr);
return false;
}
@ -353,7 +353,7 @@ DeviceManagerD3D9::Init()
getter_AddRefs(mRGBAPS));
if (FAILED(hr)) {
gfxCriticalError() << failCreateShaderMsg;
gfxCriticalError() << failCreateShaderMsg << gfx::hexa(hr);
return false;
}
@ -361,7 +361,7 @@ DeviceManagerD3D9::Init()
getter_AddRefs(mComponentPass1PS));
if (FAILED(hr)) {
gfxCriticalError() << failCreateShaderMsg;
gfxCriticalError() << failCreateShaderMsg << gfx::hexa(hr);
return false;
}
@ -369,7 +369,7 @@ DeviceManagerD3D9::Init()
getter_AddRefs(mComponentPass2PS));
if (FAILED(hr)) {
gfxCriticalError() << failCreateShaderMsg;
gfxCriticalError() << failCreateShaderMsg << gfx::hexa(hr);
return false;
}
@ -377,7 +377,7 @@ DeviceManagerD3D9::Init()
getter_AddRefs(mYCbCrPS));
if (FAILED(hr)) {
gfxCriticalError() << failCreateShaderMsg;
gfxCriticalError() << failCreateShaderMsg << gfx::hexa(hr);
return false;
}
@ -393,14 +393,14 @@ DeviceManagerD3D9::Init()
getter_AddRefs(mLayerVSMask));
if (FAILED(hr)) {
gfxCriticalError() << failCreateShaderMsg;
gfxCriticalError() << failCreateShaderMsg << gfx::hexa(hr);
return false;
}
hr = mDevice->CreateVertexShader((DWORD*)LayerQuadVSMask3D,
getter_AddRefs(mLayerVSMask3D));
if (FAILED(hr)) {
gfxCriticalError() << failCreateShaderMsg;
gfxCriticalError() << failCreateShaderMsg << gfx::hexa(hr);
return false;
}
@ -408,7 +408,7 @@ DeviceManagerD3D9::Init()
getter_AddRefs(mRGBPSMask));
if (FAILED(hr)) {
gfxCriticalError() << failCreateShaderMsg;
gfxCriticalError() << failCreateShaderMsg << gfx::hexa(hr);
return false;
}
@ -416,7 +416,7 @@ DeviceManagerD3D9::Init()
getter_AddRefs(mRGBAPSMask));
if (FAILED(hr)) {
gfxCriticalError() << failCreateShaderMsg;
gfxCriticalError() << failCreateShaderMsg << gfx::hexa(hr);
return false;
}
@ -424,7 +424,7 @@ DeviceManagerD3D9::Init()
getter_AddRefs(mRGBAPSMask3D));
if (FAILED(hr)) {
gfxCriticalError() << failCreateShaderMsg;
gfxCriticalError() << failCreateShaderMsg << gfx::hexa(hr);
return false;
}
@ -432,7 +432,7 @@ DeviceManagerD3D9::Init()
getter_AddRefs(mComponentPass1PSMask));
if (FAILED(hr)) {
gfxCriticalError() << failCreateShaderMsg;
gfxCriticalError() << failCreateShaderMsg << gfx::hexa(hr);
return false;
}
@ -448,7 +448,7 @@ DeviceManagerD3D9::Init()
getter_AddRefs(mYCbCrPSMask));
if (FAILED(hr)) {
gfxCriticalError() << failCreateShaderMsg;
gfxCriticalError() << failCreateShaderMsg << gfx::hexa(hr);
return false;
}
@ -456,7 +456,7 @@ DeviceManagerD3D9::Init()
getter_AddRefs(mSolidColorPSMask));
if (FAILED(hr)) {
gfxCriticalError() << failCreateShaderMsg;
gfxCriticalError() << failCreateShaderMsg << gfx::hexa(hr);
return false;
}
@ -467,7 +467,7 @@ DeviceManagerD3D9::Init()
hr = mDevice->SetStreamSource(0, mVB, 0, sizeof(vertex));
if (FAILED(hr)) {
gfxCriticalError() << "[D3D9] Failed to set the stream source";
gfxCriticalError() << "[D3D9] Failed to set the stream source code: " << gfx::hexa(hr);
return false;
}