Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / webgl / src / sdk / tests / conformance / resources / glsl-generator.js
index b2d8a1e..7c1e338 100644 (file)
@@ -248,6 +248,68 @@ var generateTestShader = function(
   return shader;
 };
 
+function _reportResults(refData, refImg, testData, testImg, tolerance,
+                        width, height, ctx, imgData, wtu, canvas2d, consoleDiv) {
+  var same = true;
+  var firstFailure = null;
+  for (var yy = 0; yy < height; ++yy) {
+    for (var xx = 0; xx < width; ++xx) {
+      var offset = (yy * width + xx) * 4;
+      var imgOffset = ((height - yy - 1) * width + xx) * 4;
+      imgData.data[imgOffset + 0] = 0;
+      imgData.data[imgOffset + 1] = 0;
+      imgData.data[imgOffset + 2] = 0;
+      imgData.data[imgOffset + 3] = 255;
+      if (Math.abs(refData[offset + 0] - testData[offset + 0]) > tolerance ||
+          Math.abs(refData[offset + 1] - testData[offset + 1]) > tolerance ||
+          Math.abs(refData[offset + 2] - testData[offset + 2]) > tolerance ||
+          Math.abs(refData[offset + 3] - testData[offset + 3]) > tolerance) {
+        var detail = 'at (' + xx + ',' + yy + '): ref=(' +
+            refData[offset + 0] + ',' +
+            refData[offset + 1] + ',' +
+            refData[offset + 2] + ',' +
+            refData[offset + 3] + ')  test=(' +
+            testData[offset + 0] + ',' +
+            testData[offset + 1] + ',' +
+            testData[offset + 2] + ',' +
+            testData[offset + 3] + ') tolerance=' + tolerance;
+        consoleDiv.appendChild(document.createTextNode(detail));
+        consoleDiv.appendChild(document.createElement('br'));
+        if (!firstFailure) {
+          firstFailure = ": " + detail;
+        }
+        imgData.data[imgOffset] = 255;
+        same = false;
+      }
+    }
+  }
+
+  var diffImg = null;
+  if (!same) {
+    ctx.putImageData(imgData, 0, 0);
+    diffImg = wtu.makeImageFromCanvas(canvas2d);
+  }
+
+  var div = document.createElement("div");
+  div.className = "testimages";
+  wtu.insertImage(div, "ref", refImg);
+  wtu.insertImage(div, "test", testImg);
+  if (diffImg) {
+    wtu.insertImage(div, "diff", diffImg);
+  }
+  div.appendChild(document.createElement('br'));
+
+  consoleDiv.appendChild(div);
+
+  if (!same) {
+    testFailed("images are different" + (firstFailure ? firstFailure : ""));
+  } else {
+    testPassed("images are the same");
+  }
+
+  consoleDiv.appendChild(document.createElement('hr'));
+}
+
 var runFeatureTest = function(params) {
   var wtu = WebGLTestUtils;
   var gridRes = params.gridRes;
@@ -348,7 +410,7 @@ var runFeatureTest = function(params) {
 
       var refData = draw(
           referenceVertexShader, referenceFragmentShader);
-      var refImg = wtu.makeImage(canvas);
+      var refImg = wtu.makeImageFromCanvas(canvas);
       if (ss == 0) {
         var testData = draw(
             testVertexShader, referenceFragmentShader);
@@ -356,61 +418,15 @@ var runFeatureTest = function(params) {
         var testData = draw(
             referenceVertexShader, testFragmentShader);
       }
-      var testImg = wtu.makeImage(canvas);
+      var testImg = wtu.makeImageFromCanvas(canvas);
 
-      reportResults(refData, refImg, testData, testImg, shaderInfo.tolerance);
+      _reportResults(refData, refImg, testData, testImg, shaderInfo.tolerance,
+                     width, height, ctx, imgData, wtu, canvas2d, consoleDiv);
     }
   }
 
   finishTest();
 
-  function reportResults(refData, refImage, testData, testImage, tolerance) {
-    var same = true;
-    for (var yy = 0; yy < height; ++yy) {
-      for (var xx = 0; xx < width; ++xx) {
-        var offset = (yy * width + xx) * 4;
-        var imgOffset = ((height - yy - 1) * width + xx) * 4;
-        imgData.data[imgOffset + 0] = 0;
-        imgData.data[imgOffset + 1] = 0;
-        imgData.data[imgOffset + 2] = 0;
-        imgData.data[imgOffset + 3] = 255;
-        if (Math.abs(refData[offset + 0] - testData[offset + 0]) > tolerance ||
-            Math.abs(refData[offset + 1] - testData[offset + 1]) > tolerance ||
-            Math.abs(refData[offset + 2] - testData[offset + 2]) > tolerance ||
-            Math.abs(refData[offset + 3] - testData[offset + 3]) > tolerance) {
-          imgData.data[imgOffset] = 255;
-          same = false;
-        }
-      }
-    }
-
-    var diffImg = null;
-    if (!same) {
-      ctx.putImageData(imgData, 0, 0);
-      diffImg = wtu.makeImage(canvas2d);
-    }
-
-    var div = document.createElement("div");
-    div.className = "testimages";
-    wtu.insertImage(div, "ref", refImg);
-    wtu.insertImage(div, "test", testImg);
-    if (diffImg) {
-      wtu.insertImage(div, "diff", diffImg);
-    }
-    div.appendChild(document.createElement('br'));
-
-
-    consoleDiv.appendChild(div);
-
-    if (!same) {
-      testFailed("images are different");
-    } else {
-      testPassed("images are the same");
-    }
-
-    consoleDiv.appendChild(document.createElement('hr'));
-  }
-
   function draw(vertexShader, fragmentShader) {
     var program = wtu.createProgram(gl, vertexShader, fragmentShader, testFailed);
 
@@ -526,66 +542,21 @@ var runBasicTest = function(params) {
       debug("");
 
       var refData = draw(referenceVertexShader, referenceFragmentShader);
-      var refImg = wtu.makeImage(canvas);
+      var refImg = wtu.makeImageFromCanvas(canvas);
       if (ss == 0) {
         var testData = draw(testVertexShader, referenceFragmentShader);
       } else {
         var testData = draw(referenceVertexShader, testFragmentShader);
       }
-      var testImg = wtu.makeImage(canvas);
+      var testImg = wtu.makeImageFromCanvas(canvas);
 
-      reportResults(refData, refImg, testData, testImg, shaderInfo.tolerance);
+      _reportResults(refData, refImg, testData, testImg, shaderInfo.tolerance,
+                     width, height, ctx, imgData, wtu, canvas2d, consoleDiv);
     }
   }
 
   finishTest();
 
-  function reportResults(refData, refImage, testData, testImage, tolerance) {
-    var same = true;
-    for (var yy = 0; yy < height; ++yy) {
-      for (var xx = 0; xx < width; ++xx) {
-        var offset = (yy * width + xx) * 4;
-        var imgOffset = ((height - yy - 1) * width + xx) * 4;
-        imgData.data[imgOffset + 0] = 0;
-        imgData.data[imgOffset + 1] = 0;
-        imgData.data[imgOffset + 2] = 0;
-        imgData.data[imgOffset + 3] = 255;
-        if (Math.abs(refData[offset + 0] - testData[offset + 0]) > tolerance ||
-            Math.abs(refData[offset + 1] - testData[offset + 1]) > tolerance ||
-            Math.abs(refData[offset + 2] - testData[offset + 2]) > tolerance ||
-            Math.abs(refData[offset + 3] - testData[offset + 3]) > tolerance) {
-          imgData.data[imgOffset] = 255;
-          same = false;
-        }
-      }
-    }
-
-    var diffImg = null;
-    if (!same) {
-      ctx.putImageData(imgData, 0, 0);
-      diffImg = wtu.makeImage(canvas2d);
-    }
-
-    var div = document.createElement("div");
-    div.className = "testimages";
-    wtu.insertImage(div, "ref", refImg);
-    wtu.insertImage(div, "test", testImg);
-    if (diffImg) {
-      wtu.insertImage(div, "diff", diffImg);
-    }
-    div.appendChild(document.createElement('br'));
-
-    consoleDiv.appendChild(div);
-
-    if (!same) {
-      testFailed("images are different");
-    } else {
-      testPassed("images are the same");
-    }
-
-    consoleDiv.appendChild(document.createElement('hr'));
-  }
-
   function draw(vertexShader, fragmentShader) {
     var program = wtu.createProgram(gl, vertexShader, fragmentShader, testFailed);
 
@@ -717,7 +688,7 @@ var runReferenceImageTest = function(params) {
       } else {
         refData = drawFragmentReferenceImage(referenceTextureOrArray);
       }
-      var refImg = wtu.makeImage(canvas);
+      var refImg = wtu.makeImageFromCanvas(canvas);
       var testData;
       if (isVertex) {
         var referenceFragmentShader = wtu.loadShader(gl, referenceFragmentShaderSource, gl.FRAGMENT_SHADER, testFailed);
@@ -728,74 +699,18 @@ var runReferenceImageTest = function(params) {
         testData = draw(
           referenceVertexShader, testFragmentShader);
       }
-      var testImg = wtu.makeImage(canvas);
+      var testImg = wtu.makeImageFromCanvas(canvas);
       var testTolerance = shaderInfo.tolerance;
       // Provide per-test tolerance so that we can increase it only for those desired.
       if ('tolerance' in tests[ii])
         testTolerance = tests[ii].tolerance || 0;
-      reportResults(refData, refImg, testData, testImg, testTolerance);
+      _reportResults(refData, refImg, testData, testImg, testTolerance,
+                     width, height, ctx, imgData, wtu, canvas2d, consoleDiv);
     }
   }
 
   finishTest();
 
-  function reportResults(refData, refImage, testData, testImage, tolerance) {
-    var same = true;
-    for (var yy = 0; yy < height; ++yy) {
-      for (var xx = 0; xx < width; ++xx) {
-        var offset = (yy * width + xx) * 4;
-        var imgOffset = ((height - yy - 1) * width + xx) * 4;
-        imgData.data[imgOffset + 0] = 0;
-        imgData.data[imgOffset + 1] = 0;
-        imgData.data[imgOffset + 2] = 0;
-        imgData.data[imgOffset + 3] = 255;
-        if (Math.abs(refData[offset + 0] - testData[offset + 0]) > tolerance ||
-            Math.abs(refData[offset + 1] - testData[offset + 1]) > tolerance ||
-            Math.abs(refData[offset + 2] - testData[offset + 2]) > tolerance ||
-            Math.abs(refData[offset + 3] - testData[offset + 3]) > tolerance) {
-          consoleDiv.appendChild(document.createTextNode('at (' + xx + ',' + yy + '): ref=(' +
-                                                      refData[offset + 0] + ',' +
-                                                      refData[offset + 1] + ',' +
-                                                      refData[offset + 2] + ',' +
-                                                      refData[offset + 3] + ')  test=(' +
-                                                      testData[offset + 0] + ',' +
-                                                      testData[offset + 1] + ',' +
-                                                      testData[offset + 2] + ',' +
-                                                      testData[offset + 3] + ')'));
-          consoleDiv.appendChild(document.createElement('br'));
-
-          imgData.data[imgOffset] = 255;
-          same = false;
-        }
-      }
-    }
-
-    var diffImg = null;
-    if (!same) {
-      ctx.putImageData(imgData, 0, 0);
-      diffImg = wtu.makeImage(canvas2d);
-    }
-
-    var div = document.createElement("div");
-    div.className = "testimages";
-    wtu.insertImage(div, "ref", refImg);
-    wtu.insertImage(div, "test", testImg);
-    if (diffImg) {
-      wtu.insertImage(div, "diff", diffImg);
-    }
-    div.appendChild(document.createElement('br'));
-
-    consoleDiv.appendChild(div);
-
-    if (!same) {
-      testFailed("images are different");
-    } else {
-      testPassed("images are the same");
-    }
-
-    consoleDiv.appendChild(document.createElement('hr'));
-  }
-
   function draw(vertexShader, fragmentShader) {
     var program = wtu.createProgram(gl, vertexShader, fragmentShader, testFailed);