aboutsummaryrefslogtreecommitdiff
path: root/www/firefox/files/patch-bug1411481
blob: d8e9992e264bdebe0db18ff07c28cfbc1d44c741 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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
--- dom/canvas/CanvasRenderingContext2D.cpp
+++ 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
--- gfx/thebes/gfxPlatform.cpp
+++ 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
--- gfx/thebes/gfxPlatform.h
+++ 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
--- gfx/thebes/gfxWindowsPlatform.cpp
+++ 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
--- gfx/thebes/gfxWindowsPlatform.h
+++ 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;