1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/canvas/test/webgl-mochitest/test_texsubimage_float.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,62 @@ 1.4 +<!DOCTYPE HTML> 1.5 +<title>WebGL test: bug 1003607</title> 1.6 +<script src="/tests/SimpleTest/SimpleTest.js"></script> 1.7 +<link rel="stylesheet" href="/tests/SimpleTest/test.css"> 1.8 +<script src="driver-info.js"></script> 1.9 +<script src="webgl-util.js"></script> 1.10 +<body> 1.11 +<canvas id="c"></canvas> 1.12 +<script> 1.13 + 1.14 +// Give ourselves a scope to return early from: 1.15 +(function() { 1.16 + var gl = WebGLUtil.getWebGL('c'); 1.17 + if (!gl) { 1.18 + todo(false, 'WebGL is unavailable.'); 1.19 + return; 1.20 + } 1.21 + 1.22 + // Catch actual WebGLUtil errors, not GL errors. 1.23 + function errorFunc(str) { 1.24 + ok(false, 'Error: ' + str); 1.25 + } 1.26 + WebGLUtil.setErrorFunc(errorFunc); 1.27 + 1.28 + function checkGLError(func, info, reference) { 1.29 + var error = gl.getError(); 1.30 + var prefix = info ? ('[' + info + '] ') : ''; 1.31 + var text = 'gl.getError should be 0x' + reference.toString(16) + 1.32 + ', was 0x' + error.toString(16) + '.'; 1.33 + func(error == reference, prefix + text); 1.34 + } 1.35 + 1.36 + // Begin test: 1.37 + if (!gl.getExtension('OES_texture_float')) { 1.38 + todo(false, 'Not having this extension is fine.'); 1.39 + return; 1.40 + } 1.41 + var tex = gl.createTexture(); 1.42 + gl.bindTexture(gl.TEXTURE_2D, tex); 1.43 + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); 1.44 + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); 1.45 + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); 1.46 + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); 1.47 + checkGLError(ok, 'texture parameter setup should succeed', gl.NO_ERROR); 1.48 + 1.49 + // Generate data 1.50 + var width = 2; 1.51 + var height = 2; 1.52 + var numChannels = 4; 1.53 + var data = new Float32Array(width * height * numChannels); 1.54 + for (var ii = 0; ii < data.length; ++ii) { 1.55 + data[ii] = 10000; 1.56 + } 1.57 + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.FLOAT, data); 1.58 + checkGLError(ok, 'floating-point texture allocation should succeed', gl.NO_ERROR); 1.59 + 1.60 + // Try respecifying data 1.61 + gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, width, height, gl.RGBA, gl.FLOAT, data); 1.62 + checkGLError(ok, 'floating-point texture sub image should succeed', gl.NO_ERROR); 1.63 +})(); 1.64 + 1.65 +</script>