OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/output/software_renderer.h" | 5 #include "cc/output/software_renderer.h" |
6 | 6 |
7 #include "base/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" |
8 #include "cc/base/math_util.h" | 8 #include "cc/base/math_util.h" |
9 #include "cc/output/compositor_frame.h" | 9 #include "cc/output/compositor_frame.h" |
10 #include "cc/output/compositor_frame_ack.h" | 10 #include "cc/output/compositor_frame_ack.h" |
11 #include "cc/output/compositor_frame_metadata.h" | 11 #include "cc/output/compositor_frame_metadata.h" |
12 #include "cc/output/copy_output_request.h" | 12 #include "cc/output/copy_output_request.h" |
13 #include "cc/output/output_surface.h" | 13 #include "cc/output/output_surface.h" |
| 14 #include "cc/output/render_surface_filters.h" |
14 #include "cc/output/software_output_device.h" | 15 #include "cc/output/software_output_device.h" |
15 #include "cc/quads/checkerboard_draw_quad.h" | 16 #include "cc/quads/checkerboard_draw_quad.h" |
16 #include "cc/quads/debug_border_draw_quad.h" | 17 #include "cc/quads/debug_border_draw_quad.h" |
17 #include "cc/quads/picture_draw_quad.h" | 18 #include "cc/quads/picture_draw_quad.h" |
18 #include "cc/quads/render_pass_draw_quad.h" | 19 #include "cc/quads/render_pass_draw_quad.h" |
19 #include "cc/quads/solid_color_draw_quad.h" | 20 #include "cc/quads/solid_color_draw_quad.h" |
20 #include "cc/quads/texture_draw_quad.h" | 21 #include "cc/quads/texture_draw_quad.h" |
21 #include "cc/quads/tile_draw_quad.h" | 22 #include "cc/quads/tile_draw_quad.h" |
22 #include "skia/ext/opacity_draw_filter.h" | 23 #include "skia/ext/opacity_draw_filter.h" |
23 #include "third_party/skia/include/core/SkCanvas.h" | 24 #include "third_party/skia/include/core/SkCanvas.h" |
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
433 SkMatrix::kFill_ScaleToFit); | 434 SkMatrix::kFill_ScaleToFit); |
434 | 435 |
435 const SkBitmap* content = lock.sk_bitmap(); | 436 const SkBitmap* content = lock.sk_bitmap(); |
436 skia::RefPtr<SkShader> shader = skia::AdoptRef( | 437 skia::RefPtr<SkShader> shader = skia::AdoptRef( |
437 SkShader::CreateBitmapShader(*content, | 438 SkShader::CreateBitmapShader(*content, |
438 SkShader::kClamp_TileMode, | 439 SkShader::kClamp_TileMode, |
439 SkShader::kClamp_TileMode)); | 440 SkShader::kClamp_TileMode)); |
440 shader->setLocalMatrix(content_mat); | 441 shader->setLocalMatrix(content_mat); |
441 current_paint_.setShader(shader.get()); | 442 current_paint_.setShader(shader.get()); |
442 | 443 |
443 SkImageFilter* filter = quad->filter.get(); | 444 // TODO(ajuma): Remove this condition once general CSS filters are working |
444 if (filter) | 445 // correctly (http://crbug.com/160302), and add corresponding pixel tests. |
445 current_paint_.setImageFilter(filter); | 446 if (quad->filters.HasReferenceFilter()) { |
| 447 skia::RefPtr<SkImageFilter> filter = RenderSurfaceFilters::BuildImageFilter( |
| 448 quad->filters, content_texture->size()); |
| 449 if (filter) |
| 450 current_paint_.setImageFilter(filter.get()); |
| 451 } |
446 | 452 |
447 if (quad->mask_resource_id) { | 453 if (quad->mask_resource_id) { |
448 ResourceProvider::ScopedReadLockSoftware mask_lock(resource_provider_, | 454 ResourceProvider::ScopedReadLockSoftware mask_lock(resource_provider_, |
449 quad->mask_resource_id); | 455 quad->mask_resource_id); |
450 | 456 |
451 const SkBitmap* mask = mask_lock.sk_bitmap(); | 457 const SkBitmap* mask = mask_lock.sk_bitmap(); |
452 | 458 |
453 SkRect mask_rect = SkRect::MakeXYWH( | 459 SkRect mask_rect = SkRect::MakeXYWH( |
454 quad->mask_uv_rect.x() * mask->width(), | 460 quad->mask_uv_rect.x() * mask->width(), |
455 quad->mask_uv_rect.y() * mask->height(), | 461 quad->mask_uv_rect.y() * mask->height(), |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
549 EnsureBackbuffer(); | 555 EnsureBackbuffer(); |
550 else | 556 else |
551 DiscardBackbuffer(); | 557 DiscardBackbuffer(); |
552 } | 558 } |
553 | 559 |
554 void SoftwareRenderer::SetDiscardBackBufferWhenNotVisible(bool discard) { | 560 void SoftwareRenderer::SetDiscardBackBufferWhenNotVisible(bool discard) { |
555 // The software renderer always discards the backbuffer when not visible. | 561 // The software renderer always discards the backbuffer when not visible. |
556 } | 562 } |
557 | 563 |
558 } // namespace cc | 564 } // namespace cc |
OLD | NEW |