Bug 1558374 - Avoid using scissored glClear() on Mali-Gxx. r=kvark,geckoview-reviewers,snorp

On Mali-G71 and G72 we see artifacts when scrolling around pages, in the form of
black squares or bits of content appearing in the wrong location. This appears
to be due to a driver bug when calling glClear() to clear a picture cache tile
texture with a scissor rect set.

We encountered a similar issue on some Intel hardware in bug 1638672, and worked
around it by using a custom shader to clear the texture rather than
glClear. This change applies this work around to Mali-Gxx devices too.

Differential Revision: https://phabricator.services.mozilla.com/D85867
This commit is contained in:
Jamie Nicol 2020-08-05 18:50:12 +00:00
Родитель a24ad1c55b
Коммит f070646027
1 изменённых файлов: 4 добавлений и 2 удалений

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

@ -595,8 +595,10 @@ nsresult GfxInfo::GetFeatureStatusImpl(
}
if (aFeature == FEATURE_WEBRENDER_SCISSORED_CACHE_CLEARS) {
const bool isMali = false; // TODO
if (isMali) {
// Mali-G71 and G72 (and presumably others) are buggy when attempting
// to clear picture cache textures with a scissor rect set.
const bool isMaliGxx = mGLStrings->Renderer().Find("Mali-G", /*ignoreCase*/ true) >= 0;
if (isMaliGxx) {
*aStatus = nsIGfxInfo::FEATURE_BLOCKED_DEVICE;
aFailureId = "FEATURE_FAILURE_BUG_1603515";
} else {