Index: gpu/command_buffer/service/framebuffer_manager.h |
diff --git a/gpu/command_buffer/service/framebuffer_manager.h b/gpu/command_buffer/service/framebuffer_manager.h |
index 129d5f348ef65de63410a7cdf0635c0b872f4203..b68ab7d9f1209710bc994d02bc1ebb7c9344e2a5 100644 |
--- a/gpu/command_buffer/service/framebuffer_manager.h |
+++ b/gpu/command_buffer/service/framebuffer_manager.h |
@@ -64,6 +64,7 @@ class GPU_EXPORT Framebuffer : public base::RefCounted<Framebuffer> { |
} |
bool HasUnclearedAttachment(GLenum attachment) const; |
+ bool HasUnclearedColorAttachments() const; |
void MarkAttachmentAsCleared( |
RenderbufferManager* renderbuffer_manager, |
@@ -129,6 +130,14 @@ class GPU_EXPORT Framebuffer : public base::RefCounted<Framebuffer> { |
void SetDrawBuffers(GLsizei n, const GLenum* bufs); |
+ // If a color buffer is attached to GL_COLOR_ATTACHMENTi, enable that |
+ // draw buffer for glClear(). |
+ void PrepareDrawBuffersForClear() const; |
+ |
+ // Restore draw buffers states that have been changed in |
+ // PrepareDrawBuffersForClear(). |
+ void RestoreDrawBuffersAfterClear() const; |
+ |
// Return true if any draw buffers has an alpha channel. |
bool HasAlphaMRT() const; |
@@ -163,6 +172,10 @@ class GPU_EXPORT Framebuffer : public base::RefCounted<Framebuffer> { |
return framebuffer_complete_state_count_id_; |
} |
+ // Helper function for PrepareDrawBuffersForClear() and |
+ // RestoreDrawBuffersAfterClear(). |
+ void ChangeDrawBuffersHelper(bool recover) const; |
+ |
// The managers that owns this. |
FramebufferManager* manager_; |