<?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>71517</bug_id>
          
          <creation_ts>2011-11-03 16:18:29 -0700</creation_ts>
          <short_desc>RenderLayer::styleChanged invalidates the GraphicsLayer needlessly</short_desc>
          <delta_ts>2011-11-04 11:53:16 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://jsbin.com/ulofav</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>495853</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-11-03 16:18:29 -0700</bug_when>
    <thetext>Currently we invalidate the whole GraphicsLayer with:

void RenderLayer::styleChanged(StyleDifference diff, const RenderStyle* oldStyle)
    ...
    if (m_backing &amp;&amp; diff &gt;= StyleDifferenceRepaint)
        m_backing-&gt;setContentsNeedDisplay();

This does not seem to take into account that the repainting logic will invalidate the needed part of the layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495870</commentid>
    <comment_count>1</comment_count>
      <attachid>113573</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-11-03 16:30:22 -0700</bug_when>
    <thetext>Created attachment 113573
Proposed change: remove the invalidation code so that we rely on repainting properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495912</commentid>
    <comment_count>2</comment_count>
      <attachid>113573</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-03 17:26:22 -0700</bug_when>
    <thetext>Comment on attachment 113573
Proposed change: remove the invalidation code so that we rely on repainting properly.

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Refactoring covered by existing tests.

I don’t think this meets the definition of “refactoring”. The claim here is that we are removing unneeded code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495924</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-11-03 17:31:59 -0700</bug_when>
    <thetext>It&apos;s going to be hard to find out whether this causes painting regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495949</commentid>
    <comment_count>4</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-11-03 17:50:31 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; It&apos;s going to be hard to find out whether this causes painting regressions.

What is sure is that we are over-invalidating and this is hurting us (see http://code.google.com/p/chromium/issues/detail?id=99814 for an example where we repaint each frame for no good reason).
This patch is maybe going too far (on purpose) and the scope can be reduced for safety. It may also be a good experiment to assess and extend our repaint coverage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495989</commentid>
    <comment_count>5</comment_count>
      <attachid>113573</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-11-03 18:51:25 -0700</bug_when>
    <thetext>Comment on attachment 113573
Proposed change: remove the invalidation code so that we rely on repainting properly.

I think it&apos;s OK to check this in, but we should be on the lookout for repainting regressions. Do all the pixel tests pass?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496006</commentid>
    <comment_count>6</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-11-03 19:51:49 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 113573 [details])
&gt; I think it&apos;s OK to check this in, but we should be on the lookout for repainting regressions. Do all the pixel tests pass?

Yes, all the pixel tests passed on Chromium Linux (the EWS confirmed that I did not miss some tests). I have tested also a bit on Mac but I have run into other issues at the time (what I got looked fine but it was noisy). I have to redo the ChangeLog to account for my sloppy use of the word &apos;refactoring&apos; so I will re-run the tests on Mac before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496310</commentid>
    <comment_count>7</comment_count>
      <attachid>113681</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-11-04 11:00:25 -0700</bug_when>
    <thetext>Created attachment 113681
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496318</commentid>
    <comment_count>8</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-11-04 11:06:30 -0700</bug_when>
    <thetext>There was still a lot of noise when running the tests on Mac. Most of them are because NRWT does not pick up the custom scrollbars or some missing rebaselines. One or 2 were looking weird but did not look like repainting issue. I will watch the bots and see what they think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496366</commentid>
    <comment_count>9</comment_count>
      <attachid>113681</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-04 11:53:11 -0700</bug_when>
    <thetext>Comment on attachment 113681
Patch for landing

Clearing flags on attachment: 113681

Committed r99307: &lt;http://trac.webkit.org/changeset/99307&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496367</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-04 11:53:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113573</attachid>
            <date>2011-11-03 16:30:22 -0700</date>
            <delta_ts>2011-11-04 11:00:22 -0700</delta_ts>
            <desc>Proposed change: remove the invalidation code so that we rely on repainting properly.</desc>
            <filename>bug-71517-20111103163021.patch</filename>
            <type>text/plain</type>
            <size>2118</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkyMDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4YTJmMDY2YTM4ZmQ4NzQz
