зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1680087 - Disable webrender partial present on Mali-T6xx and T7xx. r=aosmond
Due to rendering issues reported on a Mali-T628 and Mali-T760, disable partial present on all Mali-T6xx and T7xx devices. We know that not all T6xx and T7xx devices are affected, so this is being cautious. The driver version is probably more important than the GPU model. We should make the block more precise once more is known about the bug. Differential Revision: https://phabricator.services.mozilla.com/D104678
This commit is contained in:
Родитель
2d9a1618aa
Коммит
d636995f23
|
@ -390,6 +390,17 @@ void gfxConfigManager::ConfigureWebRender() {
|
|||
if (mWrPartialPresent) {
|
||||
if (mFeatureWr->IsEnabled() || mFeatureWrSoftware->IsEnabled()) {
|
||||
mFeatureWrPartial->EnableByDefault();
|
||||
|
||||
nsString adapter;
|
||||
mGfxInfo->GetAdapterDeviceID(adapter);
|
||||
// Block partial present on Mali-T6xx and T7xx GPUs due to rendering
|
||||
// issues. See bug 1680087.
|
||||
if (adapter.Find("Mali-T6", /*ignoreCase*/ true) >= 0 ||
|
||||
adapter.Find("Mali-T7", /*ignoreCase*/ true) >= 0) {
|
||||
mFeatureWrPartial->Disable(FeatureStatus::Blocked,
|
||||
"Partial present blocked on Mali-Txxx",
|
||||
"FEATURE_FAILURE_PARTIAL_PRESENT_MALI"_ns);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@ class MockGfxInfo final : public nsIGfxInfo {
|
|||
bool mHasMixedRefreshRate;
|
||||
Maybe<bool> mHasBattery;
|
||||
const char* mVendorId;
|
||||
const char* mDeviceId;
|
||||
|
||||
// Default allows WebRender + compositor, and is desktop NVIDIA.
|
||||
MockGfxInfo()
|
||||
|
@ -35,7 +36,8 @@ class MockGfxInfo final : public nsIGfxInfo {
|
|||
mMaxRefreshRate(-1),
|
||||
mHasMixedRefreshRate(false),
|
||||
mHasBattery(Some(false)),
|
||||
mVendorId("0x10de") {}
|
||||
mVendorId("0x10de"),
|
||||
mDeviceId("") {}
|
||||
|
||||
NS_IMETHOD GetFeatureStatus(int32_t aFeature, nsACString& aFailureId,
|
||||
int32_t* _retval) override {
|
||||
|
@ -71,6 +73,14 @@ class MockGfxInfo final : public nsIGfxInfo {
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHOD GetAdapterDeviceID(nsAString& aAdapterDeviceID) override {
|
||||
if (!mDeviceId) {
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
aAdapterDeviceID.AssignASCII(mDeviceId);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHOD_(int32_t) GetMaxRefreshRate(bool* aMixed) override {
|
||||
if (aMixed) {
|
||||
*aMixed = mHasMixedRefreshRate;
|
||||
|
@ -168,9 +178,6 @@ class MockGfxInfo final : public nsIGfxInfo {
|
|||
NS_IMETHOD GetAdapterDriver(nsAString& aAdapterDriver) override {
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
NS_IMETHOD GetAdapterDeviceID(nsAString& aAdapterDeviceID) override {
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
NS_IMETHOD GetAdapterSubsysID(nsAString& aAdapterSubsysID) override {
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
@ -340,6 +347,14 @@ TEST_F(GfxConfigManager, WebRenderNoPartialPresent) {
|
|||
EXPECT_FALSE(mFeatures.mWrSoftware.IsEnabled());
|
||||
}
|
||||
|
||||
TEST_F(GfxConfigManager, WebRenderPartialPresentMali) {
|
||||
mWrPartialPresent = true;
|
||||
mMockGfxInfo->mDeviceId = "Mali-T760";
|
||||
ConfigureWebRender();
|
||||
|
||||
EXPECT_FALSE(mFeatures.mWrPartial.IsEnabled());
|
||||
}
|
||||
|
||||
TEST_F(GfxConfigManager, WebRenderScaledResolutionWithHwStretching) {
|
||||
mScaledResolution = true;
|
||||
ConfigureWebRender();
|
||||
|
|
Загрузка…
Ссылка в новой задаче