Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 43 DECLARE_VIRTUAL_TRACE(); | 43 DECLARE_VIRTUAL_TRACE(); |
| 44 | 44 |
| 45 private: | 45 private: |
| 46 explicit WebGLRenderbufferAttachment(WebGLRenderbuffer*); | 46 explicit WebGLRenderbufferAttachment(WebGLRenderbuffer*); |
| 47 WebGLRenderbufferAttachment() { } | 47 WebGLRenderbufferAttachment() { } |
| 48 | 48 |
| 49 GLsizei width() const override; | 49 GLsizei width() const override; |
| 50 GLsizei height() const override; | 50 GLsizei height() const override; |
| 51 GLenum format() const override; | 51 GLenum format() const override; |
| 52 GLenum type() const override; | 52 GLenum type() const override; |
| 53 bool isCubeComplete() const override; | |
| 53 WebGLSharedObject* object() const override; | 54 WebGLSharedObject* object() const override; |
| 54 bool isSharedObject(WebGLSharedObject*) const override; | 55 bool isSharedObject(WebGLSharedObject*) const override; |
| 55 bool valid() const override; | 56 bool valid() const override; |
| 56 void onDetached(WebGraphicsContext3D*) override; | 57 void onDetached(WebGraphicsContext3D*) override; |
| 57 void attach(WebGraphicsContext3D*, GLenum target, GLenum attachment) overrid e; | 58 void attach(WebGraphicsContext3D*, GLenum target, GLenum attachment) overrid e; |
| 58 void unattach(WebGraphicsContext3D*, GLenum target, GLenum attachment) overr ide; | 59 void unattach(WebGraphicsContext3D*, GLenum target, GLenum attachment) overr ide; |
| 59 | 60 |
| 60 Member<WebGLRenderbuffer> m_renderbuffer; | 61 Member<WebGLRenderbuffer> m_renderbuffer; |
| 61 }; | 62 }; |
| 62 | 63 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 136 } else { | 137 } else { |
| 137 context->framebufferRenderbuffer(target, attachment, GL_RENDERBUFFER, 0) ; | 138 context->framebufferRenderbuffer(target, attachment, GL_RENDERBUFFER, 0) ; |
| 138 } | 139 } |
| 139 } | 140 } |
| 140 | 141 |
| 141 GLenum WebGLRenderbufferAttachment::type() const | 142 GLenum WebGLRenderbufferAttachment::type() const |
| 142 { | 143 { |
| 143 return WebGLTexture::getValidTypeForInternalFormat(m_renderbuffer->internalF ormat()); | 144 return WebGLTexture::getValidTypeForInternalFormat(m_renderbuffer->internalF ormat()); |
| 144 } | 145 } |
| 145 | 146 |
| 147 bool WebGLRenderbufferAttachment::isCubeComplete() const | |
| 148 { | |
| 149 return false; | |
|
zmo
2015/11/23 19:40:44
Maybe ASSERT_NOT_REACHED() here?
qiankun
2015/11/24 04:11:42
Done.
| |
| 150 } | |
| 151 | |
| 146 class WebGLTextureAttachment final : public WebGLFramebuffer::WebGLAttachment { | 152 class WebGLTextureAttachment final : public WebGLFramebuffer::WebGLAttachment { |
| 147 public: | 153 public: |
| 148 static WebGLFramebuffer::WebGLAttachment* create(WebGLTexture*, GLenum targe t, GLint level, GLint layer); | 154 static WebGLFramebuffer::WebGLAttachment* create(WebGLTexture*, GLenum targe t, GLint level, GLint layer); |
| 149 | 155 |
| 150 DECLARE_VIRTUAL_TRACE(); | 156 DECLARE_VIRTUAL_TRACE(); |
| 151 | 157 |
| 152 private: | 158 private: |
| 153 WebGLTextureAttachment(WebGLTexture*, GLenum target, GLint level, GLint laye r); | 159 WebGLTextureAttachment(WebGLTexture*, GLenum target, GLint level, GLint laye r); |
| 154 WebGLTextureAttachment() { } | 160 WebGLTextureAttachment() { } |
| 155 | 161 |
| 156 GLsizei width() const override; | 162 GLsizei width() const override; |
| 157 GLsizei height() const override; | 163 GLsizei height() const override; |
| 158 GLenum format() const override; | 164 GLenum format() const override; |
| 159 GLenum type() const override; | 165 GLenum type() const override; |
| 166 bool isCubeComplete() const override; | |
| 160 WebGLSharedObject* object() const override; | 167 WebGLSharedObject* object() const override; |
| 161 bool isSharedObject(WebGLSharedObject*) const override; | 168 bool isSharedObject(WebGLSharedObject*) const override; |
| 162 bool valid() const override; | 169 bool valid() const override; |
| 163 void onDetached(WebGraphicsContext3D*) override; | 170 void onDetached(WebGraphicsContext3D*) override; |
| 164 void attach(WebGraphicsContext3D*, GLenum target, GLenum attachment) overrid e; | 171 void attach(WebGraphicsContext3D*, GLenum target, GLenum attachment) overrid e; |
| 165 void unattach(WebGraphicsContext3D*, GLenum target, GLenum attachment) overr ide; | 172 void unattach(WebGraphicsContext3D*, GLenum target, GLenum attachment) overr ide; |
| 166 | 173 |
| 167 Member<WebGLTexture> m_texture; | 174 Member<WebGLTexture> m_texture; |
| 168 GLenum m_target; | 175 GLenum m_target; |
| 169 GLint m_level; | 176 GLint m_level; |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 247 context->framebufferTexture2D(target, attachment, m_target, 0, m_lev el); | 254 context->framebufferTexture2D(target, attachment, m_target, 0, m_lev el); |
| 248 } | 255 } |
| 249 } | 256 } |
| 250 } | 257 } |
| 251 | 258 |
| 252 GLenum WebGLTextureAttachment::type() const | 259 GLenum WebGLTextureAttachment::type() const |
| 253 { | 260 { |
| 254 return m_texture->getType(m_target, m_level); | 261 return m_texture->getType(m_target, m_level); |
| 255 } | 262 } |
| 256 | 263 |
| 264 bool WebGLTextureAttachment::isCubeComplete() const | |
| 265 { | |
| 266 return m_texture->isCubeComplete(); | |
| 267 } | |
| 268 | |
| 257 bool isColorRenderable(GLenum internalformat, bool includesFloat) | 269 bool isColorRenderable(GLenum internalformat, bool includesFloat) |
| 258 { | 270 { |
| 259 switch (internalformat) { | 271 switch (internalformat) { |
| 260 case GL_RGB: | 272 case GL_RGB: |
| 261 case GL_RGBA: | 273 case GL_RGBA: |
| 262 case GL_SRGB_ALPHA_EXT: | 274 case GL_SRGB_ALPHA_EXT: |
| 263 case GL_R8: | 275 case GL_R8: |
| 264 case GL_R8UI: | 276 case GL_R8UI: |
| 265 case GL_R8I: | 277 case GL_R8I: |
| 266 case GL_R16UI: | 278 case GL_R16UI: |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 443 *reason = "the internalformat of the attached image is not color-ren derable"; | 455 *reason = "the internalformat of the attached image is not color-ren derable"; |
| 444 return false; | 456 return false; |
| 445 } | 457 } |
| 446 break; | 458 break; |
| 447 } | 459 } |
| 448 | 460 |
| 449 if (!attachedObject->width() || !attachedObject->height()) { | 461 if (!attachedObject->width() || !attachedObject->height()) { |
| 450 *reason = "attachment has a 0 dimension"; | 462 *reason = "attachment has a 0 dimension"; |
| 451 return false; | 463 return false; |
| 452 } | 464 } |
| 465 | |
| 466 if (attachedObject->object()->isTexture() && !attachedObject->isCubeComplete ()) { | |
| 467 *reason ="attachment is not cube complete"; | |
|
Ken Russell (switch to Gerrit)
2015/11/24 00:37:03
Add space after =.
qiankun
2015/11/24 04:11:43
Done.
| |
| 468 return false; | |
| 469 } | |
| 470 | |
| 453 return true; | 471 return true; |
| 454 } | 472 } |
| 455 | 473 |
| 456 WebGLFramebuffer::WebGLAttachment* WebGLFramebuffer::getAttachment(GLenum attach ment) const | 474 WebGLFramebuffer::WebGLAttachment* WebGLFramebuffer::getAttachment(GLenum attach ment) const |
| 457 { | 475 { |
| 458 const AttachmentMap::const_iterator it = m_attachments.find(attachment); | 476 const AttachmentMap::const_iterator it = m_attachments.find(attachment); |
| 459 return (it != m_attachments.end()) ? it->value.get() : 0; | 477 return (it != m_attachments.end()) ? it->value.get() : 0; |
| 460 } | 478 } |
| 461 | 479 |
| 462 void WebGLFramebuffer::removeAttachmentFromBoundFramebuffer(GLenum target, GLenu m attachment) | 480 void WebGLFramebuffer::removeAttachmentFromBoundFramebuffer(GLenum target, GLenu m attachment) |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 678 return true; | 696 return true; |
| 679 } | 697 } |
| 680 | 698 |
| 681 DEFINE_TRACE(WebGLFramebuffer) | 699 DEFINE_TRACE(WebGLFramebuffer) |
| 682 { | 700 { |
| 683 visitor->trace(m_attachments); | 701 visitor->trace(m_attachments); |
| 684 WebGLContextObject::trace(visitor); | 702 WebGLContextObject::trace(visitor); |
| 685 } | 703 } |
| 686 | 704 |
| 687 } | 705 } |
| OLD | NEW |