| Index: gpu/command_buffer/service/context_group.cc
|
| ===================================================================
|
| --- gpu/command_buffer/service/context_group.cc (revision 187725)
|
| +++ gpu/command_buffer/service/context_group.cc (working copy)
|
| @@ -46,6 +46,8 @@
|
| max_fragment_uniform_vectors_(0u),
|
| max_varying_vectors_(0u),
|
| max_vertex_uniform_vectors_(0u),
|
| + max_color_attachments_(1u),
|
| + max_draw_buffers_(1u),
|
| program_cache_(NULL),
|
| feature_info_(new FeatureInfo()) {
|
| {
|
| @@ -100,9 +102,18 @@
|
| glGetIntegerv(GL_MAX_SAMPLES, &max_samples);
|
| }
|
|
|
| + if (feature_info_->feature_flags().ext_draw_buffers) {
|
| + GetIntegerv(GL_MAX_COLOR_ATTACHMENTS_EXT, &max_color_attachments_);
|
| + if (max_color_attachments_ < 1)
|
| + max_color_attachments_ = 1;
|
| + GetIntegerv(GL_MAX_DRAW_BUFFERS_ARB, &max_draw_buffers_);
|
| + if (max_draw_buffers_ < 1)
|
| + max_draw_buffers_ = 1;
|
| + }
|
| +
|
| buffer_manager_.reset(new BufferManager(
|
| memory_tracker_, feature_info_.get()));
|
| - framebuffer_manager_.reset(new FramebufferManager());
|
| + framebuffer_manager_.reset(new FramebufferManager(max_draw_buffers_));
|
| renderbuffer_manager_.reset(new RenderbufferManager(memory_tracker_,
|
| max_renderbuffer_size,
|
| max_samples));
|
| @@ -205,6 +216,13 @@
|
| }
|
|
|
| decoders_.push_back(base::AsWeakPtr<GLES2Decoder>(decoder));
|
| +
|
| + DCHECK_GT(max_draw_buffers_, 0u);
|
| + draw_buffers_.reset(new GLenum[max_draw_buffers_]);
|
| + draw_buffers_[0] = GL_BACK;
|
| + for (uint32 i = 1; i < max_draw_buffers_; ++i)
|
| + draw_buffers_[i] = GL_NONE;
|
| +
|
| return true;
|
| }
|
|
|
| @@ -330,5 +348,18 @@
|
| return result;
|
| }
|
|
|
| +GLenum ContextGroup::GetDrawBuffer(GLenum draw_buffer) const {
|
| + GLsizei index = static_cast<GLsizei>(
|
| + draw_buffer - GL_DRAW_BUFFER0_ARB);
|
| + DCHECK(index >= 0 && index < static_cast<GLsizei>(max_draw_buffers_));
|
| + return draw_buffers_[index];
|
| +}
|
| +
|
| +void ContextGroup::SetDrawBuffers(GLsizei n, const GLenum* bufs) {
|
| + DCHECK(n <= static_cast<GLsizei>(max_draw_buffers_));
|
| + for (GLsizei i = 0; i < n; ++i)
|
| + draw_buffers_[i] = bufs[i];
|
| +}
|
| +
|
| } // namespace gles2
|
| } // namespace gpu
|
|
|