Bug 1762025 - Block GPU process on Android versions 12 and above. r=gfx-reviewers,aosmond

On Android version 12, it appears as if the EGL context does not
correctly get detached from a Surface when its process dies. This
means that subsequent attempts to create an EGL context fail, meaning
we cannot render anything.

This results in a completely unusable browser following a GPU process
crash, which is worse than the alternative of a parent process crash.

Block the GPU process on Android 12 and above until we have found a
workaround.

Differential Revision: https://phabricator.services.mozilla.com/D142452
This commit is contained in:
Jamie Nicol 2022-03-30 13:37:19 +00:00
Родитель 376cbd6128
Коммит dbde42a288
1 изменённых файлов: 14 добавлений и 0 удалений

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

@ -697,6 +697,20 @@ nsresult GfxInfo::GetFeatureStatusImpl(
return NS_OK;
}
if (aFeature == FEATURE_GPU_PROCESS) {
// On Android 12 the EGL context isn't correctly detached from the Surface
// when the process dies, meaning we are subsequently unable to create new
// EGL contexts. Block the GPU process on Android 12 and above until we find
// a solution. See bug 1762025.
if (mSDKVersion >= 31) {
*aStatus = nsIGfxInfo::FEATURE_BLOCKED_OS_VERSION;
aFailureId = "FEATURE_FAILURE_ANDROID_12";
} else {
*aStatus = nsIGfxInfo::FEATURE_STATUS_OK;
}
return NS_OK;
}
return GfxInfoBase::GetFeatureStatusImpl(
aFeature, aStatus, aSuggestedDriverVersion, aDriverInfo, aFailureId, &os);
}