| 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 405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 429 SkMatrix::kFill_ScaleToFit); | 430 SkMatrix::kFill_ScaleToFit); |
| 430 | 431 |
| 431 const SkBitmap* content = lock.sk_bitmap(); | 432 const SkBitmap* content = lock.sk_bitmap(); |
| 432 skia::RefPtr<SkShader> shader = skia::AdoptRef( | 433 skia::RefPtr<SkShader> shader = skia::AdoptRef( |
| 433 SkShader::CreateBitmapShader(*content, | 434 SkShader::CreateBitmapShader(*content, |
| 434 SkShader::kClamp_TileMode, | 435 SkShader::kClamp_TileMode, |
| 435 SkShader::kClamp_TileMode)); | 436 SkShader::kClamp_TileMode)); |
| 436 shader->setLocalMatrix(content_mat); | 437 shader->setLocalMatrix(content_mat); |
| 437 current_paint_.setShader(shader.get()); | 438 current_paint_.setShader(shader.get()); |
| 438 | 439 |
| 439 SkImageFilter* filter = quad->filter.get(); | 440 // TODO(ajuma): Remove this condition once general CSS filters are working |
| 440 if (filter) | 441 // correctly (http://crbug.com/160302), and add corresponding pixel tests. |
| 441 current_paint_.setImageFilter(filter); | 442 if (quad->filters.HasReferenceFilter()) { |
| 443 skia::RefPtr<SkImageFilter> filter = RenderSurfaceFilters::BuildImageFilter( |
| 444 quad->filters, content_texture->size()); |
| 445 if (filter) |
| 446 current_paint_.setImageFilter(filter.get()); |
| 447 } |
| 442 | 448 |
| 443 if (quad->mask_resource_id) { | 449 if (quad->mask_resource_id) { |
| 444 ResourceProvider::ScopedReadLockSoftware mask_lock(resource_provider_, | 450 ResourceProvider::ScopedReadLockSoftware mask_lock(resource_provider_, |
| 445 quad->mask_resource_id); | 451 quad->mask_resource_id); |
| 446 | 452 |
| 447 const SkBitmap* mask = mask_lock.sk_bitmap(); | 453 const SkBitmap* mask = mask_lock.sk_bitmap(); |
| 448 | 454 |
| 449 SkRect mask_rect = SkRect::MakeXYWH( | 455 SkRect mask_rect = SkRect::MakeXYWH( |
| 450 quad->mask_uv_rect.x() * mask->width(), | 456 quad->mask_uv_rect.x() * mask->width(), |
| 451 quad->mask_uv_rect.y() * mask->height(), | 457 quad->mask_uv_rect.y() * mask->height(), |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 548 EnsureBackbuffer(); | 554 EnsureBackbuffer(); |
| 549 else | 555 else |
| 550 DiscardBackbuffer(); | 556 DiscardBackbuffer(); |
| 551 } | 557 } |
| 552 | 558 |
| 553 void SoftwareRenderer::SetDiscardBackBufferWhenNotVisible(bool discard) { | 559 void SoftwareRenderer::SetDiscardBackBufferWhenNotVisible(bool discard) { |
| 554 // The software renderer always discards the backbuffer when not visible. | 560 // The software renderer always discards the backbuffer when not visible. |
| 555 } | 561 } |
| 556 | 562 |
| 557 } // namespace cc | 563 } // namespace cc |
| OLD | NEW |