[Chromium] flickering observed when copying 2D canvas to webGL texture
authorjunov@google.com <junov@google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 29 Oct 2012 19:37:19 +0000 (19:37 +0000)
committerjunov@google.com <junov@google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 29 Oct 2012 19:37:19 +0000 (19:37 +0000)
https://bugs.webkit.org/show_bug.cgi?id=100691

Reviewed by Stephen White.

Source/WebCore:

Added a flush to the webgl context after texture upload from an image
buffer to ensure proper graphics context synchronization with respect
to subsequent changes to the source image.

Tests: fast/canvas/webgl/canvas-2d-webgl-texture.html

* platform/graphics/skia/ImageBufferSkia.cpp:
(WebCore::ImageBuffer::copyToPlatformTexture):

LayoutTests:

Modified test by adding a canvas draw imediately after webgl texture
upload in order to exercise graphics context synchronization between
the webGL and 2D canvas graphics contexts.

* fast/canvas/webgl/canvas-2d-webgl-texture.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@132839 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/fast/canvas/webgl/canvas-2d-webgl-texture.html
Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/skia/ImageBufferSkia.cpp

index 9813b4f..3ad11ac 100644 (file)
@@ -1,3 +1,16 @@
+2012-10-29  Justin Novosad  <junov@google.com>
+
+        [Chromium] flickering observed when copying 2D canvas to webGL texture
+        https://bugs.webkit.org/show_bug.cgi?id=100691
+
+        Reviewed by Stephen White.
+
+        Modified test by adding a canvas draw imediately after webgl texture
+        upload in order to exercise graphics context synchronization between
+        the webGL and 2D canvas graphics contexts.
+
+        * fast/canvas/webgl/canvas-2d-webgl-texture.html:
+
 2012-10-29  Glenn Adams  <glenn@skynav.com>
        
         [CSSOM] Extraneous whitespace in CSSImportRule.cssText
index 411b034..962232c 100755 (executable)
@@ -30,6 +30,8 @@ function draw()
   ctx.fillStyle = "rgb(0, 0, 200)";
   ctx.fillRect(0, 0, 256, 256);
   gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, canvas2d);
+  ctx.fillStyle = "rgb(200, 0, 0)";
+  ctx.fillRect(0, 0, 256, 256);
 
   wtu.drawQuad(gl);
   wtu.checkCanvasRect(gl, 0, 0, 1, 1, [0, 0, 200, 255], "Should have rendered blue.", 1);
index 382a54c..c5acbfb 100644 (file)
@@ -1,3 +1,19 @@
+2012-10-29  Justin Novosad  <junov@google.com>
+
+        [Chromium] flickering observed when copying 2D canvas to webGL texture
+        https://bugs.webkit.org/show_bug.cgi?id=100691
+
+        Reviewed by Stephen White.
+
+        Added a flush to the webgl context after texture upload from an image
+        buffer to ensure proper graphics context synchronization with respect
+        to subsequent changes to the source image.
+
+        Tests: fast/canvas/webgl/canvas-2d-webgl-texture.html
+
+        * platform/graphics/skia/ImageBufferSkia.cpp:
+        (WebCore::ImageBuffer::copyToPlatformTexture):
+
 2012-10-29  Glenn Adams  <glenn@skynav.com>
 
         [CSSOM] Extraneous whitespace in CSSImportRule.cssText
index 697fde2..ad47cf4 100644 (file)
@@ -194,6 +194,7 @@ bool ImageBuffer::copyToPlatformTexture(GraphicsContext3D& context, Platform3DOb
 
     context.pixelStorei(Extensions3D::UNPACK_FLIP_Y_CHROMIUM, false);
     context.pixelStorei(Extensions3D::UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM, false);
+    context.flush();
     return true;
 }