diff options
Diffstat (limited to 'dom/canvas/test/webgl-conf/checkout/conformance2/buffers/delete-buffer.html')
-rw-r--r-- | dom/canvas/test/webgl-conf/checkout/conformance2/buffers/delete-buffer.html | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/dom/canvas/test/webgl-conf/checkout/conformance2/buffers/delete-buffer.html b/dom/canvas/test/webgl-conf/checkout/conformance2/buffers/delete-buffer.html new file mode 100644 index 0000000000..d438d65521 --- /dev/null +++ b/dom/canvas/test/webgl-conf/checkout/conformance2/buffers/delete-buffer.html @@ -0,0 +1,80 @@ +<!-- +Copyright (c) 2019 The Khronos Group Inc. +Use of this source code is governed by an MIT-style license that can be +found in the LICENSE.txt file. +--> + +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>WebGL buffer deletion behavior test.</title> +<link rel="stylesheet" href="../../resources/js-test-style.css"/> +<script src="../../js/js-test-pre.js"></script> +<script src="../../js/webgl-test-utils.js"></script> +</head> +<body> +<div id="description"></div> +<div id="console"></div> +<script> +"use strict"; +description("Test buffer deletion behavior."); +// This is a regression test for https://crbug.com/822976 + +var wtu = WebGLTestUtils; + +var gl = wtu.create3DContext(undefined, undefined, 2); +wtu.glErrorShouldBe(gl, gl.NO_ERROR, "Should be no errors from setup."); + +function runTexImageTest(gl) { + debug(""); + var buffer = gl.createBuffer(); + gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, buffer); + gl.bufferData(gl.PIXEL_UNPACK_BUFFER, 4, gl.DYNAMIC_DRAW); + gl.bindBufferBase(gl.UNIFORM_BUFFER, 0, buffer); + gl.deleteBuffer(buffer); + // Indexed uniform buffer bindings should not prevent a buffer from being + // deleted. Therefore, PIXEL_UNPACK_BUFFER binding should also be 0. + wtu.glErrorShouldBe(gl, gl.NO_ERROR, "no error"); + + var tex = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, tex); + var data = new Uint8Array(1024); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA8, 16, 16, 0, + gl.RGBA, gl.UNSIGNED_BYTE, data); + wtu.glErrorShouldBe(gl, gl.NO_ERROR, "texImage2D should succeed"); + + // Clean up bindings just in case an implementation gets it wrong. + gl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null); + gl.bindBufferBase(gl.UNIFORM_BUFFER, 0, null); +} + +function runReadPixelsTest(gl) { + debug(""); + var buffer = gl.createBuffer(); + gl.bindBuffer(gl.PIXEL_PACK_BUFFER, buffer); + gl.bufferData(gl.PIXEL_PACK_BUFFER, 4, gl.DYNAMIC_DRAW); + gl.bindBufferBase(gl.UNIFORM_BUFFER, 0, buffer); + gl.deleteBuffer(buffer); + // Indexed transform feedback buffer bindings should not prevent a buffer + // from being deleted. Therefore, PIXEL_PACK_BUFFER binding should also be 0. + wtu.glErrorShouldBe(gl, gl.NO_ERROR, "no error"); + + var buffer = new Uint8Array(1024); + gl.readPixels(0, 0, 16, 16, gl.RGBA, gl.UNSIGNED_BYTE, buffer); + wtu.glErrorShouldBe(gl, gl.NO_ERROR, "readPixels should succeed"); + + // Clean up bindings just in case an implementation gets it wrong. + gl.bindBuffer(gl.PIXEL_PACK_BUFFER, null); + gl.bindBufferBase(gl.UNIFORM_BUFFER, 0, null); +} + +runTexImageTest(gl); +runReadPixelsTest(gl); + +debug(""); +var successfullyParsed = true; +</script> +<script src="../../js/js-test-post.js"></script> +</body> +</html> |