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;
var refData = draw(
referenceVertexShader, referenceFragmentShader);
- var refImg = wtu.makeImage(canvas);
+ var refImg = wtu.makeImageFromCanvas(canvas);
if (ss == 0) {
var testData = draw(
testVertexShader, referenceFragmentShader);
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);
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);
} 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);
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);