<?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>107804</bug_id>
          
          <creation_ts>2013-01-24 01:45:50 -0800</creation_ts>
          <short_desc>[mac] ImageBuffer should create accelerated buffers for small canvases, but we shouldn&apos;t force them to create compositing layers</short_desc>
          <delta_ts>2013-01-30 15:36:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>108310</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>eric</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>815243</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-01-24 01:45:50 -0800</bug_when>
    <thetext>&lt;rdar://problem/11752381&gt;

Mac WebKit is slower than it needs to be on http://www.mikechambers.com/html5/javascript/QuadTree/examples/collision.html because it makes lots of tiny canvases and draws them into a big one. The tiny ones fall below ImageBufferCG&apos;s &quot;minIOSurfaceSize&quot;, so they are created in main memory. The big one is big, so it&apos;s an IOSurface. Painting between these is incredibly slow.

The reason we cap ImageBuffer acceleration by size is so that small canvases (for example, http://typeface.neocracy.org/examples.html) don&apos;t force compositing (and then potentially cause overlap, and huge memory cost). But, we can still make IOSurfaces and still not pop them into compositing layers. So, let&apos;s do that!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815248</commentid>
    <comment_count>1</comment_count>
      <attachid>184441</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-01-24 01:52:55 -0800</bug_when>
    <thetext>Created attachment 184441
patch

name of the constant is a little wonky</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815252</commentid>
    <comment_count>2</comment_count>
      <attachid>184441</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-01-24 01:54:14 -0800</bug_when>
    <thetext>Comment on attachment 184441
patch

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

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1907
&gt; +        return canvas-&gt;renderingContext() &amp;&amp; canvas-&gt;renderingContext()-&gt;isAccelerated() &amp;&amp; (canvas-&gt;size().area() &gt; canvasAreaThresholdRequiringCompositing);

This is shared code, I wonder if this is reasonable for everyone...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815345</commentid>
    <comment_count>3</comment_count>
      <attachid>184441</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-24 05:09:15 -0800</bug_when>
    <thetext>Comment on attachment 184441
patch

Attachment 184441 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16082655

New failing tests:
fast/canvas/webgl/gl-pixelstorei.html
fast/canvas/webgl/tex-image-webgl.html
compositing/layer-creation/spanOverlapsCanvas.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815509</commentid>
    <comment_count>4</comment_count>
      <attachid>184441</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-24 08:38:46 -0800</bug_when>
    <thetext>Comment on attachment 184441
patch

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

&gt;&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1907
&gt;&gt; +        return canvas-&gt;renderingContext() &amp;&amp; canvas-&gt;renderingContext()-&gt;isAccelerated() &amp;&amp; (canvas-&gt;size().area() &gt; canvasAreaThresholdRequiringCompositing);
&gt; 
&gt; This is shared code, I wonder if this is reasonable for everyone...

We should probably #ifdef it. Maybe USE_COMPOSITING_FOR_SMALL_CANVASES or something, disabled for PLATFORM(MAC) and PLATFORM(IOS).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815618</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-01-24 10:52:00 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 184441 [details])
&gt; Attachment 184441 [details] did not pass mac-ews (mac):
&gt; Output: http://queues.webkit.org/results/16082655
&gt; 
&gt; New failing tests:
&gt; fast/canvas/webgl/gl-pixelstorei.html
&gt; fast/canvas/webgl/tex-image-webgl.html

... not a clue, but I can reproduce, so I&apos;ll look.

&gt; compositing/layer-creation/spanOverlapsCanvas.html

This one uses a canvas at exactly the threshold and demonstrates that I should have used &gt;= instead of &gt; to match the &lt; from before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820597</commentid>
    <comment_count>6</comment_count>
      <attachid>185580</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-01-30 14:40:23 -0800</bug_when>
    <thetext>Created attachment 185580
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820603</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-01-30 14:42:22 -0800</bug_when>
    <thetext>Needs a WTF changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820606</commentid>
    <comment_count>8</comment_count>
      <attachid>185582</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-01-30 14:43:28 -0800</bug_when>
    <thetext>Created attachment 185582
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820631</commentid>
    <comment_count>9</comment_count>
      <attachid>185582</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-30 14:54:54 -0800</bug_when>
    <thetext>Comment on attachment 185582
patch

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

&gt; Source/WTF/wtf/Platform.h:1218
&gt; +#if !PLATFORM(MAC) &amp;&amp; !PLATFORM(IOS)
&gt; +#define WTF_USE_COMPOSITING_FOR_SMALL_CANVASES 1
&gt; +#endif

Please don&apos;t cause megawatts of energy use in making us all rebuild because of this #ifdef that&apos;s only used in one place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820639</commentid>
    <comment_count>10</comment_count>
      <attachid>185589</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-01-30 14:57:52 -0800</bug_when>
    <thetext>Created attachment 185589
Simon really doesn&apos;t like it when you touch Platform.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820655</commentid>
    <comment_count>11</comment_count>
      <attachid>185589</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-30 15:05:47 -0800</bug_when>
    <thetext>Comment on attachment 185589
Simon really doesn&apos;t like it when you touch Platform.h

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

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1921
&gt; +        bool isCanvasLargeEnoughToForceCompositing = canvas-&gt;size().area() &gt;= canvasAreaThresholdRequiringCompositing;

Hmm, this looks at element size. Maybe we should composite based on the renderer dimensions? You might have a small canvas scaled up via CSS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820700</commentid>
    <comment_count>12</comment_count>
      <attachid>185589</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-30 15:33:20 -0800</bug_when>
    <thetext>Comment on attachment 185589
Simon really doesn&apos;t like it when you touch Platform.h

I think this is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820706</commentid>
    <comment_count>13</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-01-30 15:36:39 -0800</bug_when>
    <thetext>Thanks!

http://trac.webkit.org/changeset/141333</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184441</attachid>
            <date>2013-01-24 01:52:55 -0800</date>
            <delta_ts>2013-01-30 14:40:23 -0800</delta_ts>
            <desc>patch</desc>
            <filename>canvas-faster.diff</filename>
            <type>text/plain</type>
            <size>3643</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlN2JlMDhjLi4wMzM2NzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTMtMDEtMjQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW21hY10gSW1hZ2VCdWZmZXIgc2hvdWxkIGNyZWF0ZSBhY2NlbGVyYXRlZCBidWZm
ZXJzIGZvciBzbWFsbCBjYW52YXNlcywgYnV0IHdlIHNob3VsZG4ndCBmb3JjZSB0aGVtIHRvIGNy
ZWF0ZSBjb21wb3NpdGluZyBsYXllcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNzgwNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTE3NTIzODE+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBh
bGwgY2FudmFzZXMgSU9TdXJmYWNlLWJhY2tlZCBpZiByZXF1ZXN0ZWQsIGluc3RlYWQgb2YgaGF2
aW5nIGEgc2l6ZSB0aHJlc2hvbGQKKyAgICAgICAgdW5kZXIgd2hpY2ggd2Ugd29uJ3QgdXNlIGFj
Y2VsZXJhdGVkIGNhbnZhcy4KKworICAgICAgICBNYWtlIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JD
YW52YXMgdGFrZSB0aGUgc2l6ZSBvZiB0aGUgY2FudmFzIGludG8gYWNjb3VudCwgdXNpbmcKKyAg
ICAgICAgdGhlIHRocmVzaG9sZCB3aGljaCB3YXMgcHJldmlvdXNseSBpbiBJbWFnZUJ1ZmZlciB0
byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYQorICAgICAgICBjYW52YXMgc2hvdWxkIGJlIGZv
cmNlZCBpbnRvIGEgY29tcG9zaXRpbmcgbGF5ZXIuCisKKyAgICAgICAgVGhpcyBpbXByb3ZlcyBj
YW52YXMgcGVyZm9ybWFuY2Ugb24gc29tZSBiZW5jaG1hcmtzCisgICAgICAgIChodHRwOi8vd3d3
Lm1pa2VjaGFtYmVycy5jb20vaHRtbDUvamF2YXNjcmlwdC9RdWFkVHJlZS9leGFtcGxlcy9jb2xs
aXNpb24uaHRtbCwgZm9yIGV4YW1wbGUpCisgICAgICAgIHNpZ25pZmljYW50bHksIGluIGNhc2Vz
IHdoZXJlIGNhbnZhc2VzIHdoaWNoIGZhbGwgYmVsb3cgdGhlIHNpemUgbGltaXQKKyAgICAgICAg
KGFuZCB0aHVzIGFyZSB1bmFjY2VsZXJhdGVkKSBhcmUgYmVpbmcgZHJhd24gcmFwaWRseSBpbnRv
IGVpdGhlciBhY2NlbGVyYXRlZAorICAgICAgICB0aWxlcyBvciBhbm90aGVyIGFjY2VsZXJhdGVk
IGNhbnZhcywgYnkgcHJldmVudGluZyBleGNlc3NpdmUgY29weWluZyB0by9mcm9tIHRoZSBHUFUu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGlu
Z0ZvckNhbnZhcyk6CisKIDIwMTMtMDEtMjQgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBnb29n
bGUuY29tPgogCiAgICAgICAgIFRoZXJlIGFyZSBhIGZldyBvZiB3cm9uZyByZW1vdmVBbGxDaGls
ZHJlbigpIGNhbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5kZXggMWQ5OWUwOC4uN2UwNDM0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAK
QEAgLTYyLDcgKzYyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgVVNFKElPU1VSRkFD
RV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKIHN0YXRpYyBjb25zdCBpbnQgbWF4SU9TdXJmYWNlRGlt
ZW5zaW9uID0gNDA5NjsKLXN0YXRpYyBjb25zdCBpbnQgbWluSU9TdXJmYWNlQXJlYSA9IDUwICog
MTAwOwogCiBzdGF0aWMgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4gY3JlYXRlSU9TdXJmYWNlKGNv
bnN0IEludFNpemUmIHNpemUpCiB7CkBAIC0xMzYsNyArMTM1LDcgQEAgSW1hZ2VCdWZmZXI6Oklt
YWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29s
b3JTcGFjZQogICAgICAgICByZXR1cm47CiAKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNL
SU5HX1NUT1JFKQotICAgIGlmICh3aWR0aC51bnNhZmVHZXQoKSA+PSBtYXhJT1N1cmZhY2VEaW1l
bnNpb24gfHwgaGVpZ2h0LnVuc2FmZUdldCgpID49IG1heElPU3VyZmFjZURpbWVuc2lvbiB8fCAo
d2lkdGggKiBoZWlnaHQpLnVuc2FmZUdldCgpIDwgbWluSU9TdXJmYWNlQXJlYSkKKyAgICBpZiAo
d2lkdGgudW5zYWZlR2V0KCkgPj0gbWF4SU9TdXJmYWNlRGltZW5zaW9uIHx8IGhlaWdodC51bnNh
ZmVHZXQoKSA+PSBtYXhJT1N1cmZhY2VEaW1lbnNpb24pCiAgICAgICAgIGFjY2VsZXJhdGVSZW5k
ZXJpbmcgPSBmYWxzZTsKICNlbHNlCiAgICAgQVNTRVJUKHJlbmRlcmluZ01vZGUgPT0gVW5hY2Nl
bGVyYXRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwCmluZGV4IDI0NDQxZmIuLmQ2ZmQ0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC03OSw2ICs3OSw4
IEBACiBib29sIFdlYkNvcmVIYXMzRFJlbmRlcmluZyA9IHRydWU7CiAjZW5kaWYKIAorc3RhdGlj
IGNvbnN0IGludCBjYW52YXNBcmVhVGhyZXNob2xkUmVxdWlyaW5nQ29tcG9zaXRpbmcgPSA1MCAq
IDEwMDsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwpAQCAtMTkwMiw3ICsxOTA0LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVp
cmVzQ29tcG9zaXRpbmdGb3JDYW52YXMoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIAogICAgIGlm
IChyZW5kZXJlci0+aXNDYW52YXMoKSkgewogICAgICAgICBIVE1MQ2FudmFzRWxlbWVudCogY2Fu
dmFzID0gc3RhdGljX2Nhc3Q8SFRNTENhbnZhc0VsZW1lbnQqPihyZW5kZXJlci0+bm9kZSgpKTsK
LSAgICAgICAgcmV0dXJuIGNhbnZhcy0+cmVuZGVyaW5nQ29udGV4dCgpICYmIGNhbnZhcy0+cmVu
ZGVyaW5nQ29udGV4dCgpLT5pc0FjY2VsZXJhdGVkKCk7CisgICAgICAgIHJldHVybiBjYW52YXMt
PnJlbmRlcmluZ0NvbnRleHQoKSAmJiBjYW52YXMtPnJlbmRlcmluZ0NvbnRleHQoKS0+aXNBY2Nl
bGVyYXRlZCgpICYmIChjYW52YXMtPnNpemUoKS5hcmVhKCkgPiBjYW52YXNBcmVhVGhyZXNob2xk
UmVxdWlyaW5nQ29tcG9zaXRpbmcpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9Cg==
</data>
<flag name="review"
          id="203176"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="203209"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185580</attachid>
            <date>2013-01-30 14:40:23 -0800</date>
            <delta_ts>2013-01-30 14:43:28 -0800</delta_ts>
            <desc>patch</desc>
            <filename>canvas-perf.diff</filename>
            <type>text/plain</type>
            <size>4281</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCmluZGV4IGI4ZmJjOTAuLjc4NjJiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTIxMyw0
ICsxMjEzLDggQEAKICNkZWZpbmUgV1RGX1VTRV9DT05URU5UX0ZJTFRFUklORyAxCiAjZW5kaWYK
IAorI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCisjZGVmaW5lIFdURl9VU0Vf
Q09NUE9TSVRJTkdfRk9SX1NNQUxMX0NBTlZBU0VTIDEKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RG
X1BsYXRmb3JtX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZjI5MDYwLi4zOTZlYmIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzAgQEAKKzIwMTMtMDEtMzAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW21hY10gSW1hZ2VCdWZmZXIgc2hvdWxkIGNyZWF0ZSBh
Y2NlbGVyYXRlZCBidWZmZXJzIGZvciBzbWFsbCBjYW52YXNlcywgYnV0IHdlIHNob3VsZG4ndCBm
b3JjZSB0aGVtIHRvIGNyZWF0ZSBjb21wb3NpdGluZyBsYXllcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzgwNAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTE3NTIzODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFrZSBhbGwgY2FudmFzZXMgSU9TdXJmYWNlLWJhY2tlZCBpZiByZXF1ZXN0ZWQs
IGluc3RlYWQgb2YgaGF2aW5nIGEgc2l6ZSB0aHJlc2hvbGQKKyAgICAgICAgdW5kZXIgd2hpY2gg
d2Ugd29uJ3QgdXNlIGFjY2VsZXJhdGVkIGNhbnZhcy4KKworICAgICAgICBNYWtlIHJlcXVpcmVz
Q29tcG9zaXRpbmdGb3JDYW52YXMgdGFrZSB0aGUgc2l6ZSBvZiB0aGUgY2FudmFzIGludG8gYWNj
b3VudCwgdXNpbmcKKyAgICAgICAgdGhlIHRocmVzaG9sZCB3aGljaCB3YXMgcHJldmlvdXNseSBp
biBJbWFnZUJ1ZmZlciB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYQorICAgICAgICBjYW52
YXMgc2hvdWxkIGJlIGZvcmNlZCBpbnRvIGEgY29tcG9zaXRpbmcgbGF5ZXIuCisKKyAgICAgICAg
VGhpcyBpbXByb3ZlcyBjYW52YXMgcGVyZm9ybWFuY2Ugb24gc29tZSBiZW5jaG1hcmtzCisgICAg
ICAgIChodHRwOi8vd3d3Lm1pa2VjaGFtYmVycy5jb20vaHRtbDUvamF2YXNjcmlwdC9RdWFkVHJl
ZS9leGFtcGxlcy9jb2xsaXNpb24uaHRtbCwgZm9yIGV4YW1wbGUpCisgICAgICAgIHNpZ25pZmlj
YW50bHksIGluIGNhc2VzIHdoZXJlIGNhbnZhc2VzIHdoaWNoIGZhbGwgYmVsb3cgdGhlIHNpemUg
bGltaXQKKyAgICAgICAgKGFuZCB0aHVzIGFyZSB1bmFjY2VsZXJhdGVkKSBhcmUgYmVpbmcgZHJh
d24gcmFwaWRseSBpbnRvIGVpdGhlciBhY2NlbGVyYXRlZAorICAgICAgICB0aWxlcyBvciBhbm90
aGVyIGFjY2VsZXJhdGVkIGNhbnZhcywgYnkgcHJldmVudGluZyBleGNlc3NpdmUgY29weWluZyB0
by9mcm9tIHRoZSBHUFUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXI6OkltYWdlQnVmZmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVx
dWlyZXNDb21wb3NpdGluZ0ZvckNhbnZhcyk6CisKIDIwMTMtMDEtMzAgIEVsbGlvdHQgU3ByZWhu
ICA8ZXNwcmVobkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHdpbGxBZGRBdXRob3JT
aGFkb3dSb290IGFuZCByZXBsYWNlIHdpdGggYWx3YXlzQ3JlYXRlVXNlckFnZW50U2hhZG93Um9v
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHLmNwcAppbmRleCAxZDk5ZTA4Li43ZTA0MzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtNjIsNyAr
NjIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19C
QUNLSU5HX1NUT1JFKQogc3RhdGljIGNvbnN0IGludCBtYXhJT1N1cmZhY2VEaW1lbnNpb24gPSA0
MDk2Owotc3RhdGljIGNvbnN0IGludCBtaW5JT1N1cmZhY2VBcmVhID0gNTAgKiAxMDA7CiAKIHN0
YXRpYyBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiBjcmVhdGVJT1N1cmZhY2UoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKIHsKQEAgLTEzNiw3ICsxMzUsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIo
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlCiAg
ICAgICAgIHJldHVybjsKIAogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUp
Ci0gICAgaWYgKHdpZHRoLnVuc2FmZUdldCgpID49IG1heElPU3VyZmFjZURpbWVuc2lvbiB8fCBo
ZWlnaHQudW5zYWZlR2V0KCkgPj0gbWF4SU9TdXJmYWNlRGltZW5zaW9uIHx8ICh3aWR0aCAqIGhl
aWdodCkudW5zYWZlR2V0KCkgPCBtaW5JT1N1cmZhY2VBcmVhKQorICAgIGlmICh3aWR0aC51bnNh
ZmVHZXQoKSA+PSBtYXhJT1N1cmZhY2VEaW1lbnNpb24gfHwgaGVpZ2h0LnVuc2FmZUdldCgpID49
IG1heElPU3VyZmFjZURpbWVuc2lvbikKICAgICAgICAgYWNjZWxlcmF0ZVJlbmRlcmluZyA9IGZh
bHNlOwogI2Vsc2UKICAgICBBU1NFUlQocmVuZGVyaW5nTW9kZSA9PSBVbmFjY2VsZXJhdGVkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKaW5kZXggMThjNjQ1Yy4uODE0MjE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTgwLDYgKzgwLDggQEAKIGJvb2wg
V2ViQ29yZUhhczNEUmVuZGVyaW5nID0gdHJ1ZTsKICNlbmRpZgogCitzdGF0aWMgY29uc3QgaW50
IGNhbnZhc0FyZWFUaHJlc2hvbGRSZXF1aXJpbmdDb21wb3NpdGluZyA9IDUwICogMTAwOworCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0xOTA5
LDcgKzE5MTEsMTIgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9z
aXRpbmdGb3JDYW52YXMoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIAogICAgIGlmIChyZW5kZXJl
ci0+aXNDYW52YXMoKSkgewogICAgICAgICBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gc3Rh
dGljX2Nhc3Q8SFRNTENhbnZhc0VsZW1lbnQqPihyZW5kZXJlci0+bm9kZSgpKTsKLSAgICAgICAg
cmV0dXJuIGNhbnZhcy0+cmVuZGVyaW5nQ29udGV4dCgpICYmIGNhbnZhcy0+cmVuZGVyaW5nQ29u
dGV4dCgpLT5pc0FjY2VsZXJhdGVkKCk7CisjaWYgVVNFKENPTVBPU0lUSU5HX0ZPUl9TTUFMTF9D
QU5WQVNFUykKKyAgICAgICAgYm9vbCBpc0NhbnZhc0xhcmdlRW5vdWdoVG9Gb3JjZUNvbXBvc2l0
aW5nID0gdHJ1ZTsKKyNlbHNlCisgICAgICAgIGJvb2wgaXNDYW52YXNMYXJnZUVub3VnaFRvRm9y
Y2VDb21wb3NpdGluZyA9IGNhbnZhcy0+c2l6ZSgpLmFyZWEoKSA+PSBjYW52YXNBcmVhVGhyZXNo
b2xkUmVxdWlyaW5nQ29tcG9zaXRpbmc7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIGNhbnZhcy0+
cmVuZGVyaW5nQ29udGV4dCgpICYmIGNhbnZhcy0+cmVuZGVyaW5nQ29udGV4dCgpLT5pc0FjY2Vs
ZXJhdGVkKCkgJiYgKGNhbnZhcy0+cmVuZGVyaW5nQ29udGV4dCgpLT5pczNkKCkgfHwgaXNDYW52
YXNMYXJnZUVub3VnaFRvRm9yY2VDb21wb3NpdGluZyk7CiAgICAgfQogICAgIHJldHVybiBmYWxz
ZTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185582</attachid>
            <date>2013-01-30 14:43:28 -0800</date>
            <delta_ts>2013-01-30 14:57:52 -0800</delta_ts>
            <desc>patch</desc>
            <filename>canvas-perf.diff</filename>
            <type>text/plain</type>
            <size>4949</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNTc3YjlmZC4uNzE3MTUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMS0zMCAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjXSBJ
bWFnZUJ1ZmZlciBzaG91bGQgY3JlYXRlIGFjY2VsZXJhdGVkIGJ1ZmZlcnMgZm9yIHNtYWxsIGNh
bnZhc2VzLCBidXQgd2Ugc2hvdWxkbid0IGZvcmNlIHRoZW0gdG8gY3JlYXRlIGNvbXBvc2l0aW5n
IGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA3ODA0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMTc1MjM4MT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgVVNFKENPTVBPU0lUSU5HX0ZP
Ul9TTUFMTF9DQU5WQVNFUykuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMy0w
MS0zMCAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIEZp
eCBRdC9NYWMgYnVpbGQgYWZ0ZXIgcjE0MTAyNCBhbmQgcjE0MTAzNwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXgg
YjhmYmM5MC4uNzg2MmJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMjEzLDQgKzEyMTMsOCBAQAogI2Rl
ZmluZSBXVEZfVVNFX0NPTlRFTlRfRklMVEVSSU5HIDEKICNlbmRpZgogCisjaWYgIVBMQVRGT1JN
KE1BQykgJiYgIVBMQVRGT1JNKElPUykKKyNkZWZpbmUgV1RGX1VTRV9DT01QT1NJVElOR19GT1Jf
U01BTExfQ0FOVkFTRVMgMQorI2VuZGlmCisKICNlbmRpZiAvKiBXVEZfUGxhdGZvcm1faCAqLwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGJmMjkwNjAuLjM5NmViYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBA
QAorMjAxMy0wMS0zMCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbbWFjXSBJbWFnZUJ1ZmZlciBzaG91bGQgY3JlYXRlIGFjY2VsZXJhdGVkIGJ1ZmZl
cnMgZm9yIHNtYWxsIGNhbnZhc2VzLCBidXQgd2Ugc2hvdWxkbid0IGZvcmNlIHRoZW0gdG8gY3Jl
YXRlIGNvbXBvc2l0aW5nIGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA3ODA0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMTc1MjM4MT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIGFs
bCBjYW52YXNlcyBJT1N1cmZhY2UtYmFja2VkIGlmIHJlcXVlc3RlZCwgaW5zdGVhZCBvZiBoYXZp
bmcgYSBzaXplIHRocmVzaG9sZAorICAgICAgICB1bmRlciB3aGljaCB3ZSB3b24ndCB1c2UgYWNj
ZWxlcmF0ZWQgY2FudmFzLgorCisgICAgICAgIE1ha2UgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckNh
bnZhcyB0YWtlIHRoZSBzaXplIG9mIHRoZSBjYW52YXMgaW50byBhY2NvdW50LCB1c2luZworICAg
ICAgICB0aGUgdGhyZXNob2xkIHdoaWNoIHdhcyBwcmV2aW91c2x5IGluIEltYWdlQnVmZmVyIHRv
IGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBhCisgICAgICAgIGNhbnZhcyBzaG91bGQgYmUgZm9y
Y2VkIGludG8gYSBjb21wb3NpdGluZyBsYXllci4KKworICAgICAgICBUaGlzIGltcHJvdmVzIGNh
bnZhcyBwZXJmb3JtYW5jZSBvbiBzb21lIGJlbmNobWFya3MKKyAgICAgICAgKGh0dHA6Ly93d3cu
bWlrZWNoYW1iZXJzLmNvbS9odG1sNS9qYXZhc2NyaXB0L1F1YWRUcmVlL2V4YW1wbGVzL2NvbGxp
c2lvbi5odG1sLCBmb3IgZXhhbXBsZSkKKyAgICAgICAgc2lnbmlmaWNhbnRseSwgaW4gY2FzZXMg
d2hlcmUgY2FudmFzZXMgd2hpY2ggZmFsbCBiZWxvdyB0aGUgc2l6ZSBsaW1pdAorICAgICAgICAo
YW5kIHRodXMgYXJlIHVuYWNjZWxlcmF0ZWQpIGFyZSBiZWluZyBkcmF3biByYXBpZGx5IGludG8g
ZWl0aGVyIGFjY2VsZXJhdGVkCisgICAgICAgIHRpbGVzIG9yIGFub3RoZXIgYWNjZWxlcmF0ZWQg
Y2FudmFzLCBieSBwcmV2ZW50aW5nIGV4Y2Vzc2l2ZSBjb3B5aW5nIHRvL2Zyb20gdGhlIEdQVS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZm
ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5n
Rm9yQ2FudmFzKToKKwogMjAxMy0wMS0zMCAgRWxsaW90dCBTcHJlaG4gIDxlc3ByZWhuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgd2lsbEFkZEF1dGhvclNoYWRvd1Jvb3QgYW5kIHJl
cGxhY2Ugd2l0aCBhbHdheXNDcmVhdGVVc2VyQWdlbnRTaGFkb3dSb290CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4
IDFkOTllMDguLjdlMDQzNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC02Miw3ICs2Miw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCiBz
dGF0aWMgY29uc3QgaW50IG1heElPU3VyZmFjZURpbWVuc2lvbiA9IDQwOTY7Ci1zdGF0aWMgY29u
c3QgaW50IG1pbklPU3VyZmFjZUFyZWEgPSA1MCAqIDEwMDsKIAogc3RhdGljIFJldGFpblB0cjxJ
T1N1cmZhY2VSZWY+IGNyZWF0ZUlPU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplKQogewpAQCAt
MTM2LDcgKzEzNSw3IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBz
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UKICAgICAgICAgcmV0dXJuOwog
CiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKLSAgICBpZiAod2lkdGgu
dW5zYWZlR2V0KCkgPj0gbWF4SU9TdXJmYWNlRGltZW5zaW9uIHx8IGhlaWdodC51bnNhZmVHZXQo
KSA+PSBtYXhJT1N1cmZhY2VEaW1lbnNpb24gfHwgKHdpZHRoICogaGVpZ2h0KS51bnNhZmVHZXQo
KSA8IG1pbklPU3VyZmFjZUFyZWEpCisgICAgaWYgKHdpZHRoLnVuc2FmZUdldCgpID49IG1heElP
U3VyZmFjZURpbWVuc2lvbiB8fCBoZWlnaHQudW5zYWZlR2V0KCkgPj0gbWF4SU9TdXJmYWNlRGlt
ZW5zaW9uKQogICAgICAgICBhY2NlbGVyYXRlUmVuZGVyaW5nID0gZmFsc2U7CiAjZWxzZQogICAg
IEFTU0VSVChyZW5kZXJpbmdNb2RlID09IFVuYWNjZWxlcmF0ZWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCAxOGM2NDVj
Li44MTQyMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcApAQCAtODAsNiArODAsOCBAQAogYm9vbCBXZWJDb3JlSGFzM0RSZW5k
ZXJpbmcgPSB0cnVlOwogI2VuZGlmCiAKK3N0YXRpYyBjb25zdCBpbnQgY2FudmFzQXJlYVRocmVz
aG9sZFJlcXVpcmluZ0NvbXBvc2l0aW5nID0gNTAgKiAxMDA7CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTE5MDksNyArMTkxMSwxMiBAQCBi
b29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckNhbnZhcyhS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogCiAgICAgaWYgKHJlbmRlcmVyLT5pc0NhbnZhcygpKSB7
CiAgICAgICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBzdGF0aWNfY2FzdDxIVE1MQ2Fu
dmFzRWxlbWVudCo+KHJlbmRlcmVyLT5ub2RlKCkpOwotICAgICAgICByZXR1cm4gY2FudmFzLT5y
ZW5kZXJpbmdDb250ZXh0KCkgJiYgY2FudmFzLT5yZW5kZXJpbmdDb250ZXh0KCktPmlzQWNjZWxl
cmF0ZWQoKTsKKyNpZiBVU0UoQ09NUE9TSVRJTkdfRk9SX1NNQUxMX0NBTlZBU0VTKQorICAgICAg
ICBib29sIGlzQ2FudmFzTGFyZ2VFbm91Z2hUb0ZvcmNlQ29tcG9zaXRpbmcgPSB0cnVlOworI2Vs
c2UKKyAgICAgICAgYm9vbCBpc0NhbnZhc0xhcmdlRW5vdWdoVG9Gb3JjZUNvbXBvc2l0aW5nID0g
Y2FudmFzLT5zaXplKCkuYXJlYSgpID49IGNhbnZhc0FyZWFUaHJlc2hvbGRSZXF1aXJpbmdDb21w
b3NpdGluZzsKKyNlbmRpZgorICAgICAgICByZXR1cm4gY2FudmFzLT5yZW5kZXJpbmdDb250ZXh0
KCkgJiYgY2FudmFzLT5yZW5kZXJpbmdDb250ZXh0KCktPmlzQWNjZWxlcmF0ZWQoKSAmJiAoY2Fu
dmFzLT5yZW5kZXJpbmdDb250ZXh0KCktPmlzM2QoKSB8fCBpc0NhbnZhc0xhcmdlRW5vdWdoVG9G
b3JjZUNvbXBvc2l0aW5nKTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQo=
</data>
<flag name="review"
          id="204697"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185589</attachid>
            <date>2013-01-30 14:57:52 -0800</date>
            <delta_ts>2013-01-30 15:33:19 -0800</delta_ts>
            <desc>Simon really doesn&apos;t like it when you touch Platform.h</desc>
            <filename>canvas-perf.diff</filename>
            <type>text/plain</type>
            <size>3989</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxNTkzMGFhLi4zYmQ4ZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTMtMDEtMzAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW21hY10gSW1hZ2VCdWZmZXIgc2hvdWxkIGNyZWF0ZSBhY2NlbGVyYXRlZCBidWZm
ZXJzIGZvciBzbWFsbCBjYW52YXNlcywgYnV0IHdlIHNob3VsZG4ndCBmb3JjZSB0aGVtIHRvIGNy
ZWF0ZSBjb21wb3NpdGluZyBsYXllcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNzgwNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTE3NTIzODE+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBh
bGwgY2FudmFzZXMgSU9TdXJmYWNlLWJhY2tlZCBpZiByZXF1ZXN0ZWQsIGluc3RlYWQgb2YgaGF2
aW5nIGEgc2l6ZSB0aHJlc2hvbGQKKyAgICAgICAgdW5kZXIgd2hpY2ggd2Ugd29uJ3QgdXNlIGFj
Y2VsZXJhdGVkIGNhbnZhcy4KKworICAgICAgICBNYWtlIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JD
YW52YXMgdGFrZSB0aGUgc2l6ZSBvZiB0aGUgY2FudmFzIGludG8gYWNjb3VudCwgdXNpbmcKKyAg
ICAgICAgdGhlIHRocmVzaG9sZCB3aGljaCB3YXMgcHJldmlvdXNseSBpbiBJbWFnZUJ1ZmZlciB0
byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYQorICAgICAgICBjYW52YXMgc2hvdWxkIGJlIGZv
cmNlZCBpbnRvIGEgY29tcG9zaXRpbmcgbGF5ZXIuCisKKyAgICAgICAgVGhpcyBpbXByb3ZlcyBj
YW52YXMgcGVyZm9ybWFuY2Ugb24gc29tZSBiZW5jaG1hcmtzCisgICAgICAgIChodHRwOi8vd3d3
Lm1pa2VjaGFtYmVycy5jb20vaHRtbDUvamF2YXNjcmlwdC9RdWFkVHJlZS9leGFtcGxlcy9jb2xs
aXNpb24uaHRtbCwgZm9yIGV4YW1wbGUpCisgICAgICAgIHNpZ25pZmljYW50bHksIGluIGNhc2Vz
IHdoZXJlIGNhbnZhc2VzIHdoaWNoIGZhbGwgYmVsb3cgdGhlIHNpemUgbGltaXQKKyAgICAgICAg
KGFuZCB0aHVzIGFyZSB1bmFjY2VsZXJhdGVkKSBhcmUgYmVpbmcgZHJhd24gcmFwaWRseSBpbnRv
IGVpdGhlciBhY2NlbGVyYXRlZAorICAgICAgICB0aWxlcyBvciBhbm90aGVyIGFjY2VsZXJhdGVk
IGNhbnZhcywgYnkgcHJldmVudGluZyBleGNlc3NpdmUgY29weWluZyB0by9mcm9tIHRoZSBHUFUu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGlu
Z0ZvckNhbnZhcyk6CisKIDIwMTMtMDEtMzAgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogQXZvaWQgY3Jhc2hpbmcgd2hlbiBkZWxldGlu
ZyBpbmRleGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IDFkOTllMDguLjdlMDQzNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBA
IC02Miw3ICs2Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFVTRShJT1NVUkZBQ0Vf
Q0FOVkFTX0JBQ0tJTkdfU1RPUkUpCiBzdGF0aWMgY29uc3QgaW50IG1heElPU3VyZmFjZURpbWVu
c2lvbiA9IDQwOTY7Ci1zdGF0aWMgY29uc3QgaW50IG1pbklPU3VyZmFjZUFyZWEgPSA1MCAqIDEw
MDsKIAogc3RhdGljIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IGNyZWF0ZUlPU3VyZmFjZShjb25z
dCBJbnRTaXplJiBzaXplKQogewpAQCAtMTM2LDcgKzEzNSw3IEBAIEltYWdlQnVmZmVyOjpJbWFn
ZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9y
U3BhY2UKICAgICAgICAgcmV0dXJuOwogCiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lO
R19TVE9SRSkKLSAgICBpZiAod2lkdGgudW5zYWZlR2V0KCkgPj0gbWF4SU9TdXJmYWNlRGltZW5z
aW9uIHx8IGhlaWdodC51bnNhZmVHZXQoKSA+PSBtYXhJT1N1cmZhY2VEaW1lbnNpb24gfHwgKHdp
ZHRoICogaGVpZ2h0KS51bnNhZmVHZXQoKSA8IG1pbklPU3VyZmFjZUFyZWEpCisgICAgaWYgKHdp
ZHRoLnVuc2FmZUdldCgpID49IG1heElPU3VyZmFjZURpbWVuc2lvbiB8fCBoZWlnaHQudW5zYWZl
R2V0KCkgPj0gbWF4SU9TdXJmYWNlRGltZW5zaW9uKQogICAgICAgICBhY2NlbGVyYXRlUmVuZGVy
aW5nID0gZmFsc2U7CiAjZWxzZQogICAgIEFTU0VSVChyZW5kZXJpbmdNb2RlID09IFVuYWNjZWxl
cmF0ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcAppbmRleCAxOGM2NDVjLi40NzgwNWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtODAsNiArODAsMTIg
QEAKIGJvb2wgV2ViQ29yZUhhczNEUmVuZGVyaW5nID0gdHJ1ZTsKICNlbmRpZgogCisjaWYgIVBM
QVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKKyNkZWZpbmUgV1RGX1VTRV9DT01QT1NJVElO
R19GT1JfU01BTExfQ0FOVkFTRVMgMQorI2VuZGlmCisKK3N0YXRpYyBjb25zdCBpbnQgY2FudmFz
QXJlYVRocmVzaG9sZFJlcXVpcmluZ0NvbXBvc2l0aW5nID0gNTAgKiAxMDA7CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTE5MDksNyArMTkx
NSwxMiBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0Zv
ckNhbnZhcyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogCiAgICAgaWYgKHJlbmRlcmVyLT5pc0Nh
bnZhcygpKSB7CiAgICAgICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBzdGF0aWNfY2Fz
dDxIVE1MQ2FudmFzRWxlbWVudCo+KHJlbmRlcmVyLT5ub2RlKCkpOwotICAgICAgICByZXR1cm4g
Y2FudmFzLT5yZW5kZXJpbmdDb250ZXh0KCkgJiYgY2FudmFzLT5yZW5kZXJpbmdDb250ZXh0KCkt
PmlzQWNjZWxlcmF0ZWQoKTsKKyNpZiBVU0UoQ09NUE9TSVRJTkdfRk9SX1NNQUxMX0NBTlZBU0VT
KQorICAgICAgICBib29sIGlzQ2FudmFzTGFyZ2VFbm91Z2hUb0ZvcmNlQ29tcG9zaXRpbmcgPSB0
cnVlOworI2Vsc2UKKyAgICAgICAgYm9vbCBpc0NhbnZhc0xhcmdlRW5vdWdoVG9Gb3JjZUNvbXBv
c2l0aW5nID0gY2FudmFzLT5zaXplKCkuYXJlYSgpID49IGNhbnZhc0FyZWFUaHJlc2hvbGRSZXF1
aXJpbmdDb21wb3NpdGluZzsKKyNlbmRpZgorICAgICAgICByZXR1cm4gY2FudmFzLT5yZW5kZXJp
bmdDb250ZXh0KCkgJiYgY2FudmFzLT5yZW5kZXJpbmdDb250ZXh0KCktPmlzQWNjZWxlcmF0ZWQo
KSAmJiAoY2FudmFzLT5yZW5kZXJpbmdDb250ZXh0KCktPmlzM2QoKSB8fCBpc0NhbnZhc0xhcmdl
RW5vdWdoVG9Gb3JjZUNvbXBvc2l0aW5nKTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQo=
</data>
<flag name="review"
          id="204705"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>