Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(153)

Unified Diff: gpu/command_buffer/service/framebuffer_manager.cc

Issue 12545014: Implement EXT_draw_buffers WebGL extention support in command buffer. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();

Powered by Google App Engine
This is Rietveld 408576698