YWQ3YjhmZGUyYTY2ZjQxNGM2NDhlZTdkLi4xYjdhZDg0YzJiMWNkN2M0ZWU2MDZkNDYxNjMyMDAy
MzE3Mjg2ODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTEtMDMgIEp1bGll
biBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVuZGVyTGF5
ZXI6OnN0eWxlQ2hhbmdlZCBpbnZhbGlkYXRlcyB0aGUgR3JhcGhpY3NMYXllciBuZWVkbGVzc2x5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTUxNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9y
aW5nIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgY29k
ZSBpcyBpbnZhbGlkYXRpbmcgdGhlIHdob2xlIFJlbmRlckxheWVyQmFja2luZyBhcyBwYXJ0IG9m
CisgICAgICAgIGEgc3R5bGUgY2hhbmdlLiBIb3dldmVyIHRoaXMgaXMgcmVkdW5kYW50IHdpdGgg
dGhlIHJlcGFpbnRpbmcgbG9naWMgd2hpY2gKKyAgICAgICAgd291bGQgaW52YWxpZGF0ZSBvbmx5
IHRoZSBuZWNlc3NhcnkgYml0cy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c3R5bGVDaGFuZ2VkKToKKyAgICAg
ICAgUmVtb3ZlIHRoZSBpbnZhbGlkYXRpb24gY29kZSBhcyBpdCBkdXBsaWNhdGVzIGFuZCBkZWZl
YXRzIHRoZSByZXBhaW50IGxvZ2ljLgorCiAyMDExLTExLTAzICBBbmRyZWFzIEtsaW5nICA8a2xp
bmdAd2Via2l0Lm9yZz4KIAogICAgICAgICBDU1NSdWxlTGlzdDogTW92ZSBydWxlIG9ycGhhbmlu
ZyBmcm9tIGRlbGV0ZVJ1bGUoKSBvdXQgdG8gY2FsbGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDVhNDgzYjIxZjBlODI2YmI4YTBlYzkyMDYxNzQ1Mzkx
MDUxYmE3ZDguLjkwZTRhZTBiYTE5NGUwYjU0NWY3MzE2MDRlODUzOTk4ZTk4ODhiZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNDE3Miw3ICs0MTcyLDcg
QEAgYm9vbCBSZW5kZXJMYXllcjo6aXNTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0CiAgICAgICAg
IHx8IHJlbmRlcmVyKCktPmlzUmVuZGVySUZyYW1lKCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6
OnN0eWxlQ2hhbmdlZChTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlKQordm9pZCBSZW5kZXJMYXllcjo6c3R5bGVDaGFuZ2VkKFN0eWxlRGlmZmVyZW5jZSwg
Y29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQogewogICAgIGJvb2wgaXNOb3JtYWxGbG93T25s
eSA9IHNob3VsZEJlTm9ybWFsRmxvd09ubHkoKTsKICAgICBpZiAoaXNOb3JtYWxGbG93T25seSAh
PSBtX2lzTm9ybWFsRmxvd09ubHkpIHsKQEAgLTQyMzUsMTEgKzQyMzUsNiBAQCB2b2lkIFJlbmRl
ckxheWVyOjpzdHlsZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0
eWxlKiBvbGRTdHlsZQogICAgICAgICBpZiAoc3RhY2tpbmdDb250ZXh0KCktPmhhc0NvbXBvc2l0
aW5nRGVzY2VuZGFudCgpKQogICAgICAgICAgICAgY29tcG9zaXRvcigpLT5zZXRDb21wb3NpdGlu
Z0xheWVyc05lZWRSZWJ1aWxkKCk7CiAgICAgfQotICAgIAotICAgIGlmIChtX2JhY2tpbmcgJiYg
ZGlmZiA+PSBTdHlsZURpZmZlcmVuY2VSZXBhaW50KQotICAgICAgICBtX2JhY2tpbmctPnNldENv
bnRlbnRzTmVlZERpc3BsYXkoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRpZmYpOwogI2Vu
ZGlmCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113681</attachid>
            <date>2011-11-04 11:00:25 -0700</date>
            <delta_ts>2011-11-04 11:53:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-71517-20111104110024.patch</filename>
            <type>text/plain</type>
            <size>2101</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTkyOTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YmFiNGRlOTAyYzFmOTVi
