| Index: gpu/command_buffer/service/framebuffer_manager.cc
 | 
| diff --git a/gpu/command_buffer/service/framebuffer_manager.cc b/gpu/command_buffer/service/framebuffer_manager.cc
 | 
| index 48e503cb45b3d1e64986d369edfe70d7f3557c16..7dfba400d24704d31a79cba36c62655b1c81bba8 100644
 | 
| --- a/gpu/command_buffer/service/framebuffer_manager.cc
 | 
| +++ b/gpu/command_buffer/service/framebuffer_manager.cc
 | 
| @@ -119,6 +119,9 @@ class RenderbufferAttachment
 | 
|      renderbuffer_->AddToSignature(signature);
 | 
|    }
 | 
|  
 | 
| +  virtual void OnWillRenderTo() const OVERRIDE {}
 | 
| +  virtual void OnDidRenderTo() const OVERRIDE {}
 | 
| +
 | 
|   protected:
 | 
|    virtual ~RenderbufferAttachment() { }
 | 
|  
 | 
| @@ -243,6 +246,14 @@ class TextureAttachment
 | 
|          texture_ref_.get(), target_, level_, signature);
 | 
|    }
 | 
|  
 | 
| +  virtual void OnWillRenderTo() const OVERRIDE {
 | 
| +    texture_ref_->texture()->OnWillModifyPixels();
 | 
| +  }
 | 
| +
 | 
| +  virtual void OnDidRenderTo() const OVERRIDE {
 | 
| +    texture_ref_->texture()->OnDidModifyPixels();
 | 
| +  }
 | 
| +
 | 
|   protected:
 | 
|    virtual ~TextureAttachment() {}
 | 
|  
 | 
| @@ -615,6 +626,20 @@ void Framebuffer::OnTextureRefDetached(TextureRef* texture) {
 | 
|    manager_->OnTextureRefDetached(texture);
 | 
|  }
 | 
|  
 | 
| +void Framebuffer::OnWillRenderTo() const {
 | 
| +  for (AttachmentMap::const_iterator it = attachments_.begin();
 | 
| +       it != attachments_.end(); ++it) {
 | 
| +    it->second->OnWillRenderTo();
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +void Framebuffer::OnDidRenderTo() const {
 | 
| +  for (AttachmentMap::const_iterator it = attachments_.begin();
 | 
| +       it != attachments_.end(); ++it) {
 | 
| +    it->second->OnDidRenderTo();
 | 
| +  }
 | 
| +}
 | 
| +
 | 
|  bool FramebufferManager::GetClientId(
 | 
|      GLuint service_id, GLuint* client_id) const {
 | 
|    // This doesn't need to be fast. It's only used during slow queries.
 | 
| 
 |