[webkit-reviews] review granted: [Bug 156129] toDataURL image upside down if premultipliedAlpha=false : [Attachment 432503] Patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Jun 29 13:22:43 PDT 2021


Kenneth Russell <kbr at google.com> has granted Kimmo Kinnunen
<kkinnunen at apple.com>'s request for review:
Bug 156129: toDataURL image upside down if premultipliedAlpha=false
https://bugs.webkit.org/show_bug.cgi?id=156129

Attachment 432503: Patch

https://bugs.webkit.org/attachment.cgi?id=432503&action=review




--- Comment #11 from Kenneth Russell <kbr at google.com> ---
Comment on attachment 432503
  --> https://bugs.webkit.org/attachment.cgi?id=432503
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=432503&action=review

Please address Said's remaining code review comments, but this looks fine to me
overall. Would be great to get this longstanding bug fixed. r+

>> Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:239
>> +	    ASSERT(results->format().pixelFormat == PixelFormat::RGBA8 ||
results->format().pixelFormat == PixelFormat::BGRA8);
> 
> GraphicsContextGLOpenGL::readPixelsForPaintResults() creates the PixelBuffer
with PixelFormat::RGBA8 and it calls gl::ReadnPixelsRobustANGLE() with GL_RGBA.
So why do we assert "|| pixelFormat == PixelFormat::BGRA8"?

I assume in order to better enforce constraints between unrelated code,
especially if the called code changes in the future - for example, to support
higher bit depth back buffers in WebGL, which is a feature being actively
developed in the ColorWeb CG.

>> Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:248
>> +		memcpy(src, temp.get(), rowStride);
> 
> Can't we use vImage to accelerate this operation? I read this comment in
vImage.h:
> 
>  *	Sometimes you may want to flip an image vertically. In vImage, this can
be done cheaply by adjusting the pointer
>  *	to point to the last scanline of the image and setting rowBytes
negative, for either the source or destination
>  *	image:
> 
> I am not sure if vImage can do this in place as you did or not.

This code isn't Cocoa-specific so writing the loop manually seems most
portable.


More information about the webkit-reviews mailing list