ZGQyZGUwM2M4OTJiM2JhOWM5NTczYTU1Li41ODkyZjFhNjU0Y2I2NGZkMzhmMzljYzNjNWFjMjhh
MTA5OWEwYzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTEtMDQgIEp1bGll
biBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVuZGVyTGF5
ZXI6OnN0eWxlQ2hhbmdlZCBpbnZhbGlkYXRlcyB0aGUgR3JhcGhpY3NMYXllciBuZWVkbGVzc2x5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTUxNwor
CisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBVbnVzZWQgY29k
ZSByZW1vdmFsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgVGhlIGN1cnJl
bnQgY29kZSBpcyBpbnZhbGlkYXRpbmcgdGhlIHdob2xlIFJlbmRlckxheWVyQmFja2luZyBhcyBw
YXJ0IG9mCisgICAgICAgIGEgc3R5bGUgY2hhbmdlLiBIb3dldmVyIHRoaXMgaXMgcmVkdW5kYW50
IHdpdGggdGhlIHJlcGFpbnRpbmcgbG9naWMgd2hpY2gKKyAgICAgICAgd291bGQgaW52YWxpZGF0
ZSBvbmx5IHRoZSBuZWNlc3NhcnkgYml0cy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c3R5bGVDaGFuZ2VkKToK
KyAgICAgICAgUmVtb3ZlIHRoZSBpbnZhbGlkYXRpb24gY29kZSBhcyBpdCBkdXBsaWNhdGVzIGFu
ZCBkZWZlYXRzIHRoZSByZXBhaW50IGxvZ2ljLgorCiAyMDExLTExLTAzICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIE5ldHNjYXBlUGx1Z2luOjpj
b252ZXJ0RnJvbVJvb3RWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAppbmRleCA1YTQ4M2IyMWYwZTgyNmJiOGEwZWM5MjA2MTc0NTM5MTA1MWJhN2Q4Li45MGU0YWUw
YmExOTRlMGI1NDVmNzMxNjA0ZTg1Mzk5OGU5ODg4YmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTQxNzIsNyArNDE3Miw3IEBAIGJvb2wgUmVuZGVyTGF5
ZXI6OmlzU2VsZlBhaW50aW5nTGF5ZXIoKSBjb25zdAogICAgICAgICB8fCByZW5kZXJlcigpLT5p
c1JlbmRlcklGcmFtZSgpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpzdHlsZUNoYW5nZWQoU3R5
bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKK3ZvaWQgUmVu
ZGVyTGF5ZXI6OnN0eWxlQ2hhbmdlZChTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGRTdHlsZSkKIHsKICAgICBib29sIGlzTm9ybWFsRmxvd09ubHkgPSBzaG91bGRCZU5vcm1h
bEZsb3dPbmx5KCk7CiAgICAgaWYgKGlzTm9ybWFsRmxvd09ubHkgIT0gbV9pc05vcm1hbEZsb3dP
bmx5KSB7CkBAIC00MjM1LDExICs0MjM1LDYgQEAgdm9pZCBSZW5kZXJMYXllcjo6c3R5bGVDaGFu
Z2VkKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUKICAg
ICAgICAgaWYgKHN0YWNraW5nQ29udGV4dCgpLT5oYXNDb21wb3NpdGluZ0Rlc2NlbmRhbnQoKSkK
ICAgICAgICAgICAgIGNvbXBvc2l0b3IoKS0+c2V0Q29tcG9zaXRpbmdMYXllcnNOZWVkUmVidWls
ZCgpOwogICAgIH0KLSAgICAKLSAgICBpZiAobV9iYWNraW5nICYmIGRpZmYgPj0gU3R5bGVEaWZm
ZXJlbmNlUmVwYWludCkKLSAgICAgICAgbV9iYWNraW5nLT5zZXRDb250ZW50c05lZWREaXNwbGF5
KCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShkaWZmKTsKICNlbmRpZgogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>