Summary: | Optimize canvas fills / drawImage when covering entire canvas | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Ben Wells <benwells> | ||||||
Component: | Canvas | Assignee: | Ben Wells <benwells> | ||||||
Status: | RESOLVED FIXED | ||||||||
Severity: | Normal | CC: | jamesr, kbr, mdelaney7, senorblanco, webkit.review.bot | ||||||
Priority: | P2 | ||||||||
Version: | 528+ (Nightly build) | ||||||||
Hardware: | Unspecified | ||||||||
OS: | Unspecified | ||||||||
Attachments: |
|
Description
Ben Wells
2011-10-24 17:48:54 PDT
Created attachment 113422 [details]
Patch
It would be nice to do the same optimization for filling a path, but there doesn't seem to be any easy way to see if a path contains a rectangle. Comment on attachment 113422 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=113422&action=review Looks good. Thanks for implementing this! r=me > Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1566 > + Path transformedPath; > + transformedPath.addRect(rect); > + transformedPath.transform(state().m_transform); > + > + IntRect canvasRect(0, 0, canvas()->width(), canvas()->height()); > + return transformedPath.contains(canvasRect.minXMinYCorner()) && transformedPath.contains(canvasRect.minXMaxYCorner()) > + && transformedPath.contains(canvasRect.maxXMinYCorner()) && transformedPath.contains(canvasRect.maxXMaxYCorner()); This looks fine, but I'm wondering if it would be easier to use FloatQuad: FloatQuad quad(rect); FloatQuad canvasQuad(FloatRect(0, 0, canvas->width(), canvas->height())); return state().m_transform.mapQuad(quad).containsQuad(canvasQuad); OTOH, I've never actually tried it, so feel free to go with what you've already got. Created attachment 113571 [details]
Patch using FloatQuad
Comment on attachment 113571 [details]
Patch using FloatQuad
Using FloatQuad is much nicer. Thanks for the tip!
Comment on attachment 113571 [details]
Patch using FloatQuad
Looks great. r=me
Comment on attachment 113571 [details] Patch using FloatQuad Clearing flags on attachment: 113571 Committed r99257: <http://trac.webkit.org/changeset/99257> All reviewed patches have been landed. Closing bug. |