<?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>32763</bug_id>
          
          <creation_ts>2009-12-18 18:56:37 -0800</creation_ts>
          <short_desc>[Chromium] Eliminate redundant data copy in GraphicsContext3D readback</short_desc>
          <delta_ts>2009-12-18 23:13:00 -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>WebGL</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></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="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>brettw</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>petersont</cc>
    
    <cc>rlp</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>173452</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-18 18:56:37 -0800</bug_when>
    <thetext>Because of my inexperience with the Core Graphics APIs, there is a redundant data copy occurring in GraphicsContext3D while reading back the framebuffer in order to draw it to the Canvas&apos;s backing store via CGContextDrawImage. Fixing this will partly address the embarrassing performance gap reported in http://news.cnet.com/8301-30685_3-10416966-264.html?tag=mncol .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173453</commentid>
    <comment_count>1</comment_count>
      <attachid>45219</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-18 19:09:30 -0800</bug_when>
    <thetext>Created attachment 45219
Patch

Eliminated useless creation of a CGBitmapContext and from there a CGImage. Now create CGImage directly from data. Also changed readPixels parameters and CGImage alpha info to try to avoid byte swapping, and disabled interpolation when drawing the GL content. Some test cases run twice as fast with these changes, though more work is needed to achieve desired performance.

No test case; performance optimization only. Ran WebGL demos from Khronos site to verify changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173454</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-18 19:13:03 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45219 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173487</commentid>
    <comment_count>3</comment_count>
      <attachid>45219</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-18 23:12:54 -0800</bug_when>
    <thetext>Comment on attachment 45219
Patch

Clearing flags on attachment: 45219

Committed r52380: &lt;http://trac.webkit.org/changeset/52380&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173488</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-18 23:13:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45219</attachid>
            <date>2009-12-18 19:09:30 -0800</date>
            <delta_ts>2009-12-18 23:12:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>draw-performance.patch</filename>
            <type>text/plain</type>
            <size>5703</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTIzNzIpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDktMTItMTggIEtlbm5l
dGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gRWxpbWluYXRlIHJlZHVuZGFudCBkYXRh
IGNvcHkgaW4gR3JhcGhpY3NDb250ZXh0M0QgcmVhZGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNzYzCisKKyAgICAgICAgRWxpbWluYXRlZCB1
c2VsZXNzIGNyZWF0aW9uIG9mIGEgQ0dCaXRtYXBDb250ZXh0IGFuZCBmcm9tIHRoZXJlIGEKKyAg
ICAgICAgQ0dJbWFnZS4gTm93IGNyZWF0ZSBDR0ltYWdlIGRpcmVjdGx5IGZyb20gZGF0YS4gQWxz
byBjaGFuZ2VkCisgICAgICAgIHJlYWRQaXhlbHMgcGFyYW1ldGVycyBhbmQgQ0dJbWFnZSBhbHBo
YSBpbmZvIHRvIHRyeSB0byBhdm9pZCBieXRlCisgICAgICAgIHN3YXBwaW5nLCBhbmQgZGlzYWJs
ZWQgaW50ZXJwb2xhdGlvbiB3aGVuIGRyYXdpbmcgdGhlIEdMIGNvbnRlbnQuCisgICAgICAgIFNv
bWUgdGVzdCBjYXNlcyBydW4gdHdpY2UgYXMgZmFzdCB3aXRoIHRoZXNlIGNoYW5nZXMsIHRob3Vn
aCBtb3JlCisgICAgICAgIHdvcmsgaXMgbmVlZGVkIHRvIGFjaGlldmUgZGVzaXJlZCBwZXJmb3Jt
YW5jZS4KKworICAgICAgICBObyB0ZXN0IGNhc2U7IHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBv
bmx5LiBSYW4gV2ViR0wgZGVtb3MgZnJvbQorICAgICAgICBLaHJvbm9zIHNpdGUgdG8gdmVyaWZ5
IGNoYW5nZXMuCisKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp+
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OmJlZ2luUGFpbnQpOgorCiAyMDA5LTEyLTE4ICBQZXRlciBLYXN0aW5n
ICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRo
LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHJldmlz
aW9uIDUyMzY2KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4OSw3ICsxODksNiBAQCBwcml2YXRlOgogICAgIENHTFBCdWZm
ZXJPYmogbV9wYnVmZmVyOwogICAgIENHTENvbnRleHRPYmogbV9jb250ZXh0T2JqOwogICAgIHVu
c2lnbmVkIGNoYXIqIG1fcmVuZGVyT3V0cHV0OwotICAgIENHQ29udGV4dFJlZiBtX2NnQ29udGV4
dDsKICNlbGlmIFBMQVRGT1JNKExJTlVYKQogICAgIERpc3BsYXkqIG1fZGlzcGxheTsKICAgICBH
TFhDb250ZXh0IG1fY29udGV4dE9iajsKQEAgLTI1NSw3ICsyNTQsNiBAQCBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjpHcmFwaGljc0NvbnRlCiAgICAgLCBtX3BidWZmZXIoMCkKICAgICAsIG1f
Y29udGV4dE9iaigwKQogICAgICwgbV9yZW5kZXJPdXRwdXQoMCkKLSAgICAsIG1fY2dDb250ZXh0
KDApCiAjZWxpZiBQTEFURk9STShMSU5VWCkKICAgICAsIG1fZGlzcGxheSgwKQogICAgICwgbV9j
b250ZXh0T2JqKDApCkBAIC01MTAsOCArNTA4LDYgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bDo6fkdyYXBoaWNzQ29udAogICAgIENHTFNldEN1cnJlbnRDb250ZXh0KDApOwogICAgIENHTERl
c3Ryb3lDb250ZXh0KG1fY29udGV4dE9iaik7CiAgICAgQ0dMRGVzdHJveVBCdWZmZXIobV9wYnVm
ZmVyKTsKLSAgICBpZiAobV9jZ0NvbnRleHQpCi0gICAgICAgIENHQ29udGV4dFJlbGVhc2UobV9j
Z0NvbnRleHQpOwogICAgIGlmIChtX3JlbmRlck91dHB1dCkKICAgICAgICAgZGVsZXRlW10gbV9y
ZW5kZXJPdXRwdXQ7CiAjZWxpZiBQTEFURk9STShMSU5VWCkKQEAgLTYzMCwyMCArNjI2LDEyIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cmVzaGFwZSgKICNpZiBQTEFURk9STShD
RykKICAgICAvLyBOZWVkIHRvIHJlYWxsb2NhdGUgdGhlIGNsaWVudC1zaWRlIGJhY2tpbmcgc3Rv
cmUuCiAgICAgLy8gRklYTUU6IG1ha2UgdGhpcyBtb3JlIGVmZmljaWVudC4KLSAgICBpZiAobV9j
Z0NvbnRleHQpIHsKLSAgICAgICAgQ0dDb250ZXh0UmVsZWFzZShtX2NnQ29udGV4dCk7Ci0gICAg
ICAgIG1fY2dDb250ZXh0ID0gMDsKLSAgICB9CiAgICAgaWYgKG1fcmVuZGVyT3V0cHV0KSB7CiAg
ICAgICAgIGRlbGV0ZVtdIG1fcmVuZGVyT3V0cHV0OwogICAgICAgICBtX3JlbmRlck91dHB1dCA9
IDA7CiAgICAgfQogICAgIGludCByb3dCeXRlcyA9IHdpZHRoICogNDsKICAgICBtX3JlbmRlck91
dHB1dCA9IG5ldyB1bnNpZ25lZCBjaGFyW2hlaWdodCAqIHJvd0J5dGVzXTsKLSAgICBDR0NvbG9y
U3BhY2VSZWYgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9y
U3BhY2VHZW5lcmljUkdCKTsKLSAgICBtX2NnQ29udGV4dCA9IENHQml0bWFwQ29udGV4dENyZWF0
ZShtX3JlbmRlck91dHB1dCwgd2lkdGgsIGhlaWdodCwgOCwgcm93Qnl0ZXMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JTcGFjZSwga0NHSW1hZ2VBbHBoYVBy
ZW11bHRpcGxpZWRMYXN0KTsKLSAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKGNvbG9yU3BhY2UpOwog
I2VuZGlmICAvLyBQTEFURk9STShDRykKIH0KIApAQCAtNzMxLDEwICs3MTksOCBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJlZ2luUGFpCiAgICAgZ2xSZWFkUGl4ZWxzKDAsIDAs
IG1fY2FjaGVkV2lkdGgsIG1fY2FjaGVkSGVpZ2h0LCBHTF9CR1JBLCBHTF9VTlNJR05FRF9CWVRF
LCBwaXhlbHMpOwogI2VsaWYgUExBVEZPUk0oQ0cpCiAgICAgaWYgKG1fcmVuZGVyT3V0cHV0KSB7
Ci0gICAgICAgIEFTU0VSVChDR0JpdG1hcENvbnRleHRHZXRXaWR0aChtX2NnQ29udGV4dCkgPT0g
bV9jYWNoZWRXaWR0aCk7Ci0gICAgICAgIEFTU0VSVChDR0JpdG1hcENvbnRleHRHZXRIZWlnaHQo
bV9jZ0NvbnRleHQpID09IG1fY2FjaGVkSGVpZ2h0KTsKICAgICAgICAgcGl4ZWxzID0gbV9yZW5k
ZXJPdXRwdXQ7Ci0gICAgICAgIGdsUmVhZFBpeGVscygwLCAwLCBtX2NhY2hlZFdpZHRoLCBtX2Nh
Y2hlZEhlaWdodCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKKyAgICAgICAg
Z2xSZWFkUGl4ZWxzKDAsIDAsIG1fY2FjaGVkV2lkdGgsIG1fY2FjaGVkSGVpZ2h0LCBHTF9CR1JB
LCBHTF9VTlNJR05FRF9JTlRfOF84XzhfOF9SRVYsIHBpeGVscyk7CiAgICAgfQogI2Vsc2UKICNl
cnJvciBNdXN0IHBvcnQgdG8geW91ciBwbGF0Zm9ybQpAQCAtNzU4LDcgKzc0NCwyMCBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJlZ2luUGFpCiAgICAgfQogI2VsaWYgUExBVEZP
Uk0oQ0cpCiAgICAgaWYgKG1fcmVuZGVyT3V0cHV0KSB7Ci0gICAgICAgIENHSW1hZ2VSZWYgY2dJ
bWFnZSA9IENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKG1fY2dDb250ZXh0KTsKKyAgICAgICAg
aW50IHJvd0J5dGVzID0gbV9jYWNoZWRXaWR0aCAqIDQ7CisgICAgICAgIENHRGF0YVByb3ZpZGVy
UmVmIGRhdGFQcm92aWRlciA9IENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoMCwgbV9yZW5k
ZXJPdXRwdXQsIHJvd0J5dGVzICogbV9jYWNoZWRIZWlnaHQsIDApOworICAgICAgICBDR0NvbG9y
U3BhY2VSZWYgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOworICAg
ICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBDR0ltYWdlQ3JlYXRlKG1fY2FjaGVkV2lkdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jYWNoZWRIZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByb3dCeXRlcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb2xvclNwYWNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBr
Q0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YVByb3ZpZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NH
UmVuZGVyaW5nSW50ZW50RGVmYXVsdCk7CiAgICAgICAgIC8vIENTUyBzdHlsaW5nIG1heSBjYXVz
ZSB0aGUgY2FudmFzJ3MgY29udGVudCB0byBiZSByZXNpemVkIG9uCiAgICAgICAgIC8vIHRoZSBw
YWdlLiBHbyBiYWNrIHRvIHRoZSBDYW52YXMgdG8gZmlndXJlIG91dCB0aGUgY29ycmVjdAogICAg
ICAgICAvLyB3aWR0aCBhbmQgaGVpZ2h0IHRvIGRyYXcuCkBAIC03NjksOSArNzY4LDEzIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmVnaW5QYWkKICAgICAgICAgLy8gcmVuZGVy
aW5nIHJlc3VsdHMuCiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShpbWFnZUJ1ZmZlci0+
Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGtDR0JsZW5kTW9kZUNvcHkpOworICAgICAgICBDR0NvbnRleHRTZXRJbnRlcnBvbGF0aW9u
UXVhbGl0eShpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NHSW50ZXJwb2xhdGlvbk5vbmUp
OwogICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoaW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+cGxh
dGZvcm1Db250ZXh0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LCBjZ0ltYWdl
KTsKICAgICAgICAgQ0dJbWFnZVJlbGVhc2UoY2dJbWFnZSk7CisgICAgICAgIENHQ29sb3JTcGFj
ZVJlbGVhc2UoY29sb3JTcGFjZSk7CisgICAgICAgIENHRGF0YVByb3ZpZGVyUmVsZWFzZShkYXRh
UHJvdmlkZXIpOwogICAgIH0KICNlbHNlCiAjZXJyb3IgTXVzdCBwb3J0IHRvIHlvdXIgcGxhdGZv
cm0K
</data>

          </attachment>
      

    </bug>

</bugzilla>