Bug 1345648 - Add BREAK_ON_D3D_ERROR to DeviceManagerDx - r=kvark

MozReview-Commit-ID: DgHPXgjOi3f
This commit is contained in:
Jeff Gilbert 2017-03-08 17:06:43 -08:00
Родитель 5b899ebc2d
Коммит 4cce4a821f
1 изменённых файлов: 26 добавлений и 0 удалений

Просмотреть файл

@ -367,6 +367,8 @@ DeviceManagerDx::CreateCompositorDevice(FeatureState& d3d11)
mCompositorDevice->SetExceptionMode(0);
}
//#define BREAK_ON_D3D_ERROR
bool
DeviceManagerDx::CreateDevice(IDXGIAdapter* aAdapter,
D3D_DRIVER_TYPE aDriverType,
@ -374,6 +376,10 @@ DeviceManagerDx::CreateDevice(IDXGIAdapter* aAdapter,
HRESULT& aResOut,
RefPtr<ID3D11Device>& aOutDevice)
{
#ifdef BREAK_ON_D3D_ERROR
aFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif
MOZ_SEH_TRY {
aResOut = sD3D11CreateDeviceFn(
aAdapter, aDriverType, nullptr,
@ -383,6 +389,26 @@ DeviceManagerDx::CreateDevice(IDXGIAdapter* aAdapter,
} MOZ_SEH_EXCEPT (EXCEPTION_EXECUTE_HANDLER) {
return false;
}
#ifdef BREAK_ON_D3D_ERROR
do {
if (!aOutDevice)
break;
RefPtr<ID3D11Debug> debug;
if(!SUCCEEDED( aOutDevice->QueryInterface(__uuidof(ID3D11Debug), getter_AddRefs(debug)) ))
break;
RefPtr<ID3D11InfoQueue> infoQueue;
if(!SUCCEEDED( debug->QueryInterface(__uuidof(ID3D11InfoQueue), getter_AddRefs(infoQueue)) ))
break;
infoQueue->SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY_CORRUPTION, true);
infoQueue->SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY_ERROR, true);
infoQueue->SetBreakOnSeverity(D3D11_MESSAGE_SEVERITY_WARNING, true);
} while (false);
#endif
return true;
}