Bug 44699

Summary: [Gtk] Reduce the size of the shadow buffer in the paths using the clip region
Product: WebKit Reporter: Alejandro G. Castro <alex>
Component: WebKitGTKAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: ariya.hidayat, krit, mrobinson
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: PC   
OS: Linux   
Attachments:
Description Flags
Proposed patch kenneth: review+

Description Alejandro G. Castro 2010-08-26 11:18:13 PDT
Currently we are creating shadows using the complete size of the element in the page, we can use the clip information to reduce that size.
Comment 1 Alejandro G. Castro 2010-08-26 11:25:40 PDT
Created attachment 65587 [details]
Proposed patch
Comment 2 Martin Robinson 2010-08-26 14:09:54 PDT
Does this patch net any performance improvements on its own?
Comment 3 Alejandro G. Castro 2010-08-26 15:06:20 PDT
(In reply to comment #2)
> Does this patch net any performance improvements on its own?

Yep, mostly when scrolling a webpage, we blur a rect as big as the scroll movement, and also for big pages we only blur the viewport part even if the page is bigger than that, for instance identi.ca.
Comment 4 Martin Robinson 2010-08-27 10:44:16 PDT
Is it possible to make calculateShadowBufferDimensions a non-static method and to do this there? That way we could benefit from this improvement at all call sites.
Comment 5 Alejandro G. Castro 2010-08-30 04:29:07 PDT
(In reply to comment #4)
> Is it possible to make calculateShadowBufferDimensions a non-static method and to do this there? That way we could benefit from this improvement at all call sites.

It is, I planned this patch just to make it the rects because they are the main issue nowadays. I'll review the patch.
Comment 6 Kenneth Rohde Christiansen 2010-08-31 03:12:32 PDT
Comment on attachment 65587 [details]
Proposed patch

Seems like a good optimization.

Remember to add a dot at the end of comments.
Comment 7 Martin Robinson 2010-08-31 09:45:44 PDT
Do you mind creating a static function that take a rectangle and intersects it with the current Cairo clip? It could be passed an optional minimumSize argument. I think we may want to use this optimization in other places later on.

IntRect intersectRectWithCurrentCairoClip(cairo_t*, IntRect, int minimumSize=0);

Thanks.
Comment 8 Alejandro G. Castro 2010-09-13 11:53:38 PDT
Committing this patch after talking to martin we will leave the generalization for the contextshadow patch in the bug 45599.
Comment 9 Alejandro G. Castro 2010-09-13 12:06:49 PDT
Landed r67402