Changeset View
Changeset View
Standalone View
Standalone View
mail/thunderbird/files/patch-bug1411481
- This file was added.
commit 57a55d1c2d33 | |||||
Author: sotaro <sotaro.ikeda.g@gmail.com> | |||||
Date: Wed Mar 21 08:59:38 2018 +0900 | |||||
Bug 1411481- Enable SkiaGL canvas usage on Mac r=jrmuizel | |||||
--- | |||||
dom/canvas/CanvasRenderingContext2D.cpp | 3 ++- | |||||
gfx/thebes/gfxPlatform.cpp | 3 ++- | |||||
gfx/thebes/gfxPlatform.h | 2 +- | |||||
gfx/thebes/gfxWindowsPlatform.cpp | 7 +++++++ | |||||
gfx/thebes/gfxWindowsPlatform.h | 2 ++ | |||||
5 files changed, 14 insertions(+), 3 deletions(-) | |||||
diff --git dom/canvas/CanvasRenderingContext2D.cpp dom/canvas/CanvasRenderingContext2D.cpp | |||||
index ef3f868bdbf7..8666564b4d0c 100644 | |||||
--- mozilla/dom/canvas/CanvasRenderingContext2D.cpp | |||||
+++ mozilla/dom/canvas/CanvasRenderingContext2D.cpp | |||||
@@ -1438,7 +1438,8 @@ CanvasRenderingContext2D::AllowOpenGLCanvas() const | |||||
// HTMLCanvasElement::GetCompositorBackendType would return LAYERS_NONE | |||||
// as well, so it wouldn't help much. | |||||
- return (mCompositorBackend == LayersBackend::LAYERS_OPENGL) && | |||||
+ return (mCompositorBackend == LayersBackend::LAYERS_OPENGL || | |||||
+ mCompositorBackend == LayersBackend::LAYERS_WR) && | |||||
gfxPlatform::GetPlatform()->AllowOpenGLCanvas(); | |||||
} | |||||
diff --git gfx/thebes/gfxPlatform.cpp gfx/thebes/gfxPlatform.cpp | |||||
index b9beea68d8c5..82635f9ab3ce 100644 | |||||
--- mozilla/gfx/thebes/gfxPlatform.cpp | |||||
+++ mozilla/gfx/thebes/gfxPlatform.cpp | |||||
@@ -1386,7 +1386,8 @@ bool gfxPlatform::AllowOpenGLCanvas() | |||||
// so we let content process always assume correct compositor backend. | |||||
// The callers have to do the right thing. | |||||
bool correctBackend = !XRE_IsParentProcess() || | |||||
- ((mCompositorBackend == LayersBackend::LAYERS_OPENGL) && | |||||
+ ((mCompositorBackend == LayersBackend::LAYERS_OPENGL || | |||||
+ mCompositorBackend == LayersBackend::LAYERS_WR) && | |||||
(GetContentBackendFor(mCompositorBackend) == BackendType::SKIA)); | |||||
if (gfxPrefs::CanvasAzureAccelerated() && correctBackend) { | |||||
diff --git gfx/thebes/gfxPlatform.h gfx/thebes/gfxPlatform.h | |||||
index c988eb1168a8..3bbf2b763f26 100644 | |||||
--- mozilla/gfx/thebes/gfxPlatform.h | |||||
+++ mozilla/gfx/thebes/gfxPlatform.h | |||||
@@ -286,7 +286,7 @@ public: | |||||
/// asking for it, we will examine the commands in the first few seconds | |||||
/// of the canvas usage, and potentially change to accelerated or | |||||
/// non-accelerated canvas. | |||||
- bool AllowOpenGLCanvas(); | |||||
+ virtual bool AllowOpenGLCanvas(); | |||||
virtual void InitializeSkiaCacheLimits(); | |||||
static bool AsyncPanZoomEnabled(); | |||||
diff --git gfx/thebes/gfxWindowsPlatform.cpp gfx/thebes/gfxWindowsPlatform.cpp | |||||
index 9ba6f40c6cc0..4d65791d075f 100644 | |||||
--- mozilla/gfx/thebes/gfxWindowsPlatform.cpp | |||||
+++ mozilla/gfx/thebes/gfxWindowsPlatform.cpp | |||||
@@ -509,6 +509,13 @@ gfxWindowsPlatform::UpdateRenderMode() | |||||
} | |||||
} | |||||
+bool | |||||
+gfxWindowsPlatform::AllowOpenGLCanvas() | |||||
+{ | |||||
+ // OpenGL canvas is not supported on windows | |||||
+ return false; | |||||
+} | |||||
+ | |||||
mozilla::gfx::BackendType | |||||
gfxWindowsPlatform::GetContentBackendFor(mozilla::layers::LayersBackend aLayers) | |||||
{ | |||||
diff --git gfx/thebes/gfxWindowsPlatform.h gfx/thebes/gfxWindowsPlatform.h | |||||
index 47048de8f5f5..47ec0e9e5547 100644 | |||||
--- mozilla/gfx/thebes/gfxWindowsPlatform.h | |||||
+++ mozilla/gfx/thebes/gfxWindowsPlatform.h | |||||
@@ -174,6 +174,8 @@ public: | |||||
void SchedulePaintIfDeviceReset() override; | |||||
void CheckForContentOnlyDeviceReset(); | |||||
+ bool AllowOpenGLCanvas() override; | |||||
+ | |||||
mozilla::gfx::BackendType GetContentBackendFor(mozilla::layers::LayersBackend aLayers) override; | |||||
mozilla::gfx::BackendType GetPreferredCanvasBackend() override; |