Title: [225407] trunk
Revision
225407
Author
[email protected]
Date
2017-12-01 13:16:58 -0800 (Fri, 01 Dec 2017)

Log Message

Use SH_INITIALIZE_UNINITIALIZED_LOCALS now that ANGLE has been updated
https://bugs.webkit.org/show_bug.cgi?id=177929
<rdar://problem/34866210>

Reviewed by Sam Weinig.

Source/WebCore:

Test: fast/canvas/webgl/uninitialized-locals.html

* platform/graphics/ANGLEWebKitBridge.cpp:
(WebCore::ANGLEWebKitBridge::compileShaderSource):
* platform/graphics/ANGLEWebKitBridge.h:
* platform/graphics/opengl/Extensions3DOpenGLCommon.cpp:
(WebCore::Extensions3DOpenGLCommon::getTranslatedShaderSourceANGLE):

LayoutTests:

* fast/canvas/webgl/uninitialized-locals-expected.txt: Added.
* fast/canvas/webgl/uninitialized-locals.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (225406 => 225407)


--- trunk/LayoutTests/ChangeLog	2017-12-01 20:36:50 UTC (rev 225406)
+++ trunk/LayoutTests/ChangeLog	2017-12-01 21:16:58 UTC (rev 225407)
@@ -1,3 +1,14 @@
+2017-12-01  Dean Jackson  <[email protected]>
+
+        Use SH_INITIALIZE_UNINITIALIZED_LOCALS now that ANGLE has been updated
+        https://bugs.webkit.org/show_bug.cgi?id=177929
+        <rdar://problem/34866210>
+
+        Reviewed by Sam Weinig.
+
+        * fast/canvas/webgl/uninitialized-locals-expected.txt: Added.
+        * fast/canvas/webgl/uninitialized-locals.html: Added.
+
 2017-12-01  Brady Eidson  <[email protected]>
 
         Add Internals.terminateServiceWorker, and the ability to restart service workers for postMessage.

Added: trunk/LayoutTests/fast/canvas/webgl/uninitialized-locals-expected.txt (0 => 225407)


--- trunk/LayoutTests/fast/canvas/webgl/uninitialized-locals-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/canvas/webgl/uninitialized-locals-expected.txt	2017-12-01 21:16:58 UTC (rev 225407)
@@ -0,0 +1 @@
+PASS
Property changes on: trunk/LayoutTests/fast/canvas/webgl/uninitialized-locals-expected.txt
___________________________________________________________________

Added: svn:eol-style

+native \ No newline at end of property

Added: svn:keywords

+Date Revision \ No newline at end of property

Added: svn:mime-type

+text/plain \ No newline at end of property

Added: trunk/LayoutTests/fast/canvas/webgl/uninitialized-locals.html (0 => 225407)


