Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(517)

Side by Side Diff: LayoutTests/fast/canvas/webgl/framebuffer-bindings-affected-by-to-data-url.html

Issue 805273005: WebGL: paintRenderingResultsToImageData() must restore FBO. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: add layout test Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <html>
3 <body>
4 <span id="description" style="color: white">
5 toDataURL() causes side effect for framebuffer binding. crbug.com/445848
6 </span>
7 <canvas id="example" width="50" height="50">
8 </canvas>
9 <div id="description"></div>
10 <div id="console"></div>
11 <script src="../../../resources/js-test.js"></script>
12 <script src="resources/webgl-test.js"></script>
13 <script src="resources/webgl-test-utils.js"></script>
14 <script>
15 "use strict";
16 var wtu = WebGLTestUtils;
17 description();
18
19 function test() {
20 var glCanvas = document.getElementById("example");
21 // crbug.com/445848 bug occurs only on the following webgl configuration.
22 var gl = wtu.create3DContext(glCanvas, {preserveDrawingBuffer: true, premultip liedAlpha: true});
23 // FIXME: context.getContextAttributes().antialias is always false on
24 // content shell with --dump-render-tree option. See http://crbug.com/375682
25 // If antialias is supported, test can be much shorter for crbug.com/445848.
26
27 var program = wtu.setupColorQuad(gl);
28
29 // Clear backbuffer in red.
30 gl.clearColor(1.0, 0.0, 0.0, 1.0);
31 gl.clear(gl.COLOR_BUFFER_BIT);
32 wtu.checkCanvas(gl, [255, 0, 0, 255], "should be red");
33
34 var fbo = gl.createFramebuffer();
35 var tex = gl.createTexture();
36 gl.bindTexture(gl.TEXTURE_2D, tex);
37 gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 50, 50, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
38 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
39 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
40 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
41 gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
42 gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);
43 gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, t ex, 0);
44 if (gl.checkFramebufferStatus(gl.FRAMEBUFFER) != gl.FRAMEBUFFER_COMPLETE) {
45 finishTest();
46 return;
47 }
48
49 // Clear the FBO in green.
50 gl.clearColor(0.0, 1.0, 0.0, 1.0);
51 gl.clear(gl.COLOR_BUFFER_BIT);
52
53 // backbuffer is still in red.
54 gl.bindFramebuffer(gl.FRAMEBUFFER, null);
55 wtu.checkCanvas(gl, [255, 0, 0, 255], "should be red");
56 gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);
57
58 glCanvas.toDataURL();
59 // The second toDataURL binds backbuffer in crbug.com/445848
60 glCanvas.toDataURL();
61 // It applies to backbuffer, not the FBO.
62 gl.clear(gl.COLOR_BUFFER_BIT);
63
64 // backbuffer must be in red, not green.
65 gl.bindFramebuffer(gl.FRAMEBUFFER, null);
66 wtu.checkCanvas(gl, [255, 0, 0, 255], "should be red");
67
68 finishTest();
69 }
70 test();
71
72 var successfullyParsed = true;
73 </script>
74 </body>
75 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698