<?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>80895</bug_id>
          
          <creation_ts>2012-03-12 14:53:23 -0700</creation_ts>
          <short_desc>After webgl canvas resize, bindings might be lost</short_desc>
          <delta_ts>2012-03-13 09:15:22 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zhenyao Mo">zmo</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>gman</cc>
    
    <cc>kbr</cc>
    
    <cc>senorblanco</cc>
    
    <cc>twiz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>576567</commentid>
    <comment_count>0</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-03-12 14:53:23 -0700</bug_when>
    <thetext>This includes texture/framebuffer/renderbuffer bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576671</commentid>
    <comment_count>1</comment_count>
      <attachid>131436</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-03-12 16:09:40 -0700</bug_when>
    <thetext>Created attachment 131436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576672</commentid>
    <comment_count>2</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-03-12 16:10:31 -0700</bug_when>
    <thetext>Stephen, Ken is probably out, can you review this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576876</commentid>
    <comment_count>3</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-12 18:39:18 -0700</bug_when>
    <thetext>This looks ok, although I&apos;m not super-familiar with this code.  r=me, in case this needs to go in in a hurry.

If it&apos;s DrawingBuffer that&apos;s messing up the bindings, should it be DrawingBuffer that restores them?  Or does this save us doing a bunch of get()&apos;s?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576877</commentid>
    <comment_count>4</comment_count>
      <attachid>131436</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-12 18:39:44 -0700</bug_when>
    <thetext>Comment on attachment 131436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576880</commentid>
    <comment_count>5</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-03-12 18:43:10 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; This looks ok, although I&apos;m not super-familiar with this code.  r=me, in case this needs to go in in a hurry.
&gt; 
&gt; If it&apos;s DrawingBuffer that&apos;s messing up the bindings, should it be DrawingBuffer that restores them?  Or does this save us doing a bunch of get()&apos;s?

If DrawingBuffer needs to restore the binding states, it needs to track the current bindings, which is not trivia.  For example, if a current bound framebuffer is deleted, we need to reset the binding, etc.  This is basically duplicate all the logic in WebGLRenderingContext in DrawingBuffer and GraphicsContext3D.  That&apos;s why I restore the bindings in WebGLRenderingContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576888</commentid>
    <comment_count>6</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-12 18:51:36 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; This looks ok, although I&apos;m not super-familiar with this code.  r=me, in case this needs to go in in a hurry.
&gt; &gt; 
&gt; &gt; If it&apos;s DrawingBuffer that&apos;s messing up the bindings, should it be DrawingBuffer that restores them?  Or does this save us doing a bunch of get()&apos;s?
&gt; 
&gt; If DrawingBuffer needs to restore the binding states, it needs to track the current bindings, which is not trivia.  For example, if a current bound framebuffer is deleted, we need to reset the binding, etc.  This is basically duplicate all the logic in WebGLRenderingContext in DrawingBuffer and GraphicsContext3D.  That&apos;s why I restore the bindings in WebGLRenderingContext.

Sounds reasonable.

I forgot to mention:  that test is great.  Is that something that&apos;s worth upstreaming to the WebGL conformance suite?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576889</commentid>
    <comment_count>7</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-03-12 18:53:54 -0700</bug_when>
    <thetext>Committed r110526: &lt;http://trac.webkit.org/changeset/110526&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577346</commentid>
    <comment_count>8</comment_count>
    <who name="Jeff Timanus">twiz</who>
    <bug_when>2012-03-13 08:32:33 -0700</bug_when>
    <thetext>This change looks good.  DrawingBuffer::reset plays with the bound textures and framebuffers, which need to be re-assigned after the resize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577413</commentid>
    <comment_count>9</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-03-13 09:15:22 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; This looks ok, although I&apos;m not super-familiar with this code.  r=me, in case this needs to go in in a hurry.
&gt; &gt; &gt; 
&gt; &gt; &gt; If it&apos;s DrawingBuffer that&apos;s messing up the bindings, should it be DrawingBuffer that restores them?  Or does this save us doing a bunch of get()&apos;s?
&gt; &gt; 
&gt; &gt; If DrawingBuffer needs to restore the binding states, it needs to track the current bindings, which is not trivia.  For example, if a current bound framebuffer is deleted, we need to reset the binding, etc.  This is basically duplicate all the logic in WebGLRenderingContext in DrawingBuffer and GraphicsContext3D.  That&apos;s why I restore the bindings in WebGLRenderingContext.
&gt; 
&gt; Sounds reasonable.
&gt; 
&gt; I forgot to mention:  that test is great.  Is that something that&apos;s worth upstreaming to the WebGL conformance suite?

The test was checked in to khronos by Gregg, and I copied from there, so it&apos;s already in the suite.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131436</attachid>
            <date>2012-03-12 16:09:40 -0700</date>
            <delta_ts>2012-03-12 18:39:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80895-20120312160939.patch</filename>
            <type>text/plain</type>
            <size>5092</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDQ5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAzLTEyICBaaGVueWFv
IE1vICA8em1vQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWZ0ZXIgd2ViZ2wgY2FudmFzIHJlc2l6
ZSwgYmluZGluZ3MgbWlnaHQgYmUgbG9zdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODA4OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLWJpbmRpbmdz
LXVuZWZmZWN0ZWQtb24tcmVzaXplLmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVzaGFwZSk6IHJlY292ZXIgYmluZGluZ3MgYWZ0
ZXIgcmVzaGFwZS4KKwogMjAxMi0wMy0xMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFVzZSBzbWFsbGVyIHRpbGVzIGZvciByaWdodCBhbmQgYm90dG9t
IGVkZ2VzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDEwOTk4OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc1MSw2ICs3NTEsMTEgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlc2hhcGUoaW50
IAogICAgICAgICBtX2RyYXdpbmdCdWZmZXItPnJlc2V0KEludFNpemUod2lkdGgsIGhlaWdodCkp
OwogICAgIGVsc2UKICAgICAgICAgbV9jb250ZXh0LT5yZXNoYXBlKHdpZHRoLCBoZWlnaHQpOwor
CisgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgb2JqZWN0T3JaZXJvKG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4
dHVyZTJEQmluZGluZy5nZXQoKSkpOworICAgIG1fY29udGV4dC0+YmluZFJlbmRlcmJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBvYmplY3RPclplcm8obV9yZW5kZXJidWZm
ZXJCaW5kaW5nLmdldCgpKSk7CisgICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5nKQorICAgICAg
bV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBvYmplY3RPclplcm8obV9mcmFtZWJ1ZmZlckJpbmRpbmcuZ2V0KCkpKTsKIH0KIAogaW50IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6ZHJhd2luZ0J1ZmZlcldpZHRoKCkgY29uc3QKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDExMDQ5NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAzLTEyICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5j
b20+CisKKyAgICAgICAgQWZ0ZXIgd2ViZ2wgY2FudmFzIHJlc2l6ZSwgYmluZGluZ3MgbWlnaHQg
YmUgbG9zdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODA4OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUtYmluZGluZ3MtdW5lZmZlY3RlZC1vbi1yZXNpemUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJl
LWJpbmRpbmdzLXVuZWZmZWN0ZWQtb24tcmVzaXplLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAzLTEy
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBkYXRlIGV4cGVj
dGVkIHJlc3VsdHMgYWZ0ZXIgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTEwNDgw
LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4dHVyZS1iaW5kaW5ncy11
bmVmZmVjdGVkLW9uLXJlc2l6ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4dHVyZS1iaW5kaW5ncy11bmVmZmVjdGVkLW9uLXJlc2l6
ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC90ZXh0dXJlLWJpbmRpbmdzLXVuZWZmZWN0ZWQtb24tcmVzaXplLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorVmVyaWZpZXMgdGhhdCBHTCB0ZXh0dXJlIGJp
bmRpbmdzIGRvIG5vdCBjaGFuZ2Ugd2hlbiBjYW52YXMgaXMgcmVzaXplZAorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKK3Rlc3QgYmVmb3JlIHJlc2l6aW5nIGNhbnZhcworUEFTUyBzaG91
bGQgYmUgYmx1ZQorUEFTUyBzaG91bGQgYmUgZ3JlZW4KK3Rlc3QgYWZ0ZXIgcmVzaXppbmcgY2Fu
dmFzCitQQVNTIHNob3VsZCBiZSBibHVlCitQQVNTIHNob3VsZCBiZSBncmVlbgorCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLWJpbmRp
bmdzLXVuZWZmZWN0ZWQtb24tcmVzaXplLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC90ZXh0dXJlLWJpbmRpbmdzLXVuZWZmZWN0ZWQtb24tcmVzaXplLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdGV4dHVyZS1iaW5kaW5ncy11bmVmZmVj
dGVkLW9uLXJlc2l6ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvdGV4dHVyZS1iaW5kaW5ncy11bmVmZmVjdGVkLW9uLXJlc2l6ZS5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LXV0aWxzLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGNhbnZhcyBpZD0iZXhhbXBsZSIgd2lkdGg9IjRweCIgaGVpZ2h0
PSI0cHgiPjwvY2FudmFzPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1ZlcmlmaWVzIHRoYXQgR0wg
dGV4dHVyZSBiaW5kaW5ncyBkbyBub3QgY2hhbmdlIHdoZW4gY2FudmFzIGlzIHJlc2l6ZWQnKTsK
KwordmFyIGVycjsKK3ZhciB3dHUgPSBXZWJHTFRlc3RVdGlsczsKK3ZhciBjYW52YXMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZXhhbXBsZSIpOwordmFyIGdsID0gd3R1LmNyZWF0ZTNEQ29u
dGV4dChjYW52YXMpOwordmFyIHByb2dyYW0gPSB3dHUuc2V0dXBUZXh0dXJlZFF1YWQoZ2wpOwor
Cit2YXIgZ3JlZW4gPSBbMCwgMjU1LCAwLCAyNTVdOwordmFyIGJsdWUgPSBbMCwgMCwgMjU1LCAy
NTVdOwordmFyIHRleDAgPSBnbC5jcmVhdGVUZXh0dXJlKCk7Cit3dHUuZmlsbFRleHR1cmUoZ2ws
IHRleDAsIDEsIDEsIGJsdWUsIDApOworZ2wuYWN0aXZlVGV4dHVyZShnbC5URVhUVVJFMSkKK3Zh
ciB0ZXgxID0gZ2wuY3JlYXRlVGV4dHVyZSgpOword3R1LmZpbGxUZXh0dXJlKGdsLCB0ZXgxLCAx
LCAxLCBncmVlbiwgMCk7CisKK3ZhciBsb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3Jh
bSwgInRleCIpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICBnbC52aWV3cG9ydCgwLCAwLCBjYW52
YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOworICBnbC51bmlmb3JtMWkobG9jLCAwKTsKKyAgd3R1
LmRyYXdRdWFkKGdsKTsKKyAgd3R1LmNoZWNrQ2FudmFzKGdsLCBibHVlLCAic2hvdWxkIGJlIGJs
dWUiKTsKKyAgZ2wudW5pZm9ybTFpKGxvYywgMSk7CisgIHd0dS5kcmF3UXVhZChnbCk7CisgIHd0
dS5jaGVja0NhbnZhcyhnbCwgZ3JlZW4sICJzaG91bGQgYmUgZ3JlZW4iKTsKK30KKworZGVidWco
InRlc3QgYmVmb3JlIHJlc2l6aW5nIGNhbnZhcyIpOwordGVzdCgpOworZGVidWcoInRlc3QgYWZ0
ZXIgcmVzaXppbmcgY2FudmFzIik7CitjYW52YXMud2lkdGggPSA4OwordGVzdCgpOworCitzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKClBy
b3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RleHR1cmUt
YmluZGluZ3MtdW5lZmZlY3RlZC1vbi1yZXNpemUuaHRtbApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46
ZW9sLXN0eWxlCiAgICsgTEYKCg==
</data>
<flag name="review"
          id="134755"
          type_id="1"
          status="+"
          setter="senorblanco"
    />
          </attachment>
      

    </bug>

</bugzilla>