author | Nicolas Silva <nical@mozilla.com> |
Tue, 08 Apr 2014 14:50:49 +0200 | |
changeset 177464 | 6b1ca7b19fb7c43c91848faec41662077993a272 |
parent 177463 | 646738ed649406c648c121e36523ba2704f68834 |
child 177465 | 2b61df0983d60ea336389200a3b27eddd48bd8ed |
push id | 42028 |
push user | nsilva@mozilla.com |
push date | Tue, 08 Apr 2014 12:52:58 +0000 |
treeherder | mozilla-inbound@6b1ca7b19fb7 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mattwoodrow |
bugs | 993360 |
milestone | 31.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/gfx/layers/client/TextureClient.cpp +++ b/gfx/layers/client/TextureClient.cpp @@ -279,29 +279,36 @@ TextureClient::CreateTextureClientForDra const gfx::IntSize& aSizeHint) { if (aMoz2DBackend == gfx::BackendType::NONE) { aMoz2DBackend = gfxPlatform::GetPlatform()->GetContentBackend(); } RefPtr<TextureClient> result; +#if defined(MOZ_WIDGET_GONK) || defined(XP_WIN) + int32_t maxTextureSize = aAllocator->GetMaxTextureSize(); +#endif + #ifdef XP_WIN LayersBackend parentBackend = aAllocator->GetCompositorBackendType(); if (parentBackend == LayersBackend::LAYERS_D3D11 && (aMoz2DBackend == gfx::BackendType::DIRECT2D || aMoz2DBackend == gfx::BackendType::DIRECT2D1_1) && gfxWindowsPlatform::GetPlatform()->GetD2DDevice() && - + aSizeHint.width <= maxTextureSize && + aSizeHint.height <= maxTextureSize && !(aTextureFlags & TEXTURE_ALLOC_FALLBACK)) { result = new TextureClientD3D11(aFormat, aTextureFlags); } if (parentBackend == LayersBackend::LAYERS_D3D9 && aMoz2DBackend == gfx::BackendType::CAIRO && aAllocator->IsSameProcess() && + aSizeHint.width <= maxTextureSize && + aSizeHint.height <= maxTextureSize && !(aTextureFlags & TEXTURE_ALLOC_FALLBACK)) { if (!gfxWindowsPlatform::GetPlatform()->GetD3D9Device()) { result = new DIBTextureClientD3D9(aFormat, aTextureFlags); } else { result = new CairoTextureClientD3D9(aFormat, aTextureFlags); } } #endif @@ -332,17 +339,16 @@ TextureClient::CreateTextureClientForDra #endif #endif #endif #ifdef MOZ_WIDGET_GONK if (!DisableGralloc(aFormat, aSizeHint)) { // Don't allow Gralloc texture clients to exceed the maximum texture size. // BufferTextureClients have code to handle tiling the surface client-side. - int32_t maxTextureSize = aAllocator->GetMaxTextureSize(); if (aSizeHint.width <= maxTextureSize && aSizeHint.height <= maxTextureSize) { result = new GrallocTextureClientOGL(aAllocator, aFormat, aMoz2DBackend, aTextureFlags); } } #endif // Can't do any better than a buffer texture client.