Changeset 61406 in webkit


Ignore:
Timestamp:
Jun 18, 2010 8:14:10 AM (14 years ago)
Author:
eric@webkit.org
Message:

2010-06-18 Zhenyao Mo <zmo@google.com>

Reviewed by Dimitri Glazkov.

Fix WebGLRenderingContext helper functions find{Texture/Renderbuffer/Buffer}
https://bugs.webkit.org/show_bug.cgi?id=40176

  • fast/canvas/webgl/gl-object-get-calls-expected.txt: Test name == 0 cases, and test getVertexAttrib return original WebGLBuffer object.
  • fast/canvas/webgl/script-tests/gl-object-get-calls.js: Ditto.

2010-06-18 Zhenyao Mo <zmo@google.com>

Reviewed by Dimitri Glazkov.

Fix WebGLRenderingContext helper functions find{Texture/Renderbuffer/Buffer}
https://bugs.webkit.org/show_bug.cgi?id=40176

  • html/canvas/WebGLBuffer.cpp: Remove constructor with existing name.
  • html/canvas/WebGLBuffer.h: Ditto.
  • html/canvas/WebGLRenderingContext.cpp: (WebCore::WebGLRenderingContext::getVertexAttrib): Use findBuffer instead of creating a new WebGLBuffer. (WebCore::WebGLRenderingContext::findTexture): Deal with name == 0 case and return raw pointer. (WebCore::WebGLRenderingContext::findRenderbuffer): Ditto. (WebCore::WebGLRenderingContext::findBuffer): Find WebGLBuffer object using given name.
  • html/canvas/WebGLRenderingContext.h: Add findBuffer function declaration, change return type to raw pointer.
Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r61405 r61406  
     12010-06-18  Zhenyao Mo  <zmo@google.com>
     2
     3        Reviewed by Dimitri Glazkov.
     4
     5        Fix WebGLRenderingContext helper functions find{Texture/Renderbuffer/Buffer}
     6        https://bugs.webkit.org/show_bug.cgi?id=40176
     7
     8        * fast/canvas/webgl/gl-object-get-calls-expected.txt: Test name == 0 cases, and test getVertexAttrib return original WebGLBuffer object.
     9        * fast/canvas/webgl/script-tests/gl-object-get-calls.js: Ditto.
     10
    1112010-06-18  Tony Gentilcore  <tonyg@chromium.org>
    212
  • trunk/LayoutTests/fast/canvas/webgl/gl-object-get-calls-expected.txt

    r58790 r61406  
    7070PASS gl.getUniform(matProgram, mval3Loc) is [5, 6, 7, 8, 9, 10, 11, 12, 13]
    7171PASS gl.getUniform(matProgram, mval4Loc) is [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
    72 PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING) is non-null.
     72PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING) is buffer
    7373PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_ENABLED) is true
    7474PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_SIZE) is 4
     
    7979PASS gl.getVertexAttrib(1, gl.CURRENT_VERTEX_ATTRIB) is [5, 6, 7, 8]
    8080PASS gl.getError() is 0
     81PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) is null
     82PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) is null
     83PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING) is null
     84PASS gl.getError() is 0
    8185PASS successfullyParsed is true
    8286
  • trunk/LayoutTests/fast/canvas/webgl/script-tests/gl-object-get-calls.js

    r58790 r61406  
    193193gl.enableVertexAttribArray(1);
    194194gl.vertexAttribPointer(1, 4, gl.FLOAT, false, 0, 0);
    195 shouldBeNonNull('gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING)');
     195shouldBe('gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING)', 'buffer');
    196196shouldBe('gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_ENABLED)', 'true');
    197197shouldBe('gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_SIZE)', '4');
     
    205205shouldBe('gl.getError()', '0');
    206206
     207// Test cases where name == 0
     208gl.deleteTexture(texture);
     209shouldBeNull('gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME)');
     210gl.deleteRenderbuffer(renderbuffer);
     211shouldBeNull('gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME)');
     212gl.deleteBuffer(buffer);
     213shouldBeNull('gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING)');
     214shouldBe('gl.getError()', '0');
     215
    207216successfullyParsed = true;
  • trunk/WebCore/ChangeLog

    r61405 r61406  
     12010-06-18  Zhenyao Mo  <zmo@google.com>
     2
     3        Reviewed by Dimitri Glazkov.
     4
     5        Fix WebGLRenderingContext helper functions find{Texture/Renderbuffer/Buffer}
     6        https://bugs.webkit.org/show_bug.cgi?id=40176
     7
     8        * html/canvas/WebGLBuffer.cpp: Remove constructor with existing name.
     9        * html/canvas/WebGLBuffer.h: Ditto.
     10        * html/canvas/WebGLRenderingContext.cpp:
     11        (WebCore::WebGLRenderingContext::getVertexAttrib): Use findBuffer instead of creating a new WebGLBuffer.
     12        (WebCore::WebGLRenderingContext::findTexture): Deal with name == 0 case and return raw pointer.
     13        (WebCore::WebGLRenderingContext::findRenderbuffer): Ditto.
     14        (WebCore::WebGLRenderingContext::findBuffer): Find WebGLBuffer object using given name.
     15        * html/canvas/WebGLRenderingContext.h: Add findBuffer function declaration, change return type to raw pointer.
     16
    1172010-06-18  Tony Gentilcore  <tonyg@chromium.org>
    218
  • trunk/WebCore/html/canvas/WebGLBuffer.cpp

    r59499 r61406  
    3838}
    3939
    40 PassRefPtr<WebGLBuffer> WebGLBuffer::create(WebGLRenderingContext* ctx, Platform3DObject obj)
    41 {
    42     return adoptRef(new WebGLBuffer(ctx, obj));
    43 }
    44 
    4540WebGLBuffer::WebGLBuffer(WebGLRenderingContext* ctx)
    4641    : CanvasObject(ctx)
     
    5045{
    5146    setObject(context()->graphicsContext3D()->createBuffer());
    52     clearCachedMaxIndices();
    53 }
    54 
    55 WebGLBuffer::WebGLBuffer(WebGLRenderingContext* ctx, Platform3DObject obj)
    56     : CanvasObject(ctx)
    57     , m_nextAvailableCacheEntry(0)
    58 {
    59     setObject(obj, false);
    6047    clearCachedMaxIndices();
    6148}
  • trunk/WebCore/html/canvas/WebGLBuffer.h

    r59499 r61406  
    4040       
    4141        static PassRefPtr<WebGLBuffer> create(WebGLRenderingContext*);
    42        
    43         // For querying previously created objects via e.g. getFramebufferAttachmentParameter
    44         // FIXME: should consider canonicalizing these objects
    45         static PassRefPtr<WebGLBuffer> create(WebGLRenderingContext*, Platform3DObject);
    4642
    4743        bool associateBufferData(unsigned long target, int size);
     
    6056    protected:
    6157        WebGLBuffer(WebGLRenderingContext*);
    62         WebGLBuffer(WebGLRenderingContext*, Platform3DObject obj);
    63        
     58
    6459        virtual void _deleteObject(Platform3DObject o);
    6560   
  • trunk/WebCore/html/canvas/WebGLRenderingContext.cpp

    r61333 r61406  
    11171117        switch (type) {
    11181118        case GraphicsContext3D::RENDERBUFFER:
    1119             return WebGLGetInfo(findRenderbuffer(static_cast<Platform3DObject>(value)));
     1119            return WebGLGetInfo(PassRefPtr<WebGLRenderbuffer>(findRenderbuffer(static_cast<Platform3DObject>(value))));
    11201120        case GraphicsContext3D::TEXTURE:
    1121             return WebGLGetInfo(findTexture(static_cast<Platform3DObject>(value)));
     1121            return WebGLGetInfo(PassRefPtr<WebGLTexture>(findTexture(static_cast<Platform3DObject>(value))));
    11221122        default:
    11231123            // FIXME: raise exception?
     
    16021602        int name = 0;
    16031603        m_context->getVertexAttribiv(index, pname, &name);
    1604         if (name == 0)
    1605             return WebGLGetInfo();
    1606         RefPtr<WebGLBuffer> tmp = WebGLBuffer::create(this, name);
    1607         addObject(tmp.get());
    1608         return WebGLGetInfo(PassRefPtr<WebGLBuffer>(tmp));
     1604        return WebGLGetInfo(PassRefPtr<WebGLBuffer>(findBuffer(static_cast<Platform3DObject>(name))));
    16091605    }
    16101606    case GraphicsContext3D::VERTEX_ATTRIB_ARRAY_ENABLED:
     
    31413137}
    31423138
    3143 PassRefPtr<WebGLTexture> WebGLRenderingContext::findTexture(Platform3DObject obj)
    3144 {
     3139WebGLTexture* WebGLRenderingContext::findTexture(Platform3DObject obj)
     3140{
     3141    if (!obj)
     3142        return 0;
    31453143    HashSet<RefPtr<CanvasObject> >::iterator pend = m_canvasObjects.end();
    31463144    for (HashSet<RefPtr<CanvasObject> >::iterator it = m_canvasObjects.begin(); it != pend; ++it) {
    3147         if ((*it)->isTexture() && (*it)->object() == obj) {
    3148             RefPtr<WebGLTexture> tex = reinterpret_cast<WebGLTexture*>((*it).get());
    3149             return tex.release();
    3150         }
     3145        if ((*it)->isTexture() && (*it)->object() == obj)
     3146            return reinterpret_cast<WebGLTexture*>((*it).get());
    31513147    }
    31523148    return 0;
    31533149}
    31543150
    3155 PassRefPtr<WebGLRenderbuffer> WebGLRenderingContext::findRenderbuffer(Platform3DObject obj)
    3156 {
     3151WebGLRenderbuffer* WebGLRenderingContext::findRenderbuffer(Platform3DObject obj)
     3152{
     3153    if (!obj)
     3154        return 0;
    31573155    HashSet<RefPtr<CanvasObject> >::iterator pend = m_canvasObjects.end();
    31583156    for (HashSet<RefPtr<CanvasObject> >::iterator it = m_canvasObjects.begin(); it != pend; ++it) {
    3159         if ((*it)->isRenderbuffer() && (*it)->object() == obj) {
    3160             RefPtr<WebGLRenderbuffer> buffer = reinterpret_cast<WebGLRenderbuffer*>((*it).get());
    3161             return buffer.release();
    3162         }
     3157        if ((*it)->isRenderbuffer() && (*it)->object() == obj)
     3158            return reinterpret_cast<WebGLRenderbuffer*>((*it).get());
     3159    }
     3160    return 0;
     3161}
     3162
     3163WebGLBuffer* WebGLRenderingContext::findBuffer(Platform3DObject obj)
     3164{
     3165    if (!obj)
     3166        return 0;
     3167    HashSet<RefPtr<CanvasObject> >::iterator pend = m_canvasObjects.end();
     3168    for (HashSet<RefPtr<CanvasObject> >::iterator it = m_canvasObjects.begin(); it != pend; ++it) {
     3169        if ((*it)->isBuffer() && (*it)->object() == obj)
     3170            return reinterpret_cast<WebGLBuffer*>((*it).get());
    31633171    }
    31643172    return 0;
  • trunk/WebCore/html/canvas/WebGLRenderingContext.h

    r61333 r61406  
    316316        void addObject(CanvasObject*);
    317317        void detachAndRemoveAllObjects();
    318         PassRefPtr<WebGLTexture> findTexture(Platform3DObject);
    319         PassRefPtr<WebGLRenderbuffer> findRenderbuffer(Platform3DObject);
     318        WebGLTexture* findTexture(Platform3DObject);
     319        WebGLRenderbuffer* findRenderbuffer(Platform3DObject);
     320        WebGLBuffer* findBuffer(Platform3DObject);
    320321
    321322        void markContextChanged();
Note: See TracChangeset for help on using the changeset viewer.