| Index: cc/output/gl_renderer.cc
|
| diff --git a/cc/output/gl_renderer.cc b/cc/output/gl_renderer.cc
|
| index f4b1e575d3920391c6e667c5bc230b1f0496730a..99c45730c135b5b8bb3606533bd3082d1214adc7 100644
|
| --- a/cc/output/gl_renderer.cc
|
| +++ b/cc/output/gl_renderer.cc
|
| @@ -772,25 +772,31 @@ void GLRenderer::DrawRenderPassQuad(DrawingFrame* frame,
|
| SkBitmap filter_bitmap;
|
| SkScalar color_matrix[20];
|
| bool use_color_matrix = false;
|
| - if (quad->filter) {
|
| - skia::RefPtr<SkColorFilter> cf;
|
| -
|
| - {
|
| - SkColorFilter* colorfilter_rawptr = NULL;
|
| - quad->filter->asColorFilter(&colorfilter_rawptr);
|
| - cf = skia::AdoptRef(colorfilter_rawptr);
|
| - }
|
| + // TODO(ajuma): Always use RenderSurfaceFilters::BuildImageFilter, not just
|
| + // when we have a reference filter.
|
| + if (quad->filters.HasReferenceFilter()) {
|
| + skia::RefPtr<SkImageFilter> filter = RenderSurfaceFilters::BuildImageFilter(
|
| + quad->filters, contents_texture->size());
|
| + if (filter) {
|
| + skia::RefPtr<SkColorFilter> cf;
|
| +
|
| + {
|
| + SkColorFilter* colorfilter_rawptr = NULL;
|
| + filter->asColorFilter(&colorfilter_rawptr);
|
| + cf = skia::AdoptRef(colorfilter_rawptr);
|
| + }
|
|
|
| - if (cf && cf->asColorMatrix(color_matrix) && !quad->filter->getInput(0)) {
|
| - // We have a single color matrix as a filter; apply it locally
|
| - // in the compositor.
|
| - use_color_matrix = true;
|
| - } else {
|
| - filter_bitmap = ApplyImageFilter(this,
|
| - frame->offscreen_context_provider,
|
| - quad->rect.origin(),
|
| - quad->filter.get(),
|
| - contents_texture);
|
| + if (cf && cf->asColorMatrix(color_matrix) && !filter->getInput(0)) {
|
| + // We have a single color matrix as a filter; apply it locally
|
| + // in the compositor.
|
| + use_color_matrix = true;
|
| + } else {
|
| + filter_bitmap = ApplyImageFilter(this,
|
| + frame->offscreen_context_provider,
|
| + quad->rect.origin(),
|
| + filter.get(),
|
| + contents_texture);
|
| + }
|
| }
|
| } else if (!quad->filters.IsEmpty()) {
|
| FilterOperations optimized_filters =
|
|
|