Bug 34578 - [Qt] Rendering semitransparent layers is slow with Qt
Summary: [Qt] Rendering semitransparent layers is slow with Qt
Status: RESOLVED WONTFIX
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit Qt (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Nobody
URL:
Keywords: Performance, Qt
Depends on:
Blocks:
 
Reported: 2010-02-04 06:09 PST by Benjamin Poulain
Modified: 2010-02-04 08:04 PST (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Benjamin Poulain 2010-02-04 06:09:16 PST
Currently, Qt is abnormally slow to render semi-transparent layers.

In GraphicsContext::beginTransparencyLayer(), we create a new transparent Pixmap and start a painter on it. In GraphicsContext::endTransparencyLayer() we paint this pixmap on top of the existing canvas.

Creating the pixmaps, the painter is relatively slow. The big bottleneck is really the blending of the pixmap on top of what is already painted. For a site using transparent layer (like Facebook alerts), blending take more than half of the painting time.
Comment 1 Benjamin Poulain 2010-02-04 08:04:47 PST
I have compared the blending of the raster engine against the one of Core Graphics and Qt is competitive.

The only fast solution I have found is to use OpenGL. In that case the rendering of semitransparent layers is not a problem. This is out of scope for WebKit and should be handled by the paint engine of Qt (or with a full opengl ES painting stack in WebKit).