Index: cc/output/software_renderer.cc |
diff --git a/cc/output/software_renderer.cc b/cc/output/software_renderer.cc |
index fa8c178df35f8f425ed1735d844f9a911f4ce771..ace1b30470ab1eeb69acc9dd49a6d463989fb14a 100644 |
--- a/cc/output/software_renderer.cc |
+++ b/cc/output/software_renderer.cc |
@@ -11,6 +11,7 @@ |
#include "cc/output/compositor_frame_metadata.h" |
#include "cc/output/copy_output_request.h" |
#include "cc/output/output_surface.h" |
+#include "cc/output/render_surface_filters.h" |
#include "cc/output/software_output_device.h" |
#include "cc/quads/checkerboard_draw_quad.h" |
#include "cc/quads/debug_border_draw_quad.h" |
@@ -440,9 +441,14 @@ void SoftwareRenderer::DrawRenderPassQuad(const DrawingFrame* frame, |
shader->setLocalMatrix(content_mat); |
current_paint_.setShader(shader.get()); |
- SkImageFilter* filter = quad->filter.get(); |
- if (filter) |
- current_paint_.setImageFilter(filter); |
+ // TODO(ajuma): Remove this condition once general CSS filters are working |
+ // correctly (http://crbug.com/160302), and add corresponding pixel tests. |
+ if (quad->filters.HasReferenceFilter()) { |
+ skia::RefPtr<SkImageFilter> filter = RenderSurfaceFilters::BuildImageFilter( |
+ quad->filters, content_texture->size()); |
+ if (filter) |
+ current_paint_.setImageFilter(filter.get()); |
+ } |
if (quad->mask_resource_id) { |
ResourceProvider::ScopedReadLockSoftware mask_lock(resource_provider_, |