[WebGL][GLES] bad shaders should not be linked not only for GL but also for GL ES
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 10 Sep 2015 18:57:01 +0000 (18:57 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 10 Sep 2015 18:57:01 +0000 (18:57 +0000)
https://bugs.webkit.org/show_bug.cgi?id=148794

Patch by Jinyoung Hur <hur.ims@navercorp.com> on 2015-09-10
Reviewed by Dean Jackson.

Checking bad shaders, precision matching and varyings packing are all valid for GL ES too.

Test: webgl/1.0.2/conformance/programs/program-test.html

* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::linkProgram):

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

Source/WebCore/ChangeLog
Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp

index b79debc..a4e4766 100644 (file)
@@ -1,5 +1,19 @@
 2015-09-10  Jinyoung Hur  <hur.ims@navercorp.com>
 
+        [WebGL][GLES] bad shaders should not be linked not only for GL but also for GL ES
+        https://bugs.webkit.org/show_bug.cgi?id=148794
+
+        Reviewed by Dean Jackson.
+
+        Checking bad shaders, precision matching and varyings packing are all valid for GL ES too.
+
+        Test: webgl/1.0.2/conformance/programs/program-test.html
+
+        * html/canvas/WebGLRenderingContextBase.cpp:
+        (WebCore::WebGLRenderingContextBase::linkProgram):
+
+2015-09-10  Jinyoung Hur  <hur.ims@navercorp.com>
+
         Static variables in GraphicsContext3DOpenGLCommon should be avoided because of the race condition
         https://bugs.webkit.org/show_bug.cgi?id=148957
 
index a7f1fb2..16e7731 100644 (file)
@@ -2744,13 +2744,11 @@ void WebGLRenderingContextBase::linkProgram(WebGLProgram* program, ExceptionCode
     UNUSED_PARAM(ec);
     if (isContextLostOrPending() || !validateWebGLObject("linkProgram", program))
         return;
-    if (!isGLES2Compliant()) {
-        WebGLShader* vertexShader = program->getAttachedShader(GraphicsContext3D::VERTEX_SHADER);
-        WebGLShader* fragmentShader = program->getAttachedShader(GraphicsContext3D::FRAGMENT_SHADER);
-        if (!vertexShader || !vertexShader->isValid() || !fragmentShader || !fragmentShader->isValid() || !m_context->precisionsMatch(objectOrZero(vertexShader), objectOrZero(fragmentShader)) || !m_context->checkVaryingsPacking(objectOrZero(vertexShader), objectOrZero(fragmentShader))) {
-            program->setLinkStatus(false);
-            return;
-        }
+    WebGLShader* vertexShader = program->getAttachedShader(GraphicsContext3D::VERTEX_SHADER);
+    WebGLShader* fragmentShader = program->getAttachedShader(GraphicsContext3D::FRAGMENT_SHADER);
+    if (!vertexShader || !vertexShader->isValid() || !fragmentShader || !fragmentShader->isValid() || !m_context->precisionsMatch(objectOrZero(vertexShader), objectOrZero(fragmentShader)) || !m_context->checkVaryingsPacking(objectOrZero(vertexShader), objectOrZero(fragmentShader))) {
+        program->setLinkStatus(false);
+        return;
     }
 
     m_context->linkProgram(objectOrZero(program));