<?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>47964</bug_id>
          
          <creation_ts>2010-10-19 19:00:34 -0700</creation_ts>
          <short_desc>If WebGL is running on top of a strict version of OpenGL ES it should make sure attribs have buffers assigned at all times</short_desc>
          <delta_ts>2010-10-27 14:03:55 -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>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="Gregg Tavares">gman</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarrin</cc>
    
    <cc>enne</cc>
    
    <cc>eric</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>296599</commentid>
    <comment_count>0</comment_count>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2010-10-19 19:00:34 -0700</bug_when>
    <thetext>Chromium has a strict version of OpenGL ES 2.0 that does all the attrib array bounds checking needed by WebGL so it would be nice if WebGL in webkit didn&apos;t redundantly do bounds checking.

Unfortunately, when removing the current bounds checking the issue comes up that WebGL can call drawArrays or drawElements when attributes are enabled but no buffer has been assigned. This crashes OpenGL (both the Chromium version and real OpenGL)

The suggested solution is to create a dummy buffer, assign it to every attribute at initialization time,

If the user deletes a buffer or calls vertexAttribPointer with NULL then instead of putting NULL in the buffer, assign the dummy buffer to the attrib in question

This avoids having to check that buffers are assigned at draw time. It add the complication that when querying the state of an attrib you have to shadow its state since if the dummy buffer is assigned you should be telling the user that no buffer is assigned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296867</commentid>
    <comment_count>1</comment_count>
    <who name="Gregg Tavares">gman</who>
    <bug_when>2010-10-20 10:44:12 -0700</bug_when>
    <thetext>Actually, rethinking this, WebGL still has to verify that attribs that are enabled have buffers assigned to them.

The things that need to happen are....If WebGL us running on a strict version of OpenGL ES then

1) bounds do not need to be checked 
2) index buffers do not need to be shadowed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296909</commentid>
    <comment_count>2</comment_count>
      <attachid>71315</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-10-20 12:05:36 -0700</bug_when>
    <thetext>Created attachment 71315
patch

With this patch in, we can turn off bounds checking in WebGLRenderingContext if using command buffer port.  This is to avoid bounds checking twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299793</commentid>
    <comment_count>3</comment_count>
      <attachid>71315</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-10-26 14:21:43 -0700</bug_when>
    <thetext>Comment on attachment 71315
patch

The patch looks fine, but is this situation covered by existing layout tests? If not, one is needed (upstream in Khronos as well as pulled down to WebKit).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299843</commentid>
    <comment_count>4</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-10-26 15:19:50 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 71315 [details])
&gt; The patch looks fine, but is this situation covered by existing layout tests? If not, one is needed (upstream in Khronos as well as pulled down to WebKit).

Yes, it is covered.  Without this patch, if we turn off the bounds-checking in WebGLRenderingContext and turn it on in command buffer, some texts will crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299847</commentid>
    <comment_count>5</comment_count>
      <attachid>71315</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-10-26 15:25:08 -0700</bug_when>
    <thetext>Comment on attachment 71315
patch

OK. Looks good to me then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300317</commentid>
    <comment_count>6</comment_count>
      <attachid>71315</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-10-27 10:10:26 -0700</bug_when>
    <thetext>Comment on attachment 71315
patch

Clearing flags on attachment: 71315

Committed r70661: &lt;http://trac.webkit.org/changeset/70661&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300318</commentid>
    <comment_count>7</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-10-27 10:10:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300543</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-27 14:03:55 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/70661 might have broken GTK Linux 32-bit Debug</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71315</attachid>
            <date>2010-10-20 12:05:36 -0700</date>
            <delta_ts>2010-10-27 10:10:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bounds.patch</filename>
            <type>text/plain</type>
            <size>3142</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDE1OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMTAtMjAgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiBXZWJH
