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

Side by Side Diff: third_party/WebKit/LayoutTests/fast/canvas/webgl/offscreenCanvas-transferToImageBitmap-texImage2D.html

Issue 2816033004: Implement OffscreenCanvas.WebGL2Context TransferToImageBitmap (Closed)
Patch Set: Created 3 years, 8 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
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/fast/canvas/webgl/offscreenCanvas-transferToImageBitmap-texImage2D-expected.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html> 2 <html>
3 <head> 3 <head>
4 <script src="./resources/webgl-test-utils-full.js"></script> 4 <script src="./resources/webgl-test-utils-full.js"></script>
5 <script src="./resources/tex-image-and-sub-image-utils.js"></script> 5 <script src="./resources/tex-image-and-sub-image-utils.js"></script>
6 <script src="../../../resources/js-test.js"></script> 6 <script src="../../../resources/js-test.js"></script>
7 </head> 7 </head>
8 8
9 <script id='myWorker' type='text/worker'> 9 <script id='myWorker' type='text/worker'>
10 self.onmessage = function(e) { 10 function getImageBitmap(webglContext) {
11 var canvas = new OffscreenCanvas(128, 128); 11 var canvas = new OffscreenCanvas(128, 128);
12 var gl = canvas.getContext('webgl'); 12 var gl = canvas.getContext(webglContext);
13 gl.clearColor(1.0, 1.0, 0.0, 1.0); 13 gl.clearColor(1.0, 1.0, 0.0, 1.0);
14 gl.clear(gl.COLOR_BUFFER_BIT); 14 gl.clear(gl.COLOR_BUFFER_BIT);
15 return canvas.transferToImageBitmap();
16 }
15 17
16 var image = canvas.transferToImageBitmap(); 18 self.onmessage = function(e) {
17 self.postMessage({bitmap: image}, [image]); 19 var image1 = getImageBitmap("webgl");
20 var image2 = getImageBitmap("webgl2");
21
22 self.postMessage({ bitmap1: image1,
23 bitmap2: image2 },
24 [ image1, image2 ]);
18 }; 25 };
19 </script> 26 </script>
20 27
21 <script> 28 <script>
22 window.jsTestIsAsync = true; 29 window.jsTestIsAsync = true;
23 30
24 var wtu = WebGLTestUtils; 31 var wtu = WebGLTestUtils;
25 var tiu = TexImageUtils; 32 var tiu = TexImageUtils;
26 var internalFormat = "RGBA"; 33 var internalFormat = "RGBA";
27 var pixelFormat = "RGBA"; 34 var pixelFormat = "RGBA";
28 var pixelType = "UNSIGNED_BYTE"; 35 var pixelType = "UNSIGNED_BYTE";
29 var blob = new Blob([document.getElementById('myWorker').textContent]); 36 var blob = new Blob([document.getElementById('myWorker').textContent]);
30 var worker = new Worker(URL.createObjectURL(blob)); 37 var worker = new Worker(URL.createObjectURL(blob));
31 var bitmap; 38 var bitmap1, bitmap2;
32 39
33 var width = 32; 40 var width = 32;
34 var height = 32; 41 var height = 32;
35 var canvas2d = document.createElement("canvas"); 42 var canvas2d = document.createElement("canvas");
36 canvas2d.width = width; 43 canvas2d.width = width;
37 canvas2d.height = height; 44 canvas2d.height = height;
38 var gl = canvas2d.getContext('webgl'); 45 var gl = canvas2d.getContext('webgl');
Justin Novosad 2017/04/13 17:37:43 weird that this one is called canvas2d
39 gl.clearColor(0,0,0,1); 46 gl.clearColor(0,0,0,1);
40 gl.clearDepth(1); 47 gl.clearDepth(1);
41 gl.disable(gl.BLEND); 48 gl.disable(gl.BLEND);
42 49
43 function checkCanvas(buf, width, height) 50 function checkCanvas(buf, width, height, webglContext)
44 { 51 {
45 for (var i = 0; i < width * height; i++) { 52 for (var i = 0; i < width * height; i++) {
46 if (buf[i * 4] != 255 || buf[i * 4 + 1] != 255 || 53 if (buf[i * 4] != 255 || buf[i * 4 + 1] != 255 ||
47 buf[i * 4 + 2] != 0 || buf[i * 4 + 3] != 255) { 54 buf[i * 4 + 2] != 0 || buf[i * 4 + 3] != 255) {
48 testFailed("This pixel should be red, but it is: [" + buf[i * 4] + " , " + 55 testFailed("OffscreenCanvas." + webglContext +
56 ": This pixel should be red, but it is: [" + buf[i * 4] + ", " +
49 buf[i * 4 + 1] + ", " + buf[i * 4 + 2] + ", " + buf[i * 4 + 3] + "]."); 57 buf[i * 4 + 1] + ", " + buf[i * 4 + 2] + ", " + buf[i * 4 + 3] + "].");
50 finishJSTest(); 58 return;
51 } 59 }
52 } 60 }
61 testPassed("TransferToImageBitmap test on OffscreenCanvas." + webglContext + " passed");
53 } 62 }
54 63
55 function runTestOnBindingTarget(bindingTarget, program, bitmap) 64 function runTestOnBindingTarget(bindingTarget, program, bitmap, webglContext)
56 { 65 {
57 gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); 66 gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
58 // Enable writes to the RGBA channels 67 // Enable writes to the RGBA channels
59 gl.colorMask(1, 1, 1, 0); 68 gl.colorMask(1, 1, 1, 0);
60 var texture = gl.createTexture(); 69 var texture = gl.createTexture();
61 // Bind the texture to texture unit 0 70 // Bind the texture to texture unit 0
62 gl.bindTexture(bindingTarget, texture); 71 gl.bindTexture(bindingTarget, texture);
63 // Set up texture parameters 72 // Set up texture parameters
64 gl.texParameteri(bindingTarget, gl.TEXTURE_MIN_FILTER, gl.NEAREST); 73 gl.texParameteri(bindingTarget, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
65 gl.texParameteri(bindingTarget, gl.TEXTURE_MAG_FILTER, gl.NEAREST); 74 gl.texParameteri(bindingTarget, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
66 75
67 var targets = [gl.TEXTURE_2D]; 76 var targets = [gl.TEXTURE_2D];
68 // Upload the image into the texture 77 // Upload the image into the texture
69 for (var tt = 0; tt < targets.length; ++tt) { 78 for (var tt = 0; tt < targets.length; ++tt) {
70 gl.texImage2D(targets[tt], 0, gl[internalFormat], gl[pixelFormat], gl[pi xelType], bitmap); 79 gl.texImage2D(targets[tt], 0, gl[internalFormat], gl[pixelFormat], gl[pi xelType], bitmap);
71 } 80 }
72 for (var tt = 0; tt < targets.length; ++tt) { 81 for (var tt = 0; tt < targets.length; ++tt) {
73 // Draw the triangles 82 // Draw the triangles
74 gl.clearColor(0, 0, 0, 1); 83 gl.clearColor(0, 0, 0, 1);
75 gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); 84 gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
76 gl.drawArrays(gl.TRIANGLES, 0, 6); 85 gl.drawArrays(gl.TRIANGLES, 0, 6);
77 86
78 var buf = new Uint8Array(width * height * 4); 87 var buf = new Uint8Array(width * height * 4);
79 gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, buf); 88 gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, buf);
80 checkCanvas(buf, width, height); 89 checkCanvas(buf, width, height, webglContext);
81 } 90 }
82 } 91 }
83 92
84 worker.onmessage = function(msg) { 93 worker.onmessage = function(msg) {
85 bitmap = msg.data.bitmap; 94 bitmap1 = msg.data.bitmap1;
95 bitmap2 = msg.data.bitmap2;
86 var program = tiu.setupTexturedQuad(gl, internalFormat); 96 var program = tiu.setupTexturedQuad(gl, internalFormat);
87 runTestOnBindingTarget(gl.TEXTURE_2D, program, bitmap); 97 runTestOnBindingTarget(gl.TEXTURE_2D, program, bitmap1, "webgl");
88 testPassed("This test passed"); 98 runTestOnBindingTarget(gl.TEXTURE_2D, program, bitmap2, "webgl2");
89 finishJSTest(); 99 finishJSTest();
90 } 100 }
91 worker.postMessage(""); 101 worker.postMessage("");
92 102
93 </script> 103 </script>
94 </html> 104 </html>
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/fast/canvas/webgl/offscreenCanvas-transferToImageBitmap-texImage2D-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698