Index: content/common/gpu/client/gl_helper.cc |
diff --git a/content/common/gpu/client/gl_helper.cc b/content/common/gpu/client/gl_helper.cc |
index ef862966fad79849a252fce6cb2f18a8043fd1aa..8f37d0f58417273f25eb0845ba3c1e83736ff61b 100644 |
--- a/content/common/gpu/client/gl_helper.cc |
+++ b/content/common/gpu/client/gl_helper.cc |
@@ -271,7 +271,8 @@ class GLHelper::CopyTextureToImpl { |
WebKit::WebGLId CopyAndScaleTexture(WebGLId texture, |
const gfx::Size& src_size, |
- const gfx::Size& dst_size); |
+ const gfx::Size& dst_size, |
+ WebKit::WebGLId texture_out = 0); |
private: |
// A single request to CropScaleReadbackAndCleanTexture. |
@@ -317,7 +318,8 @@ class GLHelper::CopyTextureToImpl { |
WebGLId ScaleTexture(WebGLId src_texture, |
const gfx::Size& src_size, |
const gfx::Rect& src_subrect, |
- const gfx::Size& dst_size); |
+ const gfx::Size& dst_size, |
+ WebKit::WebGLId texture_out); |
// Deletes the context for GLHelperThread. |
void DeleteContextForThread(); |
@@ -423,8 +425,9 @@ WebGLId GLHelper::CopyTextureToImpl::ScaleTexture( |
WebGLId src_texture, |
const gfx::Size& src_size, |
const gfx::Rect& src_subrect, |
- const gfx::Size& dst_size) { |
- WebGLId dst_texture = context_->createTexture(); |
+ const gfx::Size& dst_size, |
+ WebKit::WebGLId texture_out) { |
+ WebGLId dst_texture = texture_out ? texture_out : context_->createTexture(); |
{ |
ScopedFramebuffer dst_framebuffer(context_, context_->createFramebuffer()); |
ScopedFramebufferBinder<GL_FRAMEBUFFER> framebuffer_binder( |
@@ -513,7 +516,7 @@ void GLHelper::CopyTextureToImpl::CropScaleReadbackAndCleanTexture( |
return; |
} |
- WebGLId texture = ScaleTexture(src_texture, src_size, src_subrect, dst_size); |
+ WebGLId texture = ScaleTexture(src_texture, src_size, src_subrect, dst_size, 0); |
context_->flush(); |
scoped_refptr<Request> request = |
new Request(this, texture, dst_size, out, callback); |
@@ -550,8 +553,10 @@ void GLHelper::CopyTextureToImpl::ReadbackTextureSync(WebGLId texture, |
WebKit::WebGLId GLHelper::CopyTextureToImpl::CopyAndScaleTexture( |
WebGLId src_texture, |
const gfx::Size& src_size, |
- const gfx::Size& dst_size) { |
- return ScaleTexture(src_texture, src_size, gfx::Rect(src_size), dst_size); |
+ const gfx::Size& dst_size, |
+ WebKit::WebGLId texture_out) { |
+ return ScaleTexture(src_texture, src_size, gfx::Rect(src_size), dst_size, |
+ texture_out); |
} |
void GLHelper::CopyTextureToImpl::ReadBackFramebuffer( |
@@ -713,18 +718,22 @@ void GLHelper::ReadbackTextureSync(WebKit::WebGLId texture, |
} |
WebKit::WebGLId GLHelper::CopyTexture(WebKit::WebGLId texture, |
- const gfx::Size& size) { |
+ const gfx::Size& size, |
+ WebKit::WebGLId texture_out) { |
InitCopyTextToImpl(); |
- return copy_texture_to_impl_->CopyAndScaleTexture(texture, size, size); |
+ return copy_texture_to_impl_->CopyAndScaleTexture(texture, size, size, |
+ texture_out); |
} |
WebKit::WebGLId GLHelper::CopyAndScaleTexture(WebKit::WebGLId texture, |
const gfx::Size& src_size, |
- const gfx::Size& dst_size) { |
+ const gfx::Size& dst_size, |
+ WebKit::WebGLId texture_out) { |
InitCopyTextToImpl(); |
return copy_texture_to_impl_->CopyAndScaleTexture(texture, |
src_size, |
- dst_size); |
+ dst_size, |
+ texture_out); |
} |
WebGLId GLHelper::CompileShaderFromSource( |