Bug 83295

Summary: [chromium] Drawing an accelerated canvas onto itself is slow.
Product: WebKit Reporter: Stephen White <senorblanco>
Component: CanvasAssignee: Stephen White <senorblanco>
Status: RESOLVED FIXED    
Severity: Normal CC: jamesr, kbr
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Attachments:
Description Flags
Test case
none
Patch
none
Patch jamesr: review+

Stephen White
Reported 2012-04-05 11:09:00 PDT
[chromium] Drawing an accelerated canvas onto itself is slow.
Attachments
Test case (1.99 KB, text/html)
2012-04-05 11:11 PDT, Stephen White
no flags
Patch (1.45 KB, patch)
2012-04-05 11:15 PDT, Stephen White
no flags
Patch (1.50 KB, patch)
2012-04-05 13:00 PDT, Stephen White
jamesr: review+
Stephen White
Comment 1 2012-04-05 11:11:57 PDT
Stephen White
Comment 2 2012-04-05 11:15:43 PDT
James Robinson
Comment 3 2012-04-05 11:21:57 PDT
Comment on attachment 135861 [details] Patch Interesting. What if this is a gpu->cpu or cpu->gpu copy? Should we be checking the return value?
Stephen White
Comment 4 2012-04-05 12:36:35 PDT
(In reply to comment #3) > (From update of attachment 135861 [details]) > Interesting. What if this is a gpu->cpu or cpu->gpu copy? Should we be checking the return value? Yeah, thanks for reminding me. Mike made me remove the copyTo() fallback from the internal implementation.
Stephen White
Comment 5 2012-04-05 12:58:49 PDT
Note that it should always be GPU->GPU or CPU->CPU, since it's the same canvas.
Stephen White
Comment 6 2012-04-05 13:00:13 PDT
James Robinson
Comment 7 2012-04-05 13:32:46 PDT
Comment on attachment 135881 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=135881&action=review > Source/WebCore/platform/graphics/skia/ImageSkia.cpp:483 > + if (!bitmap.deepCopyTo(&temp, bitmap.config())) > + bitmap.copyTo(&temp, bitmap.config()); gotcha. so given that the configs match, when would deepCopyTo fail?
Stephen White
Comment 8 2012-04-05 13:40:57 PDT
(In reply to comment #7) > (From update of attachment 135881 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=135881&action=review > > > Source/WebCore/platform/graphics/skia/ImageSkia.cpp:483 > > + if (!bitmap.deepCopyTo(&temp, bitmap.config())) > > + bitmap.copyTo(&temp, bitmap.config()); > > gotcha. so given that the configs match, when would deepCopyTo fail? Actually, it turns out that there is an internal copyTo fallback in the software case; it's only the texture-backed case that can fail. If the target has a texture which isn't a renderable format (eg., compressed texture), deepCopy() would fail, since the copy works by rendering via FBO. But given that this texture is a backing store, it should always succeed. So, never in this case. :)
Stephen White
Comment 9 2012-04-05 13:44:24 PDT
Note You need to log in before you can comment on or make changes to this bug.