--- trunk/LayoutTests/fast/canvas/webgl/uninitialized-locals.html	                        (rev 0)
+++ trunk/LayoutTests/fast/canvas/webgl/uninitialized-locals.html	2017-12-01 21:16:58 UTC (rev 225407)
@@ -0,0 +1,124 @@
+<canvas width="100" height="100"></canvas>
+<script>
+if (window.testRunner)
+    testRunner.dumpAsText();
+
+window.addEventListener("load", function () {
+    const canvas = document.querySelector("canvas");
+    const gl = canvas.getContext("webgl");
+
+    const halfWidth = canvas.width / 2;
+    const halfHeight = canvas.height / 2;
+
+    function output(txt) {
+        const div = document.createElement("div");
+        div.textContent = txt;
+        document.body.appendChild(div);
+    }
+
+    function createShader(type, src) {
+      const shader = gl.createShader(type);
+      gl.shaderSource(shader, src);
+      gl.compileShader(shader);
+      return shader;
+    }
+
+    function createProgram(vsSrc, fsSrc) {
+      const program = gl.createProgram();
+      const vs = createShader(gl.VERTEX_SHADER, vsSrc);
+      const fs = createShader(gl.FRAGMENT_SHADER, fsSrc);
+      gl.attachShader(program, vs);
+      gl.attachShader(program, fs);
+      gl.bindAttribLocation(program, 0, 'pos');
+      gl.linkProgram(program);
+      gl.deleteShader(vs);
+      gl.deleteShader(fs);
+      return program;
+    }
+
+    const buffer = gl.createBuffer();
+    gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
+    gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-3, 1, 1, 1, 1, -3]), gl.STATIC_DRAW);
+
+    gl.enableVertexAttribArray(0);
+    gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 0, 0);
+
+    const p1 = createProgram(`
+    attribute vec2 pos;
+    void main(void) {
+      gl_Position = vec4(pos, 0, 1);
+    }
+    `, `
+    precision mediump float;
+    void main(void) {
+      mat4 m;
+      gl_FragColor = m[0];
+    }
+    `);
+
+    gl.useProgram(p1);
+    gl.viewport(0, 0, halfWidth, halfHeight);
+    gl.drawArrays(gl.TRIANGLES, 0, 3);
+
+    const p2 = createProgram(`
+    attribute vec2 pos;
+    void main(void) {
+      gl_Position = vec4(pos, 0, 1);
+    }
+    `, `
+    precision mediump float;
+    void main(void) {
+      vec4 v;
+      gl_FragColor = v;
+    }
+    `);
+
+    gl.useProgram(p2);
+    gl.viewport(0, halfHeight, halfWidth, halfHeight);
+    gl.drawArrays(gl.TRIANGLES, 0, 3);
+
+    const p3 = createProgram(`
+    attribute vec2 pos;
+    void main(void) {
+      gl_Position = vec4(pos, 0, 1);
+    }
+    `, `
+    precision mediump float;
+    void main(void) {
+      float s;
+      gl_FragColor = vec4(s, s, s, s);
+    }
+    `);
+
+    gl.useProgram(p3);
+    gl.viewport(halfWidth, halfHeight, halfWidth, halfHeight);
+    gl.drawArrays(gl.TRIANGLES, 0, 3);
+
+    const p4 = createProgram(`
+    attribute vec2 pos;
+    void main(void) {
+      gl_Position = vec4(pos, 0, 1);
+    }
+    `, `
+    precision mediump float;
+    void main(void) {
+      vec2 v;
+      gl_FragColor = vec4(v.x, v.y, v.x + v.y, v.x + v.y);
+    }
+    `);
+
+    gl.useProgram(p4);
+    gl.viewport(halfWidth, 0, halfWidth, halfHeight);
+    gl.drawArrays(gl.TRIANGLES, 0, 3);
+
+    let pixels = new Uint8Array(canvas.width * canvas.height * 4);
+    gl.readPixels(0, 0, canvas.width, canvas.height, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
+    let seenNoise = false;
+    pixels.forEach(pixel => {
+        if (pixel) {
+            seenNoise = true;
+        }
+    });
+    output(seenNoise ? "FAIL: Unitialized values detected" : "PASS");
+}, false);
+</script>
Property changes on: trunk/LayoutTests/fast/canvas/webgl/uninitialized-locals.html
___________________________________________________________________

Added: svn:eol-style

+native \ No newline at end of property

Added: svn:keywords

+Date Revision \ No newline at end of property

Added: svn:mime-type

+text/html \ No newline at end of property

Modified: trunk/Source/WebCore/ChangeLog (225406 => 225407)


--- trunk/Source/WebCore/ChangeLog	2017-12-01 20:36:50 UTC (rev 225406)
+++ trunk/Source/WebCore/ChangeLog	2017-12-01 21:16:58 UTC (rev 225407)
@@ -1,3 +1,19 @@
+2017-12-01  Dean Jackson  <[email protected]>
+
+        Use SH_INITIALIZE_UNINITIALIZED_LOCALS now that ANGLE has been updated
+        https://bugs.webkit.org/show_bug.cgi?id=177929
+        <rdar://problem/34866210>
+
+        Reviewed by Sam Weinig.
+
+        Test: fast/canvas/webgl/uninitialized-locals.html
+
+        * platform/graphics/ANGLEWebKitBridge.cpp:
+        (WebCore::ANGLEWebKitBridge::compileShaderSource):
+        * platform/graphics/ANGLEWebKitBridge.h:
+        * platform/graphics/opengl/Extensions3DOpenGLCommon.cpp:
+        (WebCore::Extensions3DOpenGLCommon::getTranslatedShaderSourceANGLE):
+
 2017-12-01  Youenn Fablet  <[email protected]>
 
         Many imported/w3c/web-platform-tests/service-workers/ test are failing together intermittently

