Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2010 The Chromium Authors. All rights reserved. | 1 // Copyright 2010 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/gl_renderer.h" | 5 #include "cc/output/gl_renderer.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 759 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 770 | 770 |
| 771 if (disable_blending) | 771 if (disable_blending) |
| 772 SetBlendEnabled(true); | 772 SetBlendEnabled(true); |
| 773 } | 773 } |
| 774 | 774 |
| 775 // TODO(senorblanco): Cache this value so that we don't have to do it for both | 775 // TODO(senorblanco): Cache this value so that we don't have to do it for both |
| 776 // the surface and its replica. Apply filters to the contents texture. | 776 // the surface and its replica. Apply filters to the contents texture. |
| 777 SkBitmap filter_bitmap; | 777 SkBitmap filter_bitmap; |
| 778 SkScalar color_matrix[20]; | 778 SkScalar color_matrix[20]; |
| 779 bool use_color_matrix = false; | 779 bool use_color_matrix = false; |
| 780 if (quad->filter) { | 780 // TODO(ajuma): Always use RenderSurfaceFilters::BuildImageFilter, not just |
| 781 skia::RefPtr<SkColorFilter> cf; | 781 // when we have a reference filter. |
| 782 if (quad->filters.HasReferenceFilter()) { | |
| 783 skia::RefPtr<SkImageFilter> filter = RenderSurfaceFilters::BuildImageFilter( | |
| 784 quad->filters, contents_texture->size()); | |
| 785 if (filter) { | |
| 786 skia::RefPtr<SkColorFilter> cf; | |
| 782 | 787 |
| 783 { | 788 { |
|
enne (OOO)
2013/09/11 17:57:24
style nit: this is a seemingly unnecessary block.
danakj
2013/09/11 18:02:46
This is to keep the raw pointer scoped and ensure
| |
| 784 SkColorFilter* colorfilter_rawptr = NULL; | 789 SkColorFilter* colorfilter_rawptr = NULL; |
| 785 quad->filter->asColorFilter(&colorfilter_rawptr); | 790 filter->asColorFilter(&colorfilter_rawptr); |
| 786 cf = skia::AdoptRef(colorfilter_rawptr); | 791 cf = skia::AdoptRef(colorfilter_rawptr); |
| 787 } | 792 } |
| 788 | 793 |
| 789 if (cf && cf->asColorMatrix(color_matrix) && !quad->filter->getInput(0)) { | 794 if (cf && cf->asColorMatrix(color_matrix) && !filter->getInput(0)) { |
| 790 // We have a single color matrix as a filter; apply it locally | 795 // We have a single color matrix as a filter; apply it locally |
| 791 // in the compositor. | 796 // in the compositor. |
| 792 use_color_matrix = true; | 797 use_color_matrix = true; |
| 793 } else { | 798 } else { |
| 794 filter_bitmap = ApplyImageFilter(this, | 799 filter_bitmap = ApplyImageFilter(this, |
| 795 frame->offscreen_context_provider, | 800 frame->offscreen_context_provider, |
| 796 quad->rect.origin(), | 801 quad->rect.origin(), |
| 797 quad->filter.get(), | 802 filter.get(), |
| 798 contents_texture); | 803 contents_texture); |
| 804 } | |
| 799 } | 805 } |
| 800 } else if (!quad->filters.IsEmpty()) { | 806 } else if (!quad->filters.IsEmpty()) { |
| 801 FilterOperations optimized_filters = | 807 FilterOperations optimized_filters = |
| 802 RenderSurfaceFilters::Optimize(quad->filters); | 808 RenderSurfaceFilters::Optimize(quad->filters); |
| 803 | 809 |
| 804 if ((optimized_filters.size() == 1) && | 810 if ((optimized_filters.size() == 1) && |
| 805 (optimized_filters.at(0).type() == FilterOperation::COLOR_MATRIX)) { | 811 (optimized_filters.at(0).type() == FilterOperation::COLOR_MATRIX)) { |
| 806 memcpy( | 812 memcpy( |
| 807 color_matrix, optimized_filters.at(0).matrix(), sizeof(color_matrix)); | 813 color_matrix, optimized_filters.at(0).matrix(), sizeof(color_matrix)); |
| 808 use_color_matrix = true; | 814 use_color_matrix = true; |
| (...skipping 2331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3140 return; | 3146 return; |
| 3141 offscreen_context_labelled_ = true; | 3147 offscreen_context_labelled_ = true; |
| 3142 std::string unique_context_name = base::StringPrintf( | 3148 std::string unique_context_name = base::StringPrintf( |
| 3143 "%s-Offscreen-%p", settings_->compositor_name.c_str(), context_); | 3149 "%s-Offscreen-%p", settings_->compositor_name.c_str(), context_); |
| 3144 offscreen_context_provider->Context3d() | 3150 offscreen_context_provider->Context3d() |
| 3145 ->pushGroupMarkerEXT(unique_context_name.c_str()); | 3151 ->pushGroupMarkerEXT(unique_context_name.c_str()); |
| 3146 } | 3152 } |
| 3147 | 3153 |
| 3148 | 3154 |
| 3149 } // namespace cc | 3155 } // namespace cc |
| OLD | NEW |