Short-cut WebGLRenderingContext::getParameter() for ALPHA_BITS when alpha channel...
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 8 Aug 2019 23:25:08 +0000 (23:25 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 8 Aug 2019 23:25:08 +0000 (23:25 +0000)
https://bugs.webkit.org/show_bug.cgi?id=200499

Source/WebCore:

Patch by Chris Lord <clord@igalia.com> on 2019-08-08
Reviewed by Darin Adler.

This patch adds a shortcut when a framebuffer isn't bound on WebGL
canvases when retrieving ALPHA_BITS.

No new tests, covered by existing tests.

* html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::getParameter):
Return 0 for ALPHA_BITS if canvas has no alpha component.
* html/canvas/WebGL2RenderingContext.cpp:
(WebCore::WebGLRenderingContext::getParameter):
Return 0 for ALPHA_BITS if canvas has no alpha component.

LayoutTests:

Patch by Chris Lord <chrislord.net@gmail.com> on 2019-08-08
Reviewed by Darin Adler.

* platform/ios-simulator/webgl/2.0.0/conformance/context/context-attributes-alpha-depth-stencil-antialias-expected.txt:
1 more passing test.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@248448 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/platform/ios-simulator/webgl/2.0.0/conformance/context/context-attributes-alpha-depth-stencil-antialias-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/html/canvas/WebGL2RenderingContext.cpp
Source/WebCore/html/canvas/WebGLRenderingContext.cpp

index 6bff733..ef5aee4 100644 (file)
@@ -1,3 +1,13 @@
+2019-08-08  Chris Lord  <chrislord.net@gmail.com>
+
+        Short-cut WebGLRenderingContext::getParameter() for ALPHA_BITS when alpha channel is disabled
+        https://bugs.webkit.org/show_bug.cgi?id=200499
+
+        Reviewed by Darin Adler.
+
+        * platform/ios-simulator/webgl/2.0.0/conformance/context/context-attributes-alpha-depth-stencil-antialias-expected.txt:
+        1 more passing test.
+
 2019-08-08  Devin Rousso  <drousso@apple.com>
 
         Web Inspector: rename `queryObjects` to `queryInstances` for clarity
index aa67d28..765d7ff 100644 (file)
@@ -19,7 +19,7 @@ Test: ../../resources/webgl_test_files/conformance/context/context-attributes-al
 [ 16: PASS ] should be 127,127,127,127
 [ 17: PASS ] getError was expected value: NO_ERROR : should be no errors
 [ 18: PASS ] gl = getWebGL(1, 1, { alpha: false, depth: false, stencil: false, antialias: false }, [ 0, 0, 0, 0 ], 1, 0) is non-null.
-[ 19: FAIL ] gl.getParameter(gl.ALPHA_BITS) == 0 should be true. Was false.
+[ 19: PASS ] gl.getParameter(gl.ALPHA_BITS) == 0 is true
 [ 20: PASS ] gl.getParameter(gl.RED_BITS) >= 8 is true
 [ 21: PASS ] gl.getParameter(gl.GREEN_BITS) >= 8 is true
 [ 22: PASS ] gl.getParameter(gl.BLUE_BITS) >= 8 is true
@@ -104,5 +104,5 @@ Test: ../../resources/webgl_test_files/conformance/context/context-attributes-al
 [ 101: PASS ] redChannels[1] == 255 && redChannels[2] == 0 is true
 [ 102: PASS ] redChannels[0] != 255 && redChannels[0] != 0 is contextAttribs.antialias
 [ 103: PASS ] successfullyParsed is true
-[ FAIL ] 2 failures reported
+[ FAIL ] 1 failures reported
 
index 995400c..ef45189 100644 (file)
@@ -1,3 +1,22 @@
+2019-08-08  Chris Lord  <clord@igalia.com>
+
+        Short-cut WebGLRenderingContext::getParameter() for ALPHA_BITS when alpha channel is disabled
+        https://bugs.webkit.org/show_bug.cgi?id=200499
+
+        Reviewed by Darin Adler.
+
+        This patch adds a shortcut when a framebuffer isn't bound on WebGL
+        canvases when retrieving ALPHA_BITS.
+
+        No new tests, covered by existing tests.
+
+        * html/canvas/WebGLRenderingContext.cpp:
+        (WebCore::WebGLRenderingContext::getParameter):
+        Return 0 for ALPHA_BITS if canvas has no alpha component.
+        * html/canvas/WebGL2RenderingContext.cpp:
+        (WebCore::WebGLRenderingContext::getParameter):
+        Return 0 for ALPHA_BITS if canvas has no alpha component.
+
 2019-08-08  Chris Dumez  <cdumez@apple.com>
 
         ScrollingStateNode is not ThreadSafeRefCounted but is ref'd / deref'd from several threads
index a66f7e8..6311917 100644 (file)
@@ -1771,6 +1771,8 @@ WebGLAny WebGL2RenderingContext::getParameter(GC3Denum pname)
     case GraphicsContext3D::ALIASED_POINT_SIZE_RANGE:
         return getWebGLFloatArrayParameter(pname);
     case GraphicsContext3D::ALPHA_BITS:
+        if (!m_framebufferBinding && !m_attributes.alpha)
+            return 0;
         return getIntParameter(pname);
     case GraphicsContext3D::ARRAY_BUFFER_BINDING:
         return m_boundArrayBuffer;
index d629fbf..e06bf99 100644 (file)
@@ -421,6 +421,8 @@ WebGLAny WebGLRenderingContext::getParameter(GC3Denum pname)
     case GraphicsContext3D::ALIASED_POINT_SIZE_RANGE:
         return getWebGLFloatArrayParameter(pname);
     case GraphicsContext3D::ALPHA_BITS:
+        if (!m_framebufferBinding && !m_attributes.alpha)
+            return 0;
         return getIntParameter(pname);
     case GraphicsContext3D::ARRAY_BUFFER_BINDING:
         return m_boundArrayBuffer;