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

Unified Diff: LayoutTests/fast/canvas/webgl/webgl-large-texture.html

Issue 221083002: Fix assert failure caused by ImageExtractor and optimize test (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: LayoutTests/fast/canvas/webgl/webgl-large-texture.html
diff --git a/LayoutTests/fast/canvas/webgl/webgl-large-texture.html b/LayoutTests/fast/canvas/webgl/webgl-large-texture.html
index 11ccac88b4a7a3540ed642354f512fb4ccc335b8..c79b9a1aa0364729749bb8ea094c41d769c198ff 100644
--- a/LayoutTests/fast/canvas/webgl/webgl-large-texture.html
+++ b/LayoutTests/fast/canvas/webgl/webgl-large-texture.html
@@ -28,31 +28,41 @@ function init()
runTest();
}
-function generateImageData(width, height)
-{
- var srcCanvas = document.createElement('canvas');
- srcCanvas.width = width;
- srcCanvas.height = height;
- var ctx = srcCanvas.getContext('2d');
- ctx.fillStyle = '#ffffff';
- ctx.fillRect(0, 0, srcCanvas.width, srcCanvas.height);
- return srcCanvas.toDataURL('image/jpeg');
+function andPixels(pixels32) {
+ var pixelsAnd = 0xffffffff;
+ for (var i = 0; i < pixels32.length; ++i) {
+ pixelsAnd &= pixels32[i];
+ }
+ return pixelsAnd;
}
function runTest() {
+ var width = 3900;
+ var height = 3900;
+
var canvas = document.getElementById('canvas');
var gl = canvas.getContext('webgl');
+ gl.pixelStorei(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, gl.NONE);
+
var texture = gl.createTexture();
+ gl.bindTexture(gl.TEXTURE_2D, texture);
+
var image = new Image();
image.onerror = function (e) {
testFailed('Image failed to load');
}
image.onload = function () {
- var width = image.width;
- var height = image.height;
- debug('Image width and height: ' + width + ', ' + height);
- var pixels = new Uint8Array(width * height * 4);
+ debug('Image width and height: ' + image.width + ', ' + image.height);
+
+ if (image.width !== width || image.height !== height) {
+ testFailed('Image did not have expected dimensions.');
+ return;
+ }
+
+ var pixels = new ArrayBuffer(width * height * 4);
+ var pixels8 = new Uint8Array(pixels);
+ var pixels32 = new Uint32Array(pixels);
if (width > gl.getParameter(gl.MAX_TEXTURE_SIZE) ||
width > gl.getParameter(gl.MAX_RENDERBUFFER_SIZE)) {
@@ -61,8 +71,7 @@ function runTest() {
return;
}
- gl.bindTexture(gl.TEXTURE_2D, texture);
- gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, gl.RGB, gl.UNSIGNED_BYTE, image);
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
if (gl.getError() != gl.NO_ERROR) {
// Loading the texture is allowed to fail due to resource constraints.
finishJSTest();
@@ -71,18 +80,16 @@ function runTest() {
var fb = gl.createFramebuffer();
gl.bindFramebuffer(gl.FRAMEBUFFER, fb);
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);
- gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
-
- for (var i = 0; i < pixels.length; ++i) {
- // The image is filled with white, 254 to account for decoding rounding differences.
- if (pixels[i] < 254) {
- testFailed('Texture was not loaded correctly.');
- return;
- }
+ gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixels8);
+
+ // The image is filled with white, ignore last bit of each subpixel to account for decoding rounding differences.
+ if ((andPixels(pixels32) & 0xfefefefe) !== (0xfefefefe | 0)) {
+ testFailed('Texture was not loaded correctly.');
}
+
finishJSTest();
}
- image.src = generateImageData(3900, 3900);
+ image.src = 'resources/white3900x3900.jpg';
}
init();
« no previous file with comments | « LayoutTests/fast/canvas/webgl/resources/white3900x3900.jpg ('k') | Source/platform/graphics/gpu/WebGLImageConversion.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698