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

Side by Side Diff: third_party/WebKit/LayoutTests/fast/canvas/webgl/OffscreenCanvas-TransferToFromImageBitmap-TexImage2D.html

Issue 1962413002: Implement transferToImageBitmap() in WebGLRenderingContext (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add new test case, cache SkIMage Created 4 years, 7 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 <head>
4 <script src="./resources/webgl-test-utils-full.js"></script>
5 <script src="./resources/tex-image-and-sub-image-utils.js"></script>
6 <script src="../../../resources/js-test.js"></script>
7 </head>
8
9 <script id='myWorker' type='text/worker'>
10 self.onmessage = function(e) {
11 var canvas = new OffscreenCanvas(128, 128);
12 var gl = canvas.getContext('webgl');
13 gl.clearColor(1.0, 1.0, 0.0, 1.0);
14 gl.clear(gl.COLOR_BUFFER_BIT);
15
16 var image = canvas.transferToImageBitmap();
17 self.postMessage({bitmap: image}, [image]);
18 };
19 </script>
20
21 <script>
22 window.jsTestIsAsync = true;
23
24 var wtu = WebGLTestUtils;
25 var tiu = TexImageUtils;
26 var internalFormat = "RGBA";
27 var pixelFormat = "RGBA";
28 var pixelType = "UNSIGNED_BYTE";
29 var blob = new Blob([document.getElementById('myWorker').textContent]);
30 var worker = new Worker(URL.createObjectURL(blob));
31 var bitmap;
32
33 var canvas = document.createElement("canvas");
34 canvas.width = 128;
35 canvas.height = 128;
36 var ctx = canvas.getContext('bitmaprenderer');
37
38 var width = 32;
39 var height = 32;
40 var canvas2d = document.createElement("canvas");
41 canvas2d.width = width;
42 canvas2d.height = height;
43 var gl = canvas2d.getContext('webgl');
44 gl.clearColor(0,0,0,1);
45 gl.clearDepth(1);
46 gl.disable(gl.BLEND);
47
48 function checkCanvas(buf, width, height)
49 {
50 for (var i = 0; i < width * height; i++) {
51 if (buf[i * 4] != 255 || buf[i * 4 + 1] != 255 ||
52 buf[i * 4 + 2] != 0 || buf[i * 4 + 3] != 255) {
53 testFailed("This pixel should be red, but it is: [" + buf[i * 4] + " , " +
54 buf[i * 4 + 1] + ", " + buf[i * 4 + 2] + ", " + buf[i * 4 + 3] + "].");
55 finishJSTest();
56 }
57 }
58 }
59
60 function runTestOnBindingTarget(bindingTarget, program, bitmap)
61 {
62 gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
63 // Enable writes to the RGBA channels
64 gl.colorMask(1, 1, 1, 0);
65 var texture = gl.createTexture();
66 // Bind the texture to texture unit 0
67 gl.bindTexture(bindingTarget, texture);
68 // Set up texture parameters
69 gl.texParameteri(bindingTarget, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
70 gl.texParameteri(bindingTarget, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
71
72 var targets = [gl.TEXTURE_2D];
73 // Upload the image into the texture
74 for (var tt = 0; tt < targets.length; ++tt) {
75 gl.texImage2D(targets[tt], 0, gl[internalFormat], gl[pixelFormat], gl[pi xelType], bitmap);
76 }
77 for (var tt = 0; tt < targets.length; ++tt) {
78 // Draw the triangles
79 gl.clearColor(0, 0, 0, 1);
80 gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
81 gl.drawArrays(gl.TRIANGLES, 0, 6);
82
83 var buf = new Uint8Array(width * height * 4);
84 gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, buf);
85 checkCanvas(buf, width, height);
86 }
87 }
88
89 worker.onmessage = function(msg) {
90 bitmap = msg.data.bitmap;
91 ctx.transferFromImageBitmap(bitmap);
92 var program = tiu.setupTexturedQuad(gl, internalFormat);
93 runTestOnBindingTarget(gl.TEXTURE_2D, program, bitmap);
94 testPassed("This test passed");
95 finishJSTest();
96 }
97 worker.postMessage("");
98
99 </script>
100 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698