TCBpcyBydW5uaW5nIG9uIHRvcCBvZiBhIHN0cmljdCB2ZXJzaW9uIG9mIE9wZW5HTCBFUyBpdCBz
aG91bGQgbWFrZSBzdXJlIGF0dHJpYnMgaGF2ZSBidWZmZXJzIGFzc2lnbmVkIGF0IGFsbCB0aW1l
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc5NjQK
KworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlUmVuZGVyaW5nU3Rh
dGUpOiBNaW5pbXVtIGNoZWNraW5nOiBpZiBpbnB1dCA8PSAwLCBvbmx5IGNoZWNrIGlmIGVhY2gg
ZW5hYmxlZCB2ZXJ0ZXggYXR0cmlidXRlIGlzIGJvdW5kIHRvIGEgYnVmZmVyLgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkcmF3QXJyYXlzKTogSWYgdW5kZXJseWlu
ZyBHTCBwZXJmb3JtcyBib3VuZHMgY2hlY2tpbmcsIHdlIHN0aWxsIG5lZWQgdG8gZG8gdGhlIG1p
bmltdW0gY2hlY2tpbmcgdXNpbmcgdmFsaWRhdGVSZW5kZXJpbmdTdGF0ZS4KKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0VsZW1lbnRzKTogRGl0dG8uCisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmg6IEFkZCBhIGNvbW1lbnQg
Zm9yIGlucHV0IDw9IDAgaW4gdmFsaWRhdGVSZW5kZXJpbmdTdGF0ZS4KKwogMjAxMC0xMC0yMCAg
RGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gRnJhc2VyLgpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcAkocmV2aXNpb24gNzAxNTcpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3OCw2ICs4NzgsOSBAQCBi
b29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVSZW5kCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCisgICAgaWYgKG51bUVsZW1lbnRzUmVxdWlyZWQgPD0gMCkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKICAgICAvLyBMb29rIGluIGVhY2ggY29uc3VtZWQgdmVydGV4
IGF0dHJpYiAoYnkgdGhlIGN1cnJlbnQgcHJvZ3JhbSkgYW5kIGZpbmQgdGhlIHNtYWxsZXN0IGJ1
ZmZlciBzaXplCiAgICAgbG9uZyBzbWFsbGVzdE51bUVsZW1lbnRzID0gTE9OR19NQVg7CiAgICAg
aW50IG51bUFjdGl2ZUF0dHJpYkxvY2F0aW9ucyA9IG1fY3VycmVudFByb2dyYW0tPm51bUFjdGl2
ZUF0dHJpYkxvY2F0aW9ucygpOwpAQCAtOTM5LDYgKzk0MiwxMSBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6ZHJhd0FycmF5cyh1CiAgICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIXZhbGlk
YXRlUmVuZGVyaW5nU3RhdGUoMCkpIHsKKyAgICAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGJvb2wgdmVydGV4QXR0cmliMFNp
bXVsYXRlZCA9IGZhbHNlOwpAQCAtOTkwLDYgKzk5OCwxMSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6ZHJhd0VsZW1lbnRzCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCF2YWxpZGF0ZVJlbmRl
cmluZ1N0YXRlKDApKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIHZlcnRleEF0dHJpYjBTaW11bGF0ZWQg
PSBmYWxzZTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuaAkocmV2aXNpb24gNzAxNTcpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsNiArMzIzLDcgQEAgcHVibGljOgog
CiAgICAgLy8gUHJlY2lzZSBidXQgc2xvdyBpbmRleCB2YWxpZGF0aW9uIC0tIG9ubHkgZG9uZSBp
ZiBjb25zZXJ2YXRpdmUgY2hlY2tzIGZhaWwKICAgICBib29sIHZhbGlkYXRlSW5kZXhBcnJheVBy
ZWNpc2UodW5zaWduZWQgbG9uZyBjb3VudCwgdW5zaWduZWQgbG9uZyB0eXBlLCBsb25nIG9mZnNl
dCwgbG9uZyYgbnVtRWxlbWVudHNSZXF1aXJlZCk7CisgICAgLy8gSWYgbnVtRWxlbWVudHMgPD0g
MCwgd2Ugb25seSBjaGVjayBpZiBlYWNoIGVuYWJsZWQgdmVydGV4IGF0dHJpYnV0ZSBpcyBib3Vu
ZCB0byBhIGJ1ZmZlci4KICAgICBib29sIHZhbGlkYXRlUmVuZGVyaW5nU3RhdGUobG9uZyBudW1F
bGVtZW50cyk7CiAKICAgICBib29sIHZhbGlkYXRlV2ViR0xPYmplY3QoV2ViR0xPYmplY3QqIG9i
amVjdCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>