| Index: cc/output/gl_renderer.cc
|
| diff --git a/cc/output/gl_renderer.cc b/cc/output/gl_renderer.cc
|
| index ac449a46f5df84bc66ffe091b6470f8c6a394cb9..71ec436195b2269241dfa00aff10a82f5a2d2936 100644
|
| --- a/cc/output/gl_renderer.cc
|
| +++ b/cc/output/gl_renderer.cc
|
| @@ -661,10 +661,9 @@ static skia::RefPtr<SkImage> ApplyImageFilter(
|
| desc.fHeight = source.height();
|
| desc.fConfig = kSkia8888_GrPixelConfig;
|
| desc.fOrigin = kBottomLeft_GrSurfaceOrigin;
|
| - GrAutoScratchTexture scratch_texture(
|
| - use_gr_context->context(), desc, GrContext::kExact_ScratchTexMatch);
|
| skia::RefPtr<GrTexture> backing_store =
|
| - skia::AdoptRef(scratch_texture.detach());
|
| + skia::AdoptRef(use_gr_context->context()->refScratchTexture(
|
| + desc, GrContext::kExact_ScratchTexMatch));
|
| if (!backing_store) {
|
| TRACE_EVENT_INSTANT0("cc",
|
| "ApplyImageFilter scratch texture allocation failed",
|
| @@ -823,10 +822,9 @@ static skia::RefPtr<SkImage> ApplyBlendModeWithBackdrop(
|
| desc.fHeight = source.height();
|
| desc.fConfig = kSkia8888_GrPixelConfig;
|
| desc.fOrigin = kBottomLeft_GrSurfaceOrigin;
|
| - GrAutoScratchTexture scratch_texture(
|
| - use_gr_context->context(), desc, GrContext::kExact_ScratchTexMatch);
|
| skia::RefPtr<GrTexture> backing_store =
|
| - skia::AdoptRef(scratch_texture.detach());
|
| + skia::AdoptRef(use_gr_context->context()->refScratchTexture(
|
| + desc, GrContext::kExact_ScratchTexMatch));
|
| if (!backing_store) {
|
| TRACE_EVENT_INSTANT0(
|
| "cc",
|
| @@ -1091,7 +1089,7 @@ void GLRenderer::DrawRenderPassQuad(DrawingFrame* frame,
|
|
|
| // TODO(senorblanco): Cache this value so that we don't have to do it for both
|
| // the surface and its replica. Apply filters to the contents texture.
|
| - skia::RefPtr<SkImage> filter_bitmap;
|
| + skia::RefPtr<SkImage> filter_image;
|
| SkScalar color_matrix[20];
|
| bool use_color_matrix = false;
|
| if (!quad->filters.IsEmpty()) {
|
| @@ -1111,13 +1109,12 @@ void GLRenderer::DrawRenderPassQuad(DrawingFrame* frame,
|
| // in the compositor.
|
| use_color_matrix = true;
|
| } else {
|
| - filter_bitmap =
|
| - ApplyImageFilter(ScopedUseGrContext::Create(this, frame),
|
| - resource_provider_,
|
| - quad->rect.origin(),
|
| - quad->filters_scale,
|
| - filter.get(),
|
| - contents_texture);
|
| + filter_image = ApplyImageFilter(ScopedUseGrContext::Create(this, frame),
|
| + resource_provider_,
|
| + quad->rect.origin(),
|
| + quad->filters_scale,
|
| + filter.get(),
|
| + contents_texture);
|
| }
|
| }
|
| }
|
| @@ -1144,10 +1141,10 @@ void GLRenderer::DrawRenderPassQuad(DrawingFrame* frame,
|
| // If blending is applied using shaders, the background texture with
|
| // filters will be used as backdrop for blending operation, so we don't
|
| // need to copy it to the frame buffer.
|
| - filter_bitmap =
|
| + filter_image =
|
| ApplyBlendModeWithBackdrop(ScopedUseGrContext::Create(this, frame),
|
| resource_provider_,
|
| - filter_bitmap,
|
| + filter_image,
|
| contents_texture,
|
| background_texture.get(),
|
| quad->shared_quad_state->blend_mode);
|
| @@ -1182,8 +1179,8 @@ void GLRenderer::DrawRenderPassQuad(DrawingFrame* frame,
|
| // this draw instead of having a separate copy of the background texture.
|
|
|
| scoped_ptr<ResourceProvider::ScopedSamplerGL> contents_resource_lock;
|
| - if (filter_bitmap) {
|
| - GrTexture* texture = filter_bitmap->getTexture();
|
| + if (filter_image) {
|
| + GrTexture* texture = filter_image->getTexture();
|
| DCHECK_EQ(GL_TEXTURE0, GetActiveTextureUnit(gl_));
|
| gl_->BindTexture(GL_TEXTURE_2D, texture->getTextureHandle());
|
| } else {
|
| @@ -1441,7 +1438,7 @@ void GLRenderer::DrawRenderPassQuad(DrawingFrame* frame,
|
|
|
| // Flush the compositor context before the filter bitmap goes out of
|
| // scope, so the draw gets processed before the filter texture gets deleted.
|
| - if (filter_bitmap)
|
| + if (filter_image)
|
| GLC(gl_, gl_->Flush());
|
|
|
| if (CanApplyBlendModeUsingBlendFunc(blend_mode))
|
|
|