Changeset 71367 in webkit
- Timestamp:
- Nov 4, 2010 4:57:44 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r71364 r71367 1 2010-11-03 Zhenyao Mo <zmo@google.com> 2 3 Reviewed by Kenneth Russell. 4 5 renderbufferStorage(DEPTH_STENCIL) shouldn't generate an error 6 https://bugs.webkit.org/show_bug.cgi?id=48891 7 8 * fast/canvas/webgl/framebuffer-object-attachment-expected.txt: 9 * fast/canvas/webgl/framebuffer-object-attachment.html: Add the test cases for DEPTH_STENCIL renderbuffer. 10 1 11 2010-11-04 Brian Weinstein <bweinstein@apple.com> 2 12 -
trunk/LayoutTests/fast/canvas/webgl/framebuffer-object-attachment-expected.txt
r71190 r71367 6 6 PASS gl = create3DContext() is non-null. 7 7 PASS colorBuffer = gl.createRenderbuffer() is non-null. 8 PASS g l.getError() is gl.NO_ERROR8 PASS getError was expected value: NO_ERROR : 9 9 PASS depthBuffer = gl.createRenderbuffer() is non-null. 10 PASS g l.getError() is gl.NO_ERROR10 PASS getError was expected value: NO_ERROR : 11 11 PASS stencilBuffer = gl.createRenderbuffer() is non-null. 12 PASS g l.getError() is gl.NO_ERROR12 PASS getError was expected value: NO_ERROR : 13 13 PASS depthStencilBuffer = gl.createRenderbuffer() is non-null. 14 PASS g l.getError() is gl.NO_ERROR14 PASS getError was expected value: NO_ERROR : 15 15 Attach depth using DEPTH_ATTACHMENT 16 16 PASS fbo = gl.createFramebuffer() is non-null. 17 PASS g l.getError() is gl.NO_ERROR17 PASS getError was expected value: NO_ERROR : 18 18 Attach depth using STENCIL_ATTACHMENT 19 19 PASS fbo = gl.createFramebuffer() is non-null. 20 PASS g l.getError() is gl.NO_ERROR20 PASS getError was expected value: NO_ERROR : 21 21 PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_UNSUPPORTED 22 PASS g l.getError() is gl.INVALID_FRAMEBUFFER_OPERATION23 PASS g l.getError() is gl.INVALID_FRAMEBUFFER_OPERATION22 PASS getError was expected value: INVALID_FRAMEBUFFER_OPERATION : 23 PASS getError was expected value: INVALID_FRAMEBUFFER_OPERATION : 24 24 Attach depth using DEPTH_STENCIL_ATTACHMENT 25 25 PASS fbo = gl.createFramebuffer() is non-null. 26 PASS g l.getError() is gl.NO_ERROR26 PASS getError was expected value: NO_ERROR : 27 27 PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_UNSUPPORTED 28 PASS g l.getError() is gl.INVALID_FRAMEBUFFER_OPERATION29 PASS g l.getError() is gl.INVALID_FRAMEBUFFER_OPERATION28 PASS getError was expected value: INVALID_FRAMEBUFFER_OPERATION : 29 PASS getError was expected value: INVALID_FRAMEBUFFER_OPERATION : 30 30 Attach stencil using STENCIL_ATTACHMENT 31 31 PASS fbo = gl.createFramebuffer() is non-null. 32 PASS g l.getError() is gl.NO_ERROR32 PASS getError was expected value: NO_ERROR : 33 33 Attach stencil using DEPTH_ATTACHMENT 34 34 PASS fbo = gl.createFramebuffer() is non-null. 35 PASS g l.getError() is gl.NO_ERROR35 PASS getError was expected value: NO_ERROR : 36 36 PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_UNSUPPORTED 37 PASS g l.getError() is gl.INVALID_FRAMEBUFFER_OPERATION38 PASS g l.getError() is gl.INVALID_FRAMEBUFFER_OPERATION37 PASS getError was expected value: INVALID_FRAMEBUFFER_OPERATION : 38 PASS getError was expected value: INVALID_FRAMEBUFFER_OPERATION : 39 39 Attach stencil using DEPTH_STENCIL_ATTACHMENT 40 40 PASS fbo = gl.createFramebuffer() is non-null. 41 PASS g l.getError() is gl.NO_ERROR41 PASS getError was expected value: NO_ERROR : 42 42 PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_UNSUPPORTED 43 PASS g l.getError() is gl.INVALID_FRAMEBUFFER_OPERATION44 PASS g l.getError() is gl.INVALID_FRAMEBUFFER_OPERATION43 PASS getError was expected value: INVALID_FRAMEBUFFER_OPERATION : 44 PASS getError was expected value: INVALID_FRAMEBUFFER_OPERATION : 45 45 Attach depthStencil using DEPTH_STENCIL_ATTACHMENT 46 46 PASS fbo = gl.createFramebuffer() is non-null. 47 PASS g l.getError() is gl.NO_ERROR47 PASS getError was expected value: NO_ERROR : 48 48 Attach depthStencil using DEPTH_ATTACHMENT 49 49 PASS fbo = gl.createFramebuffer() is non-null. 50 PASS g l.getError() is gl.NO_ERROR50 PASS getError was expected value: NO_ERROR : 51 51 PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_UNSUPPORTED 52 PASS g l.getError() is gl.INVALID_FRAMEBUFFER_OPERATION53 PASS g l.getError() is gl.INVALID_FRAMEBUFFER_OPERATION52 PASS getError was expected value: INVALID_FRAMEBUFFER_OPERATION : 53 PASS getError was expected value: INVALID_FRAMEBUFFER_OPERATION : 54 54 Attach depthStencil using STENCIL_ATTACHMENT 55 55 PASS fbo = gl.createFramebuffer() is non-null. 56 PASS g l.getError() is gl.NO_ERROR56 PASS getError was expected value: NO_ERROR : 57 57 PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_UNSUPPORTED 58 PASS g l.getError() is gl.INVALID_FRAMEBUFFER_OPERATION59 PASS g l.getError() is gl.INVALID_FRAMEBUFFER_OPERATION58 PASS getError was expected value: INVALID_FRAMEBUFFER_OPERATION : 59 PASS getError was expected value: INVALID_FRAMEBUFFER_OPERATION : 60 60 Attach depth, then stencil, causing conflict 61 61 PASS fbo = gl.createFramebuffer() is non-null. 62 PASS g l.getError() is gl.NO_ERROR63 PASS g l.getError() is gl.NO_ERROR62 PASS getError was expected value: NO_ERROR : 63 PASS getError was expected value: NO_ERROR : 64 64 PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_UNSUPPORTED 65 65 Attach stencil, then depth, causing conflict 66 66 PASS fbo = gl.createFramebuffer() is non-null. 67 PASS g l.getError() is gl.NO_ERROR68 PASS g l.getError() is gl.NO_ERROR67 PASS getError was expected value: NO_ERROR : 68 PASS getError was expected value: NO_ERROR : 69 69 PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_UNSUPPORTED 70 70 Attach depth, then depthStencil, causing conflict 71 71 PASS fbo = gl.createFramebuffer() is non-null. 72 PASS g l.getError() is gl.NO_ERROR73 PASS g l.getError() is gl.NO_ERROR72 PASS getError was expected value: NO_ERROR : 73 PASS getError was expected value: NO_ERROR : 74 74 PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_UNSUPPORTED 75 75 Attach depthStencil, then depth, causing conflict 76 76 PASS fbo = gl.createFramebuffer() is non-null. 77 PASS g l.getError() is gl.NO_ERROR78 PASS g l.getError() is gl.NO_ERROR77 PASS getError was expected value: NO_ERROR : 78 PASS getError was expected value: NO_ERROR : 79 79 PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_UNSUPPORTED 80 80 Attach stencil, then depthStencil, causing conflict 81 81 PASS fbo = gl.createFramebuffer() is non-null. 82 PASS g l.getError() is gl.NO_ERROR83 PASS g l.getError() is gl.NO_ERROR82 PASS getError was expected value: NO_ERROR : 83 PASS getError was expected value: NO_ERROR : 84 84 PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_UNSUPPORTED 85 85 Attach depthStencil, then stencil, causing conflict 86 86 PASS fbo = gl.createFramebuffer() is non-null. 87 PASS g l.getError() is gl.NO_ERROR88 PASS g l.getError() is gl.NO_ERROR87 PASS getError was expected value: NO_ERROR : 88 PASS getError was expected value: NO_ERROR : 89 89 PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_UNSUPPORTED 90 90 Attach color renderbuffer with internalformat == RGBA4 91 91 PASS colorBuffer = gl.createRenderbuffer() is non-null. 92 PASS g l.getError() is gl.NO_ERROR92 PASS getError was expected value: NO_ERROR : 93 93 PASS fbo = gl.createFramebuffer() is non-null. 94 PASS g l.getError() is gl.NO_ERROR94 PASS getError was expected value: NO_ERROR : 95 95 Attach color renderbuffer with internalformat == RGB5_A1 96 96 PASS colorBuffer = gl.createRenderbuffer() is non-null. 97 PASS g l.getError() is gl.NO_ERROR97 PASS getError was expected value: NO_ERROR : 98 98 PASS fbo = gl.createFramebuffer() is non-null. 99 PASS g l.getError() is gl.NO_ERROR99 PASS getError was expected value: NO_ERROR : 100 100 Attach color renderbuffer with internalformat == RGB565 101 101 PASS colorBuffer = gl.createRenderbuffer() is non-null. 102 PASS g l.getError() is gl.NO_ERROR102 PASS getError was expected value: NO_ERROR : 103 103 PASS fbo = gl.createFramebuffer() is non-null. 104 PASS gl.getError() is gl.NO_ERROR 104 PASS getError was expected value: NO_ERROR : 105 Create and attach depthStencil renderbuffer 106 PASS depthStencilBuffer = gl.createRenderbuffer() is non-null. 107 PASS getError was expected value: NO_ERROR : 108 PASS gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH) is width 109 PASS gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT) is height 110 PASS gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_INTERNAL_FORMAT) is gl.DEPTH_STENCIL 111 PASS gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_RED_SIZE) is 0 112 PASS gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_GREEN_SIZE) is 0 113 PASS gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_BLUE_SIZE) is 0 114 PASS gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_ALPHA_SIZE) is 0 115 PASS gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_DEPTH_SIZE) > 0 is true 116 PASS gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_STENCIL_SIZE) > 0 is true 117 PASS getError was expected value: NO_ERROR : 118 PASS fbo = gl.createFramebuffer() is non-null. 119 PASS getError was expected value: NO_ERROR : 105 120 PASS successfullyParsed is true 106 121 -
trunk/LayoutTests/fast/canvas/webgl/framebuffer-object-attachment.html
r71190 r71367 26 26 gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, colorBuffer); 27 27 gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachment, gl.RENDERBUFFER, buffer); 28 shouldBe("gl.getError()", "gl.NO_ERROR");28 glErrorShouldBe(gl, gl.NO_ERROR); 29 29 if (isConflicted) { 30 30 shouldBe("gl.checkFramebufferStatus(gl.FRAMEBUFFER)", "gl.FRAMEBUFFER_UNSUPPORTED"); 31 31 gl.clear(gl.COLOR_BUFFER_BIT); 32 shouldBe("gl.getError()", "gl.INVALID_FRAMEBUFFER_OPERATION");32 glErrorShouldBe(gl, gl.INVALID_FRAMEBUFFER_OPERATION); 33 33 gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, new Uint8Array(width * height * 4)); 34 shouldBe("gl.getError()", "gl.INVALID_FRAMEBUFFER_OPERATION");34 glErrorShouldBe(gl, gl.INVALID_FRAMEBUFFER_OPERATION); 35 35 } 36 36 } … … 42 42 gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, colorBuffer); 43 43 gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachment0, gl.RENDERBUFFER, buffer0); 44 shouldBe("gl.getError()", "gl.NO_ERROR");44 glErrorShouldBe(gl, gl.NO_ERROR); 45 45 gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachment1, gl.RENDERBUFFER, buffer1); 46 shouldBe("gl.getError()", "gl.NO_ERROR");46 glErrorShouldBe(gl, gl.NO_ERROR); 47 47 if (isConflicted) 48 48 shouldBe("gl.checkFramebufferStatus(gl.FRAMEBUFFER)", "gl.FRAMEBUFFER_UNSUPPORTED"); … … 54 54 gl.bindRenderbuffer(gl.RENDERBUFFER, colorBuffer); 55 55 gl.renderbufferStorage(gl.RENDERBUFFER, internalformat, width, height); 56 shouldBe("gl.getError()", "gl.NO_ERROR");56 glErrorShouldBe(gl, gl.NO_ERROR); 57 57 testAttachment(gl.COLOR_ATTACHMENT0, colorBuffer, false); 58 } 59 60 function testDepthStencilRenderbuffer() 61 { 62 shouldBeNonNull("depthStencilBuffer = gl.createRenderbuffer()"); 63 gl.bindRenderbuffer(gl.RENDERBUFFER, depthStencilBuffer); 64 gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, width, height); 65 glErrorShouldBe(gl, gl.NO_ERROR); 66 shouldBe("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH)", "width"); 67 shouldBe("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT)", "height"); 68 shouldBe("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_INTERNAL_FORMAT)", "gl.DEPTH_STENCIL"); 69 shouldBe("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_RED_SIZE)", "0"); 70 shouldBe("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_GREEN_SIZE)", "0"); 71 shouldBe("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_BLUE_SIZE)", "0"); 72 shouldBe("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_ALPHA_SIZE)", "0"); 73 shouldBeTrue("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_DEPTH_SIZE) > 0"); 74 shouldBeTrue("gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_STENCIL_SIZE) > 0"); 75 glErrorShouldBe(gl, gl.NO_ERROR); 76 testAttachment(gl.DEPTH_STENCIL_ATTACHMENT, depthStencilBuffer, false); 58 77 } 59 78 … … 65 84 gl.bindRenderbuffer(gl.RENDERBUFFER, colorBuffer); 66 85 gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGBA4, width, height); 67 shouldBe("gl.getError()", "gl.NO_ERROR");86 glErrorShouldBe(gl, gl.NO_ERROR); 68 87 shouldBeNonNull("depthBuffer = gl.createRenderbuffer()"); 69 88 gl.bindRenderbuffer(gl.RENDERBUFFER, depthBuffer); 70 89 gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, width, height); 71 shouldBe("gl.getError()", "gl.NO_ERROR");90 glErrorShouldBe(gl, gl.NO_ERROR); 72 91 shouldBeNonNull("stencilBuffer = gl.createRenderbuffer()"); 73 92 gl.bindRenderbuffer(gl.RENDERBUFFER, stencilBuffer); 74 93 gl.renderbufferStorage(gl.RENDERBUFFER, gl.STENCIL_INDEX8, width, height); 75 shouldBe("gl.getError()", "gl.NO_ERROR");94 glErrorShouldBe(gl, gl.NO_ERROR); 76 95 shouldBeNonNull("depthStencilBuffer = gl.createRenderbuffer()"); 77 96 gl.bindRenderbuffer(gl.RENDERBUFFER, depthStencilBuffer); 78 97 gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_STENCIL, width, height); 79 shouldBe("gl.getError()", "gl.NO_ERROR");98 glErrorShouldBe(gl, gl.NO_ERROR); 80 99 81 100 debug("Attach depth using DEPTH_ATTACHMENT"); … … 120 139 testColorRenderbuffer(gl.RGB565); 121 140 141 debug("Create and attach depthStencil renderbuffer"); 142 testDepthStencilRenderbuffer(); 143 122 144 successfullyParsed = true; 123 145 </script> -
trunk/WebCore/ChangeLog
r71366 r71367 1 2010-11-03 Zhenyao Mo <zmo@google.com> 2 3 Reviewed by Kenneth Russell. 4 5 renderbufferStorage(DEPTH_STENCIL) shouldn't generate an error 6 https://bugs.webkit.org/show_bug.cgi?id=48891 7 8 * html/canvas/WebGLFramebuffer.cpp: 9 (WebCore::WebGLFramebuffer::isIncomplete): Considering the case where DEPTH_STENCIL is not supported. 10 * html/canvas/WebGLRenderbuffer.cpp: 11 (WebCore::WebGLRenderbuffer::WebGLRenderbuffer): Init added members. 12 * html/canvas/WebGLRenderbuffer.h: Add members and accessor functions. 13 (WebCore::WebGLRenderbuffer::setInternalFormat): 14 (WebCore::WebGLRenderbuffer::setSize): 15 (WebCore::WebGLRenderbuffer::getWidth): 16 (WebCore::WebGLRenderbuffer::getHeight): 17 (WebCore::WebGLRenderbuffer::setIsValid): 18 (WebCore::WebGLRenderbuffer::isValid): 19 * html/canvas/WebGLRenderingContext.cpp: 20 (WebCore::WebGLRenderingContext::initializeNewContext): Check if packed_depth_stencil extension exists. 21 (WebCore::WebGLRenderingContext::getRenderbufferParameter): Simulate the case for DEPTH_STENCIL where packed_depth_stencil is not supported. 22 (WebCore::WebGLRenderingContext::renderbufferStorage): Bypass the call if packed_depth_stencil is not supported. 23 * html/canvas/WebGLRenderingContext.h: 24 1 25 2010-11-04 Kavita Kanetkar <kkanetkar@chromium.org> 2 26 -
trunk/WebCore/html/canvas/WebGLFramebuffer.cpp
r71190 r71367 58 58 } 59 59 60 bool isValid(WebGLObject* attachedObject) 61 { 62 if (attachedObject && attachedObject->object() && attachedObject->isRenderbuffer()) { 63 if (!(reinterpret_cast<WebGLRenderbuffer*>(attachedObject))->isValid()) 64 return false; 65 } 66 return true; 67 } 68 60 69 } // anonymous namespace 61 70 … … 143 152 } 144 153 if (isDepthStencilAttached()) { 145 if (getInternalFormat(m_depthStencilAttachment.get()) != GraphicsContext3D::DEPTH_STENCIL) 154 if (getInternalFormat(m_depthStencilAttachment.get()) != GraphicsContext3D::DEPTH_STENCIL 155 || !isValid(m_depthStencilAttachment.get())) 146 156 return true; 147 157 count++; -
trunk/WebCore/html/canvas/WebGLRenderbuffer.cpp
r68424 r71367 43 43 , m_internalFormat(GraphicsContext3D::RGBA4) 44 44 , m_initialized(false) 45 , m_width(0) 46 , m_height(0) 47 , m_isValid(true) 45 48 { 46 49 setObject(context()->graphicsContext3D()->createRenderbuffer()); -
trunk/WebCore/html/canvas/WebGLRenderbuffer.h
r71190 r71367 45 45 m_initialized = false; 46 46 } 47 unsigned long getInternalFormat() const { return m_internalFormat; } 47 48 48 unsigned long getInternalFormat() const { return m_internalFormat; } 49 void setSize(unsigned long width, unsigned long height) 50 { 51 m_width = width; 52 m_height = height; 53 } 54 unsigned long getWidth() const { return m_width; } 55 unsigned long getHeight() const { return m_height; } 56 57 void setIsValid(bool isValid) { m_isValid = isValid; } 58 bool isValid() const { return m_isValid; } 49 59 50 60 bool isInitialized() const { return m_initialized; } … … 61 71 unsigned long m_internalFormat; 62 72 bool m_initialized; 73 unsigned long m_width, m_height; 74 bool m_isValid; // This is only false if internalFormat is DEPTH_STENCIL and packed_depth_stencil is not supported. 63 75 }; 64 76 -
trunk/WebCore/html/canvas/WebGLRenderingContext.cpp
r71291 r71367 35 35 #include "Console.h" 36 36 #include "DOMWindow.h" 37 #include "Extensions3D.h" 37 38 #include "FrameView.h" 38 39 #include "HTMLCanvasElement.h" … … 156 157 if (!isGLES2Compliant()) 157 158 initVertexAttrib0(); 159 160 if (isGLES2Compliant()) 161 m_isDepthStencilSupported = m_context->getExtensions()->supports("GL_OES_packed_depth_stencil"); 162 else 163 m_isDepthStencilSupported = m_context->getExtensions()->supports("GL_EXT_packed_depth_stencil"); 164 158 165 m_context->reshape(canvas()->width(), canvas()->height()); 159 166 m_context->viewport(0, 0, canvas()->width(), canvas()->height()); … … 1652 1659 return WebGLGetInfo(); 1653 1660 } 1661 if (!m_renderbufferBinding || !m_renderbufferBinding->object()) { 1662 m_context->synthesizeGLError(GraphicsContext3D::INVALID_OPERATION); 1663 return WebGLGetInfo(); 1664 } 1665 1666 if (m_renderbufferBinding->getInternalFormat() == GraphicsContext3D::DEPTH_STENCIL 1667 && !m_renderbufferBinding->isValid()) { 1668 ASSERT(!m_isDepthStencilSupported); 1669 long value = 0; 1670 switch (pname) { 1671 case GraphicsContext3D::RENDERBUFFER_WIDTH: 1672 value = static_cast<long>(m_renderbufferBinding->getWidth()); 1673 break; 1674 case GraphicsContext3D::RENDERBUFFER_HEIGHT: 1675 value = static_cast<long>(m_renderbufferBinding->getHeight()); 1676 break; 1677 case GraphicsContext3D::RENDERBUFFER_RED_SIZE: 1678 case GraphicsContext3D::RENDERBUFFER_GREEN_SIZE: 1679 case GraphicsContext3D::RENDERBUFFER_BLUE_SIZE: 1680 case GraphicsContext3D::RENDERBUFFER_ALPHA_SIZE: 1681 value = 0; 1682 break; 1683 case GraphicsContext3D::RENDERBUFFER_DEPTH_SIZE: 1684 value = 24; 1685 break; 1686 case GraphicsContext3D::RENDERBUFFER_STENCIL_SIZE: 1687 value = 8; 1688 break; 1689 case GraphicsContext3D::RENDERBUFFER_INTERNAL_FORMAT: 1690 return WebGLGetInfo(m_renderbufferBinding->getInternalFormat()); 1691 default: 1692 m_context->synthesizeGLError(GraphicsContext3D::INVALID_ENUM); 1693 return WebGLGetInfo(); 1694 } 1695 return WebGLGetInfo(value); 1696 } 1654 1697 1655 1698 WebGLStateRestorer(this, false); … … 1667 1710 return WebGLGetInfo(static_cast<long>(value)); 1668 1711 case GraphicsContext3D::RENDERBUFFER_INTERNAL_FORMAT: 1669 if (!m_renderbufferBinding) {1670 m_context->synthesizeGLError(GraphicsContext3D::INVALID_OPERATION);1671 return WebGLGetInfo();1672 }1673 1712 return WebGLGetInfo(m_renderbufferBinding->getInternalFormat()); 1674 1713 default: … … 2185 2224 if (isContextLost()) 2186 2225 return; 2226 if (target != GraphicsContext3D::RENDERBUFFER) { 2227 m_context->synthesizeGLError(GraphicsContext3D::INVALID_ENUM); 2228 return; 2229 } 2230 if (!m_renderbufferBinding || !m_renderbufferBinding->object()) { 2231 m_context->synthesizeGLError(GraphicsContext3D::INVALID_OPERATION); 2232 return; 2233 } 2187 2234 switch (internalformat) { 2188 2235 case GraphicsContext3D::DEPTH_COMPONENT16: … … 2191 2238 case GraphicsContext3D::RGB565: 2192 2239 case GraphicsContext3D::STENCIL_INDEX8: 2240 m_context->renderbufferStorage(target, internalformat, width, height); 2241 m_renderbufferBinding->setInternalFormat(internalformat); 2242 m_renderbufferBinding->setIsValid(true); 2243 cleanupAfterGraphicsCall(false); 2244 break; 2193 2245 case GraphicsContext3D::DEPTH_STENCIL: 2194 m_context->renderbufferStorage(target, internalformat, width, height); 2195 if (m_renderbufferBinding) 2196 m_renderbufferBinding->setInternalFormat(internalformat); 2197 cleanupAfterGraphicsCall(false); 2246 if (m_isDepthStencilSupported) { 2247 m_context->renderbufferStorage(target, internalformat, width, height); 2248 cleanupAfterGraphicsCall(false); 2249 } else 2250 m_renderbufferBinding->setSize(width, height); 2251 m_renderbufferBinding->setIsValid(m_isDepthStencilSupported); 2252 m_renderbufferBinding->setInternalFormat(internalformat); 2198 2253 break; 2199 2254 default: -
trunk/WebCore/html/canvas/WebGLRenderingContext.h
r71282 r71367 432 432 unsigned long m_stencilFuncMask; 433 433 434 bool m_isDepthStencilSupported; 435 434 436 // Helpers for getParameter and others 435 437 WebGLGetInfo getBooleanParameter(unsigned long pname);
Note: See TracChangeset
for help on using the changeset viewer.