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 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
426 SkMatrix::kFill_ScaleToFit); | 427 SkMatrix::kFill_ScaleToFit); |
427 | 428 |
428 const SkBitmap* content = lock.sk_bitmap(); | 429 const SkBitmap* content = lock.sk_bitmap(); |
429 skia::RefPtr<SkShader> shader = skia::AdoptRef( | 430 skia::RefPtr<SkShader> shader = skia::AdoptRef( |
430 SkShader::CreateBitmapShader(*content, | 431 SkShader::CreateBitmapShader(*content, |
431 SkShader::kClamp_TileMode, | 432 SkShader::kClamp_TileMode, |
432 SkShader::kClamp_TileMode)); | 433 SkShader::kClamp_TileMode)); |
433 shader->setLocalMatrix(content_mat); | 434 shader->setLocalMatrix(content_mat); |
434 current_paint_.setShader(shader.get()); | 435 current_paint_.setShader(shader.get()); |
435 | 436 |
436 SkImageFilter* filter = quad->filter.get(); | 437 if (quad->filters.HasReferenceFilter()) { |
ajuma
2013/09/09 17:35:36
I'm checking for a reference filter here just to m
Stephen White
2013/09/09 18:51:01
IIRC, the software renderer only ever used setFilt
danakj
2013/09/09 22:04:50
I think you should drop this if statement. It's no
ajuma
2013/09/10 21:17:58
Done.
danakj
2013/09/10 21:22:38
Do you know how the foreground filter test fails?
| |
437 if (filter) | 438 skia::RefPtr<SkImageFilter> filter = RenderSurfaceFilters::BuildImageFilter( |
438 current_paint_.setImageFilter(filter); | 439 quad->filters, content_texture->size()); |
440 current_paint_.setImageFilter(filter.get()); | |
441 } | |
439 | 442 |
440 if (quad->mask_resource_id) { | 443 if (quad->mask_resource_id) { |
441 ResourceProvider::ScopedReadLockSoftware mask_lock(resource_provider_, | 444 ResourceProvider::ScopedReadLockSoftware mask_lock(resource_provider_, |
442 quad->mask_resource_id); | 445 quad->mask_resource_id); |
443 | 446 |
444 const SkBitmap* mask = mask_lock.sk_bitmap(); | 447 const SkBitmap* mask = mask_lock.sk_bitmap(); |
445 | 448 |
446 SkRect mask_rect = SkRect::MakeXYWH( | 449 SkRect mask_rect = SkRect::MakeXYWH( |
447 quad->mask_uv_rect.x() * mask->width(), | 450 quad->mask_uv_rect.x() * mask->width(), |
448 quad->mask_uv_rect.y() * mask->height(), | 451 quad->mask_uv_rect.y() * mask->height(), |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
545 EnsureBackbuffer(); | 548 EnsureBackbuffer(); |
546 else | 549 else |
547 DiscardBackbuffer(); | 550 DiscardBackbuffer(); |
548 } | 551 } |
549 | 552 |
550 void SoftwareRenderer::SetDiscardBackBufferWhenNotVisible(bool discard) { | 553 void SoftwareRenderer::SetDiscardBackBufferWhenNotVisible(bool discard) { |
551 // The software renderer always discards the backbuffer when not visible. | 554 // The software renderer always discards the backbuffer when not visible. |
552 } | 555 } |
553 | 556 |
554 } // namespace cc | 557 } // namespace cc |
OLD | NEW |