[Webkit-unassigned] [Bug 161530] New: Stop using glReadPixels() to blit AC surfaces in the UIProcess

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri Sep 2 03:03:00 PDT 2016


            Bug ID: 161530
           Summary: Stop using glReadPixels() to blit AC surfaces in the
    Classification: Unclassified
           Product: WebKit
           Version: WebKit Local Build
          Hardware: Unspecified
                OS: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: WebKit Gtk
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: emanuele.aina at collabora.com
                CC: bugs-noreply at webkitgtk.org

glReadPixels() is quite obviously suboptimal in the AC paint loop under Wayland[1], and we need a better mechanism to blit surfaces on the window.

One option would be to rely on gdk_cairo_draw_from_gl()[1], but unfortunately we can't trivially use that as it results in the image being y-flipped on screen. Apparently gdk_cairo_draw_from_gl() is already doing its own y-flipping[3], so in my current limited understanding of how GL and its GTK+ integration works the best option would be to flip rendering in the UIProcess and then pipe the resulting surfaces through gdk_cairo_draw_from_gl().

I'm not sure if the current rendering is wrong or it's a weird GL inconsistency that we would have to work around, but at least this approach would just work with current GTK+. :)

[1] https://trac.webkit.org/browser/trunk/Source/WebKit2/UIProcess/gtk/AcceleratedBackingStoreWayland.cpp?rev=205116#L74
[2] https://git.gnome.org/browse/gtk+/tree/gdk/gdkgl.c#n330
[3] https://git.gnome.org/browse/gtk+/tree/gdk/gdkgl.c#n455

You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-unassigned/attachments/20160902/3db77114/attachment.html>

More information about the webkit-unassigned mailing list