Index: third_party/WebKit/LayoutTests/fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias.html |
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias.html b/third_party/WebKit/LayoutTests/fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias.html |
deleted file mode 100644 |
index 1d97dfafffea6b47508cfeaad2040abd2bec4e4a..0000000000000000000000000000000000000000 |
--- a/third_party/WebKit/LayoutTests/fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias.html |
+++ /dev/null |
@@ -1,359 +0,0 @@ |
- |
-<!DOCTYPE html> |
-<html> |
-<head> |
-<meta charset="utf-8"> |
-<script src="../../../resources/js-test.js"></script> |
-<script src="resources/webgl-test.js"></script> |
-<script id="vshader" type="x-shader/x-vertex"> |
-attribute vec3 pos; |
-attribute vec4 colorIn; |
-varying vec4 color; |
- |
-void main() |
-{ |
- color = colorIn; |
- gl_Position = vec4(pos.xyz, 1.0); |
-} |
-</script> |
- |
-<script id="fshader" type="x-shader/x-fragment"> |
-precision mediump float; |
- |
-varying vec4 color; |
- |
-void main() |
-{ |
- gl_FragColor = color; |
-} |
-</script> |
- |
-<script> |
-var successfullyParsed = false; |
- |
-// These four declarations need to be global for "shouldBe" to see them |
-var gl; |
-var contextAttribs = null; |
-var pixel = [0, 0, 0, 1]; |
-var correctColor = null; |
-var framebuffer; |
-var fbHasColor; |
-var fbHasDepth; |
-var fbHasStencil; |
- |
-function init() |
-{ |
- if (window.initNonKhronosFramework) { |
- window.initNonKhronosFramework(true); |
- } |
- |
- if (window.internals) |
- window.internals.settings.setWebGLErrorsToConsoleEnabled(false); |
- |
- description('Verify WebGLContextAttributes are working as specified, including alpha, depth, stencil, antialias, but not premultipliedAlpha'); |
- |
- runTest(); |
-} |
- |
-function getWebGL(canvasWidth, canvasHeight, contextAttribs, clearColor, clearDepth, clearStencil) |
-{ |
- var canvas = document.createElement("canvas"); |
- if (!canvas) |
- return null; |
- canvas.width = canvasWidth; |
- canvas.height = canvasHeight; |
- |
- gl = create3DContext(canvas, contextAttribs); |
- if (!gl) |
- return null; |
- |
- var program = createProgram(gl, "vshader", "fshader", ["pos", "colorIn"]); |
- if (!program) |
- return null; |
- |
- gl.useProgram(program); |
- |
- gl.enable(gl.DEPTH_TEST); |
- gl.enable(gl.STENCIL_TEST); |
- gl.disable(gl.BLEND); |
- |
- gl.clearColor(clearColor[0], clearColor[1], clearColor[2], clearColor[3]); |
- gl.clearDepth(clearDepth); |
- gl.clearStencil(clearStencil); |
- gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT | gl.STENCIL_BUFFER_BIT); |
- |
- framebuffer = gl.createFramebuffer(); |
- gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); |
- var texture = gl.createTexture(); |
- gl.bindTexture(gl.TEXTURE_2D, texture); |
- gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.canvas.width, gl.canvas.height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null); |
- gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0); |
- fbHasStencil = false; |
- fbHasDepth = false; |
- fbHasColor = gl.checkFramebufferStatus(gl.FRAMEBUFFER) == gl.FRAMEBUFFER_COMPLETE; |
- if (fbHasColor) { |
- var depthStencil = gl.createRenderbuffer(); |
- gl.bindRenderbuffer(gl.RENDERBUFFER, depthStencil); |
- gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, gl.canvas.width, gl.canvas.height); |
- gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, depthStencil); |
- fbHasDepth = gl.checkFramebufferStatus(gl.FRAMEBUFFER) == gl.FRAMEBUFFER_COMPLETE; |
- if (!fbHasDepth) { |
- gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.RENDERBUFFER, null); |
- shouldBe('gl.checkFramebufferStatus(gl.FRAMEBUFFER)', 'gl.FRAMEBUFFER_COMPLETE'); |
- } else { |
- fbHasStencil = true; |
- } |
- } |
- gl.bindFramebuffer(gl.FRAMEBUFFER, null); |
- glErrorShouldBe(gl, gl.NO_ERROR, "should be no errors"); |
- |
- return gl; |
-} |
- |
-function drawAndReadPixel(gl, vertices, colors, x, y) |
-{ |
- var colorOffset = vertices.byteLength; |
- |
- var vbo = gl.createBuffer(); |
- gl.bindBuffer(gl.ARRAY_BUFFER, vbo); |
- gl.bufferData(gl.ARRAY_BUFFER, colorOffset + colors.byteLength, gl.STATIC_DRAW); |
- gl.bufferSubData(gl.ARRAY_BUFFER, 0, vertices); |
- gl.bufferSubData(gl.ARRAY_BUFFER, colorOffset, colors); |
- |
- gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 0, 0); |
- gl.enableVertexAttribArray(0); |
- gl.vertexAttribPointer(1, 4, gl.UNSIGNED_BYTE, true, 0, colorOffset); |
- gl.enableVertexAttribArray(1); |
- |
- gl.drawArrays(gl.TRIANGLES, 0, vertices.length / 3); |
- |
- var buf = new Uint8Array(1 * 1 * 4); |
- gl.readPixels(x, y, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, buf); |
- return buf; |
-} |
- |
-function testDefault() |
-{ |
- debug("Testing default attributes: { stencil:false }"); |
- shouldBeNonNull("gl = getWebGL(1, 1, null, [ 0, 0, 0, 0 ], 1, 0)"); |
- shouldBeFalse("gl.getContextAttributes().stencil"); |
- shouldBeTrue("gl.getParameter(gl.STENCIL_BITS) == 0"); |
-} |
- |
-function testAlpha(alpha) |
-{ |
- debug("Testing alpha = " + alpha); |
- if (alpha) { |
- shouldBeNonNull("gl = getWebGL(1, 1, { alpha: true, depth: false, stencil: false, antialias: false }, [ 0, 0, 0, 0 ], 1, 0)"); |
- shouldBeTrue("gl.getParameter(gl.ALPHA_BITS) >= 8"); |
- } else { |
- shouldBeNonNull("gl = getWebGL(1, 1, { alpha: false, depth: false, stencil: false, antialias: false }, [ 0, 0, 0, 0 ], 1, 0)"); |
- shouldBeTrue("gl.getParameter(gl.ALPHA_BITS) == 0"); |
- } |
- shouldBeTrue("gl.getParameter(gl.RED_BITS) >= 8"); |
- shouldBeTrue("gl.getParameter(gl.GREEN_BITS) >= 8"); |
- shouldBeTrue("gl.getParameter(gl.BLUE_BITS) >= 8"); |
- shouldBeTrue("gl.getParameter(gl.DEPTH_BITS) == 0"); |
- shouldBeTrue("gl.getParameter(gl.STENCIL_BITS) == 0"); |
- |
- shouldBeNonNull("contextAttribs = gl.getContextAttributes()"); |
- shouldBeTrue("contextAttribs.alpha == " + alpha); |
- |
- var buf = new Uint8Array(1 * 1 * 4); |
- gl.readPixels(0, 0, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, buf); |
- pixel[0] = buf[0]; |
- pixel[1] = buf[1]; |
- pixel[2] = buf[2]; |
- pixel[3] = buf[3]; |
- correctColor = (contextAttribs.alpha ? [0, 0, 0, 0] : [0, 0, 0, 255]); |
- shouldBe("pixel", "correctColor"); |
- |
- if (fbHasColor) { |
- gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); |
- gl.clearColor(0.5, 0.5, 0.5, 0.5); |
- gl.clear(gl.COLOR_BUFFER_BIT); |
- gl.readPixels(0, 0, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, buf); |
- pixel[0] = buf[0]; |
- pixel[1] = buf[1]; |
- pixel[2] = buf[2]; |
- pixel[3] = buf[3]; |
- shouldBeTrue("Math.abs(pixel[0] - 127) <= 1 && Math.abs(pixel[1] - 127) <= 1 && Math.abs(pixel[2] - 127) <= 1 && Math.abs(pixel[3] - 127) <= 1"); |
- gl.bindFramebuffer(gl.FRAMEBUFFER, null); |
- } |
-} |
- |
-function testDepth(depth) |
-{ |
- debug("Testing depth = " + depth); |
- if (depth) { |
- shouldBeNonNull("gl = getWebGL(1, 1, { stencil: false, antialias: false }, [ 0, 0, 0, 1 ], 1, 0)"); |
- shouldBeTrue("gl.getParameter(gl.DEPTH_BITS) >= 16"); |
- } else { |
- shouldBeNonNull("gl = getWebGL(1, 1, { depth: false, stencil: false, antialias: false }, [ 0, 0, 0, 1 ], 1, 0)"); |
- shouldBeTrue("gl.getParameter(gl.DEPTH_BITS) == 0"); |
- } |
- shouldBeTrue("gl.getParameter(gl.RED_BITS) >= 8"); |
- shouldBeTrue("gl.getParameter(gl.GREEN_BITS) >= 8"); |
- shouldBeTrue("gl.getParameter(gl.BLUE_BITS) >= 8"); |
- shouldBeTrue("gl.getParameter(gl.ALPHA_BITS) >= 8"); |
- |
- shouldBeNonNull("contextAttribs = gl.getContextAttributes()"); |
- |
- gl.depthFunc(gl.NEVER); |
- |
- var vertices = new Float32Array([ |
- 1.0, 1.0, 0.0, |
- -1.0, 1.0, 0.0, |
- -1.0, -1.0, 0.0, |
- 1.0, 1.0, 0.0, |
- -1.0, -1.0, 0.0, |
- 1.0, -1.0, 0.0]); |
- var colors = new Uint8Array([ |
- 255, 0, 0, 255, |
- 255, 0, 0, 255, |
- 255, 0, 0, 255, |
- 255, 0, 0, 255, |
- 255, 0, 0, 255, |
- 255, 0, 0, 255]); |
- |
- var buf = drawAndReadPixel(gl, vertices, colors, 0, 0); |
- pixel[0] = buf[0]; |
- pixel[1] = buf[1]; |
- pixel[2] = buf[2]; |
- pixel[3] = buf[3]; |
- correctColor = (contextAttribs.depth ? [0, 0, 0, 255] : [255, 0, 0, 255]); |
- shouldBe("pixel", "correctColor"); |
- |
- if (fbHasDepth) { |
- gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); |
- gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); |
- var buf = drawAndReadPixel(gl, vertices, colors, 0, 0); |
- pixel[0] = buf[0]; |
- pixel[1] = buf[1]; |
- pixel[2] = buf[2]; |
- pixel[3] = buf[3]; |
- shouldBe("pixel", "[0, 0, 0, 255]"); |
- gl.bindFramebuffer(gl.FRAMEBUFFER, null); |
- } |
-} |
- |
-function testStencilAndDepth(stencil, depth) |
-{ |
- debug("Testing stencil = " + stencil + ", depth = " + depth); |
- var creationString = |
- "gl = getWebGL(1, 1, { depth: " + depth + ", stencil: " + stencil + ", antialias: false }, [ 0, 0, 0, 1 ], 1, 0)"; |
- shouldBeNonNull(creationString); |
- |
- shouldBeTrue("gl.getParameter(gl.RED_BITS) >= 8"); |
- shouldBeTrue("gl.getParameter(gl.GREEN_BITS) >= 8"); |
- shouldBeTrue("gl.getParameter(gl.BLUE_BITS) >= 8"); |
- shouldBeTrue("gl.getParameter(gl.ALPHA_BITS) >= 8"); |
- if (depth) |
- shouldBeTrue("gl.getParameter(gl.DEPTH_BITS) >= 16"); |
- else |
- shouldBeTrue("gl.getParameter(gl.DEPTH_BITS) == 0"); |
- |
- if (stencil) |
- shouldBeTrue("gl.getParameter(gl.STENCIL_BITS) >= 8"); |
- else |
- shouldBeTrue("gl.getParameter(gl.STENCIL_BITS) == 0"); |
- |
- shouldBeNonNull("contextAttribs = gl.getContextAttributes()"); |
- if (!depth && contextAttribs.depth) { |
- testFailed("WebGL implementation provided a depth buffer when it should not have"); |
- } |
- if (!contextAttribs.depth) |
- depth = false; |
- if (!stencil && contextAttribs.stencil) { |
- testFailed("WebGL implementation provided a stencil buffer when it should not have"); |
- } |
- if (!contextAttribs.stencil) |
- stencil = false; |
- |
- gl.depthFunc(gl.ALWAYS); |
- |
- gl.stencilFunc(gl.NEVER, 1, 1); |
- gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP); |
- |
- var vertices = new Float32Array([ |
- 1.0, 1.0, 0.0, |
- -1.0, 1.0, 0.0, |
- -1.0, -1.0, 0.0, |
- 1.0, 1.0, 0.0, |
- -1.0, -1.0, 0.0, |
- 1.0, -1.0, 0.0]); |
- var colors = new Uint8Array([ |
- 255, 0, 0, 255, |
- 255, 0, 0, 255, |
- 255, 0, 0, 255, |
- 255, 0, 0, 255, |
- 255, 0, 0, 255, |
- 255, 0, 0, 255]); |
- |
- var buf = drawAndReadPixel(gl, vertices, colors, 0, 0); |
- pixel[0] = buf[0]; |
- pixel[1] = buf[1]; |
- pixel[2] = buf[2]; |
- pixel[3] = buf[3]; |
- correctColor = (stencil ? [0, 0, 0, 255] : [255, 0, 0, 255]); |
- shouldBe("pixel", "correctColor"); |
- |
- if (fbHasStencil) { |
- gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); |
- gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); |
- var buf = drawAndReadPixel(gl, vertices, colors, 0, 0); |
- pixel[0] = buf[0]; |
- pixel[1] = buf[1]; |
- pixel[2] = buf[2]; |
- pixel[3] = buf[3]; |
- shouldBe("pixel", "[0, 0, 0, 255]"); |
- gl.bindFramebuffer(gl.FRAMEBUFFER, null); |
- } |
-} |
- |
-function testAntialias(antialias) |
-{ |
- debug("Testing antialias = " + antialias); |
- if (antialias) |
- shouldBeNonNull("gl = getWebGL(2, 2, { depth: false, stencil: false, alpha: false, antialias: true }, [ 0, 0, 0, 1 ], 1, 0)"); |
- else |
- shouldBeNonNull("gl = getWebGL(2, 2, { depth: false, stencil: false, alpha: false, antialias: false }, [ 0, 0, 0, 1 ], 1, 0)"); |
- shouldBeNonNull("contextAttribs = gl.getContextAttributes()"); |
- |
- var vertices = new Float32Array([ |
- 1.0, 1.0, 0.0, |
- -1.0, 1.0, 0.0, |
- -1.0, -1.0, 0.0]); |
- var colors = new Uint8Array([ |
- 255, 0, 0, 255, |
- 255, 0, 0, 255, |
- 255, 0, 0, 255]); |
- var buf = drawAndReadPixel(gl, vertices, colors, 0, 0); |
- pixel[0] = buf[0]; |
- shouldBe("pixel[0] != 255 && pixel[0] != 0", "contextAttribs.antialias"); |
-} |
- |
-function runTest() |
-{ |
- testDefault(); |
- testAlpha(true); |
- testAlpha(false); |
- testDepth(true); |
- testDepth(false); |
- testStencilAndDepth(true, false); |
- testStencilAndDepth(false, false); |
- testStencilAndDepth(true, true); |
- testStencilAndDepth(false, true); |
- testAntialias(true); |
- testAntialias(false); |
- |
- finishTest(); |
-} |
- |
-</script> |
-</head> |
-<body onload="init()"> |
-<div id="description"></div> |
-<div id="console"></div> |
-</body> |
-</html> |