Modified: trunk/Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp (225406 => 225407)


--- trunk/Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp	2017-12-01 20:36:50 UTC (rev 225406)
+++ trunk/Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp	2017-12-01 21:16:58 UTC (rev 225407)
@@ -160,7 +160,7 @@
     m_resources = resources;
 }
 
-bool ANGLEWebKitBridge::compileShaderSource(const char* shaderSource, ANGLEShaderType shaderType, String& translatedShaderSource, String& shaderValidationLog, Vector<std::pair<ANGLEShaderSymbolType, sh::ShaderVariable>>& symbols, int extraCompileOptions)
+bool ANGLEWebKitBridge::compileShaderSource(const char* shaderSource, ANGLEShaderType shaderType, String& translatedShaderSource, String& shaderValidationLog, Vector<std::pair<ANGLEShaderSymbolType, sh::ShaderVariable>>& symbols, long extraCompileOptions)
 {
     if (!builtCompilers) {
         m_fragmentCompiler = sh::ConstructCompiler(GL_FRAGMENT_SHADER, m_shaderSpec, m_shaderOutput, &m_resources);

Modified: trunk/Source/WebCore/platform/graphics/ANGLEWebKitBridge.h (225406 => 225407)


--- trunk/Source/WebCore/platform/graphics/ANGLEWebKitBridge.h	2017-12-01 20:36:50 UTC (rev 225406)
+++ trunk/Source/WebCore/platform/graphics/ANGLEWebKitBridge.h	2017-12-01 21:16:58 UTC (rev 225407)
@@ -73,7 +73,7 @@
     const ShBuiltInResources& getResources() { return m_resources; }
     void setResources(const ShBuiltInResources&);
     
-    bool compileShaderSource(const char* shaderSource, ANGLEShaderType, String& translatedShaderSource, String& shaderValidationLog, Vector<std::pair<ANGLEShaderSymbolType, sh::ShaderVariable>>& symbols, int extraCompileOptions = 0);
+    bool compileShaderSource(const char* shaderSource, ANGLEShaderType, String& translatedShaderSource, String& shaderValidationLog, Vector<std::pair<ANGLEShaderSymbolType, sh::ShaderVariable>>& symbols, long extraCompileOptions = 0);
 
 private:
 

Modified: trunk/Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLCommon.cpp (225406 => 225407)


--- trunk/Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLCommon.cpp	2017-12-01 20:36:50 UTC (rev 225406)
+++ trunk/Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLCommon.cpp	2017-12-01 21:16:58 UTC (rev 225407)
@@ -186,7 +186,7 @@
 
     String translatedShaderSource;
     String shaderInfoLog;
-    int extraCompileOptions = SH_CLAMP_INDIRECT_ARRAY_BOUNDS | SH_UNFOLD_SHORT_CIRCUIT | SH_INIT_OUTPUT_VARIABLES | SH_ENFORCE_PACKING_RESTRICTIONS | SH_LIMIT_EXPRESSION_COMPLEXITY | SH_LIMIT_CALL_STACK_DEPTH;
+    long extraCompileOptions = SH_CLAMP_INDIRECT_ARRAY_BOUNDS | SH_UNFOLD_SHORT_CIRCUIT | SH_INIT_OUTPUT_VARIABLES | SH_ENFORCE_PACKING_RESTRICTIONS | SH_LIMIT_EXPRESSION_COMPLEXITY | SH_LIMIT_CALL_STACK_DEPTH | SH_INITIALIZE_UNINITIALIZED_LOCALS;
 
     if (m_requiresBuiltInFunctionEmulation)
         extraCompileOptions |= SH_EMULATE_ABS_INT_FUNCTION;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to