Title: [214769] releases/WebKitGTK/webkit-2.16/Source/WebCore
Revision
214769
Author
carlo...@webkit.org
Date
2017-04-03 04:11:28 -0700 (Mon, 03 Apr 2017)

Log Message

Merge r214162 - [Cairo] Ensure depth and stencil renderbuffers are created on GLESv2
https://bugs.webkit.org/show_bug.cgi?id=166643

Patch by Emanuele Aina <emanuele.a...@collabora.com> on 2017-03-20
Reviewed by Darin Adler.

If the gfx device doesn't support GL_OES_packed_depth_stencil, the
separate depth and stencil buffers are not generated.

Copy what GraphicsContext3DEfl used to do and apply it in
GraphicsContext3DCairo.

The Intel gfx driver seem to tolerate unbound renderbuffers, but
enabling debugging in Mesa yields an error:

$ MESA_DEBUG=1 \
  MESA_EXTENSION_OVERRIDE=-GL_OES_packed_depth_stencil
  ./bin/MiniBrowser http://webglsamples.org/aquarium/aquarium.html
Mesa: User error: GL_INVALID_OPERATION in glRenderbufferStorage(no renderbuffer bound)

* platform/graphics/GraphicsContext3D.h:
* platform/graphics/cairo/GraphicsContext3DCairo.cpp:
(WebCore::GraphicsContext3D::GraphicsContext3D):
Ensure separate depth and stencil renderbuffers are created.
(WebCore::GraphicsContext3D::~GraphicsContext3D):
Ensure separate depth and stencil renderbuffers are released.

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.16/Source/WebCore/ChangeLog (214768 => 214769)


--- releases/WebKitGTK/webkit-2.16/Source/WebCore/ChangeLog	2017-04-03 11:09:12 UTC (rev 214768)
+++ releases/WebKitGTK/webkit-2.16/Source/WebCore/ChangeLog	2017-04-03 11:11:28 UTC (rev 214769)
@@ -1,3 +1,31 @@
+2017-03-20  Emanuele Aina  <emanuele.a...@collabora.com>
+
+        [Cairo] Ensure depth and stencil renderbuffers are created on GLESv2
+        https://bugs.webkit.org/show_bug.cgi?id=166643
+
+        Reviewed by Darin Adler.
+
+        If the gfx device doesn't support GL_OES_packed_depth_stencil, the
+        separate depth and stencil buffers are not generated.
+
+        Copy what GraphicsContext3DEfl used to do and apply it in
+        GraphicsContext3DCairo.
+
+        The Intel gfx driver seem to tolerate unbound renderbuffers, but
+        enabling debugging in Mesa yields an error:
+
+        $ MESA_DEBUG=1 \
+          MESA_EXTENSION_OVERRIDE=-GL_OES_packed_depth_stencil
+          ./bin/MiniBrowser http://webglsamples.org/aquarium/aquarium.html
+        Mesa: User error: GL_INVALID_OPERATION in glRenderbufferStorage(no renderbuffer bound)
+
+        * platform/graphics/GraphicsContext3D.h:
+        * platform/graphics/cairo/GraphicsContext3DCairo.cpp:
+        (WebCore::GraphicsContext3D::GraphicsContext3D):
+        Ensure separate depth and stencil renderbuffers are created.
+        (WebCore::GraphicsContext3D::~GraphicsContext3D):
+        Ensure separate depth and stencil renderbuffers are released.
+
 2017-03-17  Dave Hyatt  <hy...@apple.com>
 
         Disable per-region boxes for multicolumn

Modified: releases/WebKitGTK/webkit-2.16/Source/WebCore/platform/graphics/GraphicsContext3D.h (214768 => 214769)


--- releases/WebKitGTK/webkit-2.16/Source/WebCore/platform/graphics/GraphicsContext3D.h	2017-04-03 11:09:12 UTC (rev 214768)
+++ releases/WebKitGTK/webkit-2.16/Source/WebCore/platform/graphics/GraphicsContext3D.h	2017-04-03 11:11:28 UTC (rev 214769)
@@ -1391,9 +1391,9 @@
     GC3Duint m_intermediateTexture;
 #endif
 
-    GC3Duint m_depthBuffer;
-    GC3Duint m_stencilBuffer;
-    GC3Duint m_depthStencilBuffer;
+    GC3Duint m_depthBuffer { 0 };
+    GC3Duint m_stencilBuffer { 0 };
+    GC3Duint m_depthStencilBuffer { 0 };
 
     bool m_layerComposited;
     GC3Duint m_internalColorFormat;

Modified: releases/WebKitGTK/webkit-2.16/Source/WebCore/platform/graphics/cairo/GraphicsContext3DCairo.cpp (214768 => 214769)


--- releases/WebKitGTK/webkit-2.16/Source/WebCore/platform/graphics/cairo/GraphicsContext3DCairo.cpp	2017-04-03 11:09:12 UTC (rev 214768)
+++ releases/WebKitGTK/webkit-2.16/Source/WebCore/platform/graphics/cairo/GraphicsContext3DCairo.cpp	2017-04-03 11:11:28 UTC (rev 214769)
@@ -90,7 +90,6 @@
 #if USE(COORDINATED_GRAPHICS_THREADED)
     , m_intermediateTexture(0)
 #endif
-    , m_depthStencilBuffer(0)
     , m_layerComposited(false)
     , m_multisampleFBO(0)
     , m_multisampleDepthStencilBuffer(0)
@@ -138,9 +137,6 @@
         ::glBindTexture(GL_TEXTURE_2D, 0);
 #endif
 
-        m_state.boundFBO = m_fbo;
-        if (!m_attrs.antialias && (m_attrs.stencil || m_attrs.depth))
-            ::glGenRenderbuffers(1, &m_depthStencilBuffer);
 
         // Create a multisample FBO.
         if (m_attrs.antialias) {
@@ -150,6 +146,18 @@
             ::glGenRenderbuffers(1, &m_multisampleColorBuffer);
             if (m_attrs.stencil || m_attrs.depth)
                 ::glGenRenderbuffers(1, &m_multisampleDepthStencilBuffer);
+        } else {
+            // Bind canvas FBO.
+            glBindFramebuffer(GraphicsContext3D::FRAMEBUFFER, m_fbo);
+            m_state.boundFBO = m_fbo;
+#if USE(OPENGL_ES_2)
+            if (m_attrs.depth)
+                glGenRenderbuffers(1, &m_depthBuffer);
+            if (m_attrs.stencil)
+                glGenRenderbuffers(1, &m_stencilBuffer);
+#endif
+            if (m_attrs.stencil || m_attrs.depth)
+                glGenRenderbuffers(1, &m_depthStencilBuffer);
         }
     }
 
@@ -228,8 +236,15 @@
         if (m_attrs.stencil || m_attrs.depth)
             ::glDeleteRenderbuffers(1, &m_multisampleDepthStencilBuffer);
         ::glDeleteFramebuffers(1, &m_multisampleFBO);
-    } else {
-        if (m_attrs.stencil || m_attrs.depth)
+    } else if (m_attrs.stencil || m_attrs.depth) {
+#if USE(OPENGL_ES_2)
+        if (m_depthBuffer)
+            glDeleteRenderbuffers(1, &m_depthBuffer);
+
+        if (m_stencilBuffer)
+            glDeleteRenderbuffers(1, &m_stencilBuffer);
+#endif
+        if (m_depthStencilBuffer)
             ::glDeleteRenderbuffers(1, &m_depthStencilBuffer);
     }
     ::glDeleteFramebuffers(1, &m_fbo);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to