bool D3D11LayersCrashGuard::UpdateEnvironment() { // Our result can be cached statically since we don't check live prefs. static bool checked = false; static bool changed = false; if (checked) { return changed; } checked = true; // Feature status. #if defined(XP_WIN) bool d2dEnabled = gfxPrefs::Direct2DForceEnabled() || (!gfxPrefs::Direct2DDisabled() && FeatureEnabled(nsIGfxInfo::FEATURE_DIRECT2D)); changed |= CheckAndUpdateBoolPref("feature-d2d", d2dEnabled); bool d3d11Enabled = !gfxPrefs::LayersPreferD3D9(); if (!FeatureEnabled(nsIGfxInfo::FEATURE_DIRECT3D_11_LAYERS)) { d3d11Enabled = false; } changed |= CheckAndUpdateBoolPref("feature-d3d11", d3d11Enabled); #endif if (!changed) { return false; } RecordTelemetry(TelemetryState::EnvironmentChanged); return true; }
void D3D11LayersCrashGuard::Initialize() { if (!XRE_IsParentProcess()) { // We assume the parent process already performed crash detection for // graphics devices. return; } DriverCrashGuard::Initialize(); // If no telemetry states have been recorded, this will set the state to okay. // Otherwise, it will have no effect. RecordTelemetry(TelemetryState::Okay); }
void D3D11LayersCrashGuard::LogFeatureDisabled() { RecordTelemetry(TelemetryState::FeatureDisabled); gfxCriticalNote << "D3D11 layers disabled due to a prior crash."; }
void D3D11LayersCrashGuard::LogCrashRecovery() { RecordTelemetry(TelemetryState::RecoveredFromCrash); gfxCriticalNote << "D3D11 layers just crashed; D3D11 will be disabled."; }
void D3D11LayersCrashGuard::LogFeatureDisabled() { RecordTelemetry(TelemetryState::FeatureDisabled); gfxCriticalError(CriticalLog::DefaultOptions(false)) << "D3D11 layers disabled due to a prior crash."; }
void D3D11LayersCrashGuard::LogCrashRecovery() { RecordTelemetry(TelemetryState::RecoveredFromCrash); gfxCriticalError(CriticalLog::DefaultOptions(false)) << "D3D11 layers just crashed; D3D11 will be disabled."; }