<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>91075</bug_id>
          
          <creation_ts>2012-07-12 05:12:36 -0700</creation_ts>
          <short_desc>[Qt] Increase the drawing performance by merging dirty rects.</short_desc>
          <delta_ts>2012-07-12 14:39:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>90375</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mrobinson</cc>
    
    <cc>noam</cc>
    
    <cc>skyul</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>667643</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-12 05:12:36 -0700</bug_when>
    <thetext>QWebFramePrivate calls FrameView::paintContents as many as the number of dirty
rects, so it causes too many redundant render tree traversals.
I changed it to merge dirty rects and call FrameView::paintContents only once.

The algorithm to merge rects is copied from GTK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667644</commentid>
    <comment_count>1</comment_count>
      <attachid>151917</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-12 05:14:35 -0700</bug_when>
    <thetext>Created attachment 151917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667647</commentid>
    <comment_count>2</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-12 05:15:53 -0700</bug_when>
    <thetext>Martin did on GTK port at Bug 70213.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667654</commentid>
    <comment_count>3</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-12 05:22:51 -0700</bug_when>
    <thetext>When parallel image decoders are in use, each image is independently repainted when decoding is finished. This creates a lot by repaint requests. So by merging these repaint requests appropriately, we can improve rendering performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667656</commentid>
    <comment_count>4</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-12 05:25:07 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; When parallel image decoders are in use, each image is independently repainted when decoding is finished. This creates a lot by repaint requests. So by merging these repaint requests appropriately, we can improve rendering performance.

I tested parallel image decoders on http://www.dorothybrowser.com/test/webkitTest/imgdecode/Pinterest.html .
QWebFramePrivate called FrameView::paintContents 165 times after parallel image decoders decoded all the images. It took about 120ms.

This patch decreases painting time from 120ms to 30ms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667811</commentid>
    <comment_count>5</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-07-12 08:32:09 -0700</bug_when>
    <thetext>Nice improvement! I&apos;d also include the improvement numbers into the changelog, otherwise looks cool!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667844</commentid>
    <comment_count>6</comment_count>
      <attachid>151917</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-07-12 09:08:43 -0700</bug_when>
    <thetext>Comment on attachment 151917
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=151917&amp;action=review

Awesome!

&gt; Source/WebKit/qt/Api/qwebframe.cpp:363
&gt; +    const unsigned int cRectThreshold = 10;
&gt; +    const float cWastedSpaceThreshold = 0.75f;

We can do without the c prefix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668235</commentid>
    <comment_count>7</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-12 14:37:44 -0700</bug_when>
    <thetext>Committed r122507: &lt;http://trac.webkit.org/changeset/122507&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668239</commentid>
    <comment_count>8</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-12 14:39:25 -0700</bug_when>
    <thetext>Thanks. I landed the patch after updating the ChangeLog and removing c prefix from constant names.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151917</attachid>
            <date>2012-07-12 05:14:35 -0700</date>
            <delta_ts>2012-07-12 09:08:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91075-20120712211432.patch</filename>
            <type>text/plain</type>
            <size>3539</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGE4YzE0MGY5NWFh
NDU2MGVjM2ExZGNkZGNkZjc5MTVkZDlmYjgyNzUuLmIyNjU5ZjZkNzdhOWYwMjA4MTE5NWJmMmUy
OWUwOWNjOTZkZDE0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDct
MTIgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAg
W1F0XSBJbmNyZWFzZSB0aGUgZHJhd2luZyBwZXJmb3JtYW5jZSBieSBtZXJnaW5nIGRpcnR5IHJl
Y3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEw
NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBRV2Vi
RnJhbWVQcml2YXRlIGNhbGxzIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyBhcyBtYW55IGFzIHRo
ZSBudW1iZXIgb2YgZGlydHkKKyAgICAgICAgcmVjdHMsIHNvIGl0IGNhdXNlcyB0b28gbWFueSBy
ZWR1bmRhbnQgcmVuZGVyIHRyZWUgdHJhdmVyc2Fscy4KKyAgICAgICAgSSBjaGFuZ2VkIGl0IHRv
IG1lcmdlIGRpcnR5IHJlY3RzIGFuZCBjYWxsIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyBvbmx5
IG9uY2UuCisKKyAgICAgICAgVGhlIGFsZ29yaXRobSB0byBtZXJnZSByZWN0cyBpcyBjb3BpZWQg
ZnJvbSBHVEsuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKGNvYWxl
c2NlUmVjdHNJZlBvc3NpYmxlKToKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OnJlbmRlclJl
bGF0aXZlQ29vcmRzKToKKwogMjAxMi0wNy0wOSAgTm8nYW0gUm9zZW50aGFsICA8bm9hbS5yb3Nl
bnRoYWxAbm9raWEuY29tPgogCiAgICAgICAgIFNoYXJlZCBjb2RlIHRoYXQgaXMgZ3VhcmRlZCB3
aXRoIEVOQUJMRShXRUJHTCkgc2hvdWxkIGJlIGd1YXJkZWQgd2l0aCBVU0UoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJmcmFtZS5jcHAKaW5kZXggMjFiM2EwYjcwMjQwYTIzMWZiMzhkMDU1ZWM2MGE0NjZm
MjZlYTFjNy4uOWI5MjY2YjJmMWI4YzZmMTE2ZDAzNjFmYTA5YzYwNGFkZTkwYTU2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC0zNTYsNiArMzU2LDMyIEBAIHZvaWQgUVdlYkZy
YW1lUHJpdmF0ZTo6cmVuZGVyQ29tcG9zaXRlZExheWVycyhHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEluCiB9CiAjZW5kaWYKIAorLy8gVGhpcyBjb2RlIGlzIGNvcGllZCBmcm9tIENo
cm9tZUNsaWVudEd0ay5jcHAuCitzdGF0aWMgdm9pZCBjb2FsZXNjZVJlY3RzSWZQb3NzaWJsZShj
b25zdCBRUmVjdCYgY2xpcFJlY3QsIFFWZWN0b3I8UVJlY3Q+JiByZWN0cykKK3sKKyAgICBjb25z
dCB1bnNpZ25lZCBpbnQgY1JlY3RUaHJlc2hvbGQgPSAxMDsKKyAgICBjb25zdCBmbG9hdCBjV2Fz
dGVkU3BhY2VUaHJlc2hvbGQgPSAwLjc1ZjsKKyAgICBib29sIHVzZVVuaW9uZWRSZWN0ID0gKHJl
Y3RzLnNpemUoKSA8PSAxKSB8fCAocmVjdHMuc2l6ZSgpID4gY1JlY3RUaHJlc2hvbGQpOworICAg
IGlmICghdXNlVW5pb25lZFJlY3QpIHsKKyAgICAgICAgLy8gQXR0ZW1wdCB0byBndWVzcyB3aGV0
aGVyIG9yIG5vdCB3ZSBzaG91bGQgdXNlIHRoZSB1bmlvbmVkIHJlY3Qgb3IgdGhlIGluZGl2aWR1
YWwgcmVjdHMuCisgICAgICAgIC8vIFdlIGRvIHRoaXMgYnkgY29tcHV0aW5nIHRoZSBwZXJjZW50
YWdlIG9mICJ3YXN0ZWQgc3BhY2UiIGluIHRoZSB1bmlvbi4gSWYgdGhhdCB3YXN0ZWQgc3BhY2UK
KyAgICAgICAgLy8gaXMgdG9vIGxhcmdlLCB0aGVuIHdlIHdpbGwgZG8gaW5kaXZpZHVhbCByZWN0
IHBhaW50aW5nIGluc3RlYWQuCisgICAgICAgIGZsb2F0IHVuaW9uUGl4ZWxzID0gKGNsaXBSZWN0
LndpZHRoKCkgKiBjbGlwUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGZsb2F0IHNpbmdsZVBpeGVs
cyA9IDA7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kp
CisgICAgICAgICAgICBzaW5nbGVQaXhlbHMgKz0gcmVjdHNbaV0ud2lkdGgoKSAqIHJlY3RzW2ld
LmhlaWdodCgpOworICAgICAgICBmbG9hdCB3YXN0ZWRTcGFjZSA9IDEgLSAoc2luZ2xlUGl4ZWxz
IC8gdW5pb25QaXhlbHMpOworICAgICAgICBpZiAod2FzdGVkU3BhY2UgPD0gY1dhc3RlZFNwYWNl
VGhyZXNob2xkKQorICAgICAgICAgICAgdXNlVW5pb25lZFJlY3QgPSB0cnVlOworICAgIH0KKwor
ICAgIGlmICghdXNlVW5pb25lZFJlY3QpCisgICAgICAgIHJldHVybjsKKworICAgIHJlY3RzLmNs
ZWFyKCk7CisgICAgcmVjdHMuYXBwZW5kKGNsaXBSZWN0KTsKK30KKwogdm9pZCBRV2ViRnJhbWVQ
cml2YXRlOjpyZW5kZXJSZWxhdGl2ZUNvb3JkcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFFG
bGFnczxRV2ViRnJhbWU6OlJlbmRlckxheWVyPiBsYXllcnMsIGNvbnN0IFFSZWdpb24mIGNsaXAp
CiB7CiAgICAgaWYgKCFmcmFtZS0+dmlldygpIHx8ICFmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkp
CkBAIC0zNzEsNiArMzk3LDggQEAgdm9pZCBRV2ViRnJhbWVQcml2YXRlOjpyZW5kZXJSZWxhdGl2
ZUNvb3JkcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFFGbGFnczxRV2UKICAgICB2aWV3LT51
cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCk7CiAKICAgICBpZiAobGF5ZXJz
ICYgUVdlYkZyYW1lOjpDb250ZW50c0xheWVyKSB7CisgICAgICAgIFFSZWN0IGNsaXBCb3VuZGlu
Z1JlY3QgPSBjbGlwLmJvdW5kaW5nUmVjdCgpOworICAgICAgICBjb2FsZXNjZVJlY3RzSWZQb3Nz
aWJsZShjbGlwQm91bmRpbmdSZWN0LCB2ZWN0b3IpOwogICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IHZlY3Rvci5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgY29uc3QgUVJlY3QmIGNsaXBS
ZWN0ID0gdmVjdG9yLmF0KGkpOwogCkBAIC0zOTYsNyArNDI0LDcgQEAgdm9pZCBRV2ViRnJhbWVQ
cml2YXRlOjpyZW5kZXJSZWxhdGl2ZUNvb3JkcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFFG
bGFnczxRV2UKICAgICAgICAgICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAgfQogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICAgICAgcmVuZGVyQ29tcG9zaXRlZExh
eWVycyhjb250ZXh0LCBJbnRSZWN0KGNsaXAuYm91bmRpbmdSZWN0KCkpKTsKKyAgICAgICAgcmVu
ZGVyQ29tcG9zaXRlZExheWVycyhjb250ZXh0LCBJbnRSZWN0KGNsaXBCb3VuZGluZ1JlY3QpKTsK
ICNlbmRpZgogICAgIH0KICAgICByZW5kZXJGcmFtZUV4dHJhcyhjb250ZXh0LCBsYXllcnMsIGNs
aXApOwo=
</data>
<flag name="review"
          id="160486"
          type_id="1"
          status="+"
          setter="noam"
    />
    <flag name="commit-queue"
          id="160549"
          type_id="3"
          status="-"
          setter="noam"
    />
          </attachment>
      

    </bug>

</bugzilla>