Bug 1194335. Disable partial present on Nvidia hardware. r=bas

I have a theory that bug 1189940 is caused by partial present. This
is an attempt to see if that's true.

--HG--
extra : rebase_source : 663613989e5a1b012909e1335595fac495c81478
This commit is contained in:
Jeff Muizelaar 2015-09-21 11:52:01 -04:00
Родитель 52972d2713
Коммит 37ae0e16b5
1 изменённых файлов: 9 добавлений и 1 удалений

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

@ -11,6 +11,7 @@
#include "gfxWindowsPlatform.h"
#include "nsIWidget.h"
#include "nsIGfxInfo.h"
#include "mozilla/layers/ImageHost.h"
#include "mozilla/layers/ContentHost.h"
#include "mozilla/layers/Effects.h"
@ -19,6 +20,7 @@
#include "gfxCrashReporterUtils.h"
#include "gfxVR.h"
#include "mozilla/gfx/StackArray.h"
#include "mozilla/Services.h"
#include "mozilla/EnumeratedArray.h"
@ -1200,7 +1202,13 @@ CompositorD3D11::EndFrame()
if (oldSize == mSize) {
RefPtr<IDXGISwapChain1> chain;
HRESULT hr = mSwapChain->QueryInterface((IDXGISwapChain1**)byRef(chain));
if (SUCCEEDED(hr) && chain) {
nsString vendorID;
nsCOMPtr<nsIGfxInfo> gfxInfo = services::GetGfxInfo();
gfxInfo->GetAdapterVendorID(vendorID);
bool isNvidia = vendorID.EqualsLiteral("0x10de") && !gfxWindowsPlatform::GetPlatform()->IsWARP();
if (SUCCEEDED(hr) && chain && !isNvidia) {
// Avoid partial present on Nvidia hardware to try to work around
// bug 1189940
DXGI_PRESENT_PARAMETERS params;
PodZero(&params);
params.DirtyRectsCount = mInvalidRegion.GetNumRects();