Index: gpu/command_buffer/service/framebuffer_manager.cc |
=================================================================== |
--- gpu/command_buffer/service/framebuffer_manager.cc (revision 186778) |
+++ gpu/command_buffer/service/framebuffer_manager.cc (working copy) |
@@ -254,6 +254,9 @@ |
has_been_bound_(false), |
framebuffer_complete_state_count_id_(0) { |
manager->StartTracking(this); |
+ draw_buffers_[0] = GL_COLOR_ATTACHMENT0; |
+ for (GLsizei i = 1; i < kMaxDrawBuffers; ++i) |
+ draw_buffers_[i] = GL_NONE; |
} |
Framebuffer::~Framebuffer() { |
@@ -402,6 +405,19 @@ |
return true; |
} |
+GLenum Framebuffer::GetDrawBuffer(GLenum draw_buffer) const { |
+ GLsizei index = static_cast<GLsizei>( |
+ draw_buffer - GL_DRAW_BUFFER0_ARB); |
+ CHECK(index >= 0 && index < kMaxDrawBuffers); |
greggman
2013/03/08 21:48:28
Do these need to be CHECKs? We don't do CHECKS for
Zhenyao Mo
2013/03/13 01:22:02
Done.
|
+ return draw_buffers_[index]; |
+} |
+ |
+void Framebuffer::SetDrawBuffers(GLsizei n, const GLenum* bufs) { |
+ CHECK(n <= kMaxDrawBuffers); |
greggman
2013/03/08 21:48:28
Same as above
Zhenyao Mo
2013/03/13 01:22:02
Done.
|
+ for (GLsizei i = 0; i < n; ++i) |
+ draw_buffers_[i] = bufs[i]; |
+} |
+ |
void Framebuffer::UnbindRenderbuffer( |
GLenum target, Renderbuffer* renderbuffer) { |
bool done; |
@@ -456,10 +472,6 @@ |
void Framebuffer::AttachRenderbuffer( |
GLenum attachment, Renderbuffer* renderbuffer) { |
- DCHECK(attachment == GL_COLOR_ATTACHMENT0 || |
- attachment == GL_DEPTH_ATTACHMENT || |
- attachment == GL_STENCIL_ATTACHMENT || |
- attachment == GL_DEPTH_STENCIL_ATTACHMENT); |
const Attachment* a = GetAttachment(attachment); |
if (a) |
a->DetachFromFramebuffer(); |
@@ -475,10 +487,6 @@ |
void Framebuffer::AttachTexture( |
GLenum attachment, Texture* texture, GLenum target, |
GLint level) { |
- DCHECK(attachment == GL_COLOR_ATTACHMENT0 || |
- attachment == GL_DEPTH_ATTACHMENT || |
- attachment == GL_STENCIL_ATTACHMENT || |
- attachment == GL_DEPTH_STENCIL_ATTACHMENT); |
const Attachment* a = GetAttachment(attachment); |
if (a) |
a->DetachFromFramebuffer(); |