summaryrefslogtreecommitdiffstats
path: root/chromium/gpu/command_buffer/service/framebuffer_manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/gpu/command_buffer/service/framebuffer_manager.h')
-rw-r--r--chromium/gpu/command_buffer/service/framebuffer_manager.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/chromium/gpu/command_buffer/service/framebuffer_manager.h b/chromium/gpu/command_buffer/service/framebuffer_manager.h
index c469bf87435..b68ab7d9f12 100644
--- a/chromium/gpu/command_buffer/service/framebuffer_manager.h
+++ b/chromium/gpu/command_buffer/service/framebuffer_manager.h
@@ -49,6 +49,8 @@ class GPU_EXPORT Framebuffer : public base::RefCounted<Framebuffer> {
GLenum attachment_type, uint32 max_color_attachments) = 0;
virtual void AddToSignature(
TextureManager* texture_manager, std::string* signature) const = 0;
+ virtual void OnWillRenderTo() const = 0;
+ virtual void OnDidRenderTo() const = 0;
protected:
friend class base::RefCounted<Attachment>;
@@ -62,6 +64,7 @@ class GPU_EXPORT Framebuffer : public base::RefCounted<Framebuffer> {
}
bool HasUnclearedAttachment(GLenum attachment) const;
+ bool HasUnclearedColorAttachments() const;
void MarkAttachmentAsCleared(
RenderbufferManager* renderbuffer_manager,
@@ -127,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;
@@ -137,6 +148,8 @@ class GPU_EXPORT Framebuffer : public base::RefCounted<Framebuffer> {
}
void OnTextureRefDetached(TextureRef* texture);
+ void OnWillRenderTo() const;
+ void OnDidRenderTo() const;
private:
friend class FramebufferManager;
@@ -159,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_;