Index: gpu/command_buffer/service/framebuffer_manager.cc |
diff --git a/gpu/command_buffer/service/framebuffer_manager.cc b/gpu/command_buffer/service/framebuffer_manager.cc |
index fddc3e6ab73a122621eff27b58caa7dd6f989807..22082dfa36d5b2b1ad1e71a26acca32a0a7a1027 100644 |
--- a/gpu/command_buffer/service/framebuffer_manager.cc |
+++ b/gpu/command_buffer/service/framebuffer_manager.cc |
@@ -63,8 +63,10 @@ class RenderbufferAttachment |
} |
virtual bool ValidForAttachmentType(GLenum attachment_type) { |
- // TODO(gman): Fill this out. |
- return true; |
+ uint32 need = GLES2Util::GetChannelsNeededForAttachmentType( |
+ attachment_type); |
+ uint32 have = GLES2Util::GetChannelsForFormat(internal_format()); |
+ return (need & have) != 0; |
} |
RenderbufferManager::RenderbufferInfo* renderbuffer() const { |
@@ -146,8 +148,15 @@ class TextureAttachment |
} |
virtual bool ValidForAttachmentType(GLenum attachment_type) { |
- // TODO(gman): Fill this out. |
- return true; |
+ GLenum type = 0; |
+ GLenum internal_format = 0; |
+ if (!texture_->GetLevelType(target_, level_, &type, &internal_format)) { |
+ return false; |
+ } |
+ uint32 need = GLES2Util::GetChannelsNeededForAttachmentType( |
+ attachment_type); |
+ uint32 have = GLES2Util::GetChannelsForFormat(internal_format); |
+ return (need & have) != 0; |
} |
private: |