Changeset 61406 in webkit
- Timestamp:
- Jun 18, 2010 8:14:10 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r61405 r61406 1 2010-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 1 11 2010-06-18 Tony Gentilcore <tonyg@chromium.org> 2 12 -
trunk/LayoutTests/fast/canvas/webgl/gl-object-get-calls-expected.txt
r58790 r61406 70 70 PASS gl.getUniform(matProgram, mval3Loc) is [5, 6, 7, 8, 9, 10, 11, 12, 13] 71 71 PASS 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.72 PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING) is buffer 73 73 PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_ENABLED) is true 74 74 PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_SIZE) is 4 … … 79 79 PASS gl.getVertexAttrib(1, gl.CURRENT_VERTEX_ATTRIB) is [5, 6, 7, 8] 80 80 PASS gl.getError() is 0 81 PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) is null 82 PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) is null 83 PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING) is null 84 PASS gl.getError() is 0 81 85 PASS successfullyParsed is true 82 86 -
trunk/LayoutTests/fast/canvas/webgl/script-tests/gl-object-get-calls.js
r58790 r61406 193 193 gl.enableVertexAttribArray(1); 194 194 gl.vertexAttribPointer(1, 4, gl.FLOAT, false, 0, 0); 195 shouldBe NonNull('gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING)');195 shouldBe('gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING)', 'buffer'); 196 196 shouldBe('gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_ENABLED)', 'true'); 197 197 shouldBe('gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_SIZE)', '4'); … … 205 205 shouldBe('gl.getError()', '0'); 206 206 207 // Test cases where name == 0 208 gl.deleteTexture(texture); 209 shouldBeNull('gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME)'); 210 gl.deleteRenderbuffer(renderbuffer); 211 shouldBeNull('gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME)'); 212 gl.deleteBuffer(buffer); 213 shouldBeNull('gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING)'); 214 shouldBe('gl.getError()', '0'); 215 207 216 successfullyParsed = true; -
trunk/WebCore/ChangeLog
r61405 r61406 1 2010-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 1 17 2010-06-18 Tony Gentilcore <tonyg@chromium.org> 2 18 -
trunk/WebCore/html/canvas/WebGLBuffer.cpp
r59499 r61406 38 38 } 39 39 40 PassRefPtr<WebGLBuffer> WebGLBuffer::create(WebGLRenderingContext* ctx, Platform3DObject obj)41 {42 return adoptRef(new WebGLBuffer(ctx, obj));43 }44 45 40 WebGLBuffer::WebGLBuffer(WebGLRenderingContext* ctx) 46 41 : CanvasObject(ctx) … … 50 45 { 51 46 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);60 47 clearCachedMaxIndices(); 61 48 } -
trunk/WebCore/html/canvas/WebGLBuffer.h
r59499 r61406 40 40 41 41 static PassRefPtr<WebGLBuffer> create(WebGLRenderingContext*); 42 43 // For querying previously created objects via e.g. getFramebufferAttachmentParameter44 // FIXME: should consider canonicalizing these objects45 static PassRefPtr<WebGLBuffer> create(WebGLRenderingContext*, Platform3DObject);46 42 47 43 bool associateBufferData(unsigned long target, int size); … … 60 56 protected: 61 57 WebGLBuffer(WebGLRenderingContext*); 62 WebGLBuffer(WebGLRenderingContext*, Platform3DObject obj); 63 58 64 59 virtual void _deleteObject(Platform3DObject o); 65 60 -
trunk/WebCore/html/canvas/WebGLRenderingContext.cpp
r61333 r61406 1117 1117 switch (type) { 1118 1118 case GraphicsContext3D::RENDERBUFFER: 1119 return WebGLGetInfo( findRenderbuffer(static_cast<Platform3DObject>(value)));1119 return WebGLGetInfo(PassRefPtr<WebGLRenderbuffer>(findRenderbuffer(static_cast<Platform3DObject>(value)))); 1120 1120 case GraphicsContext3D::TEXTURE: 1121 return WebGLGetInfo( findTexture(static_cast<Platform3DObject>(value)));1121 return WebGLGetInfo(PassRefPtr<WebGLTexture>(findTexture(static_cast<Platform3DObject>(value)))); 1122 1122 default: 1123 1123 // FIXME: raise exception? … … 1602 1602 int name = 0; 1603 1603 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)))); 1609 1605 } 1610 1606 case GraphicsContext3D::VERTEX_ATTRIB_ARRAY_ENABLED: … … 3141 3137 } 3142 3138 3143 PassRefPtr<WebGLTexture> WebGLRenderingContext::findTexture(Platform3DObject obj) 3144 { 3139 WebGLTexture* WebGLRenderingContext::findTexture(Platform3DObject obj) 3140 { 3141 if (!obj) 3142 return 0; 3145 3143 HashSet<RefPtr<CanvasObject> >::iterator pend = m_canvasObjects.end(); 3146 3144 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()); 3151 3147 } 3152 3148 return 0; 3153 3149 } 3154 3150 3155 PassRefPtr<WebGLRenderbuffer> WebGLRenderingContext::findRenderbuffer(Platform3DObject obj) 3156 { 3151 WebGLRenderbuffer* WebGLRenderingContext::findRenderbuffer(Platform3DObject obj) 3152 { 3153 if (!obj) 3154 return 0; 3157 3155 HashSet<RefPtr<CanvasObject> >::iterator pend = m_canvasObjects.end(); 3158 3156 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 3163 WebGLBuffer* 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()); 3163 3171 } 3164 3172 return 0; -
trunk/WebCore/html/canvas/WebGLRenderingContext.h
r61333 r61406 316 316 void addObject(CanvasObject*); 317 317 void detachAndRemoveAllObjects(); 318 PassRefPtr<WebGLTexture> findTexture(Platform3DObject); 319 PassRefPtr<WebGLRenderbuffer> findRenderbuffer(Platform3DObject); 318 WebGLTexture* findTexture(Platform3DObject); 319 WebGLRenderbuffer* findRenderbuffer(Platform3DObject); 320 WebGLBuffer* findBuffer(Platform3DObject); 320 321 321 322 void markContextChanged();
Note: See TracChangeset
for help on using the changeset viewer.