Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(14)

Side by Side Diff: cc/blink/web_display_item_list_impl.cc

Issue 2230513005: Move visual rect unioning between paired items to cc::DisplayItemList. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Code review feedback. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/blink/web_display_item_list_impl.h ('k') | cc/layers/picture_image_layer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/blink/web_display_item_list_impl.h" 5 #include "cc/blink/web_display_item_list_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <vector> 10 #include <vector>
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 44
45 WebDisplayItemListImpl::WebDisplayItemListImpl( 45 WebDisplayItemListImpl::WebDisplayItemListImpl(
46 cc::DisplayItemList* display_list) 46 cc::DisplayItemList* display_list)
47 : display_item_list_(display_list) { 47 : display_item_list_(display_list) {
48 } 48 }
49 49
50 void WebDisplayItemListImpl::appendDrawingItem( 50 void WebDisplayItemListImpl::appendDrawingItem(
51 const blink::WebRect& visual_rect, 51 const blink::WebRect& visual_rect,
52 sk_sp<const SkPicture> picture) { 52 sk_sp<const SkPicture> picture) {
53 if (display_item_list_->RetainsIndividualDisplayItems()) { 53 if (display_item_list_->RetainsIndividualDisplayItems()) {
54 display_item_list_->CreateAndAppendItem<cc::DrawingDisplayItem>( 54 display_item_list_->CreateAndAppendDrawingItem<cc::DrawingDisplayItem>(
55 visual_rect, std::move(picture)); 55 visual_rect, std::move(picture));
56 } else { 56 } else {
57 cc::DrawingDisplayItem item(std::move(picture)); 57 cc::DrawingDisplayItem item(std::move(picture));
58 display_item_list_->RasterIntoCanvas(item); 58 display_item_list_->RasterIntoCanvas(item);
59 } 59 }
60 } 60 }
61 61
62 void WebDisplayItemListImpl::appendClipItem( 62 void WebDisplayItemListImpl::appendClipItem(
63 const blink::WebRect& visual_rect,
64 const blink::WebRect& clip_rect, 63 const blink::WebRect& clip_rect,
65 const blink::WebVector<SkRRect>& rounded_clip_rects) { 64 const blink::WebVector<SkRRect>& rounded_clip_rects) {
66 std::vector<SkRRect> rounded_rects; 65 std::vector<SkRRect> rounded_rects;
67 for (size_t i = 0; i < rounded_clip_rects.size(); ++i) { 66 for (size_t i = 0; i < rounded_clip_rects.size(); ++i) {
68 rounded_rects.push_back(rounded_clip_rects[i]); 67 rounded_rects.push_back(rounded_clip_rects[i]);
69 } 68 }
70 bool antialias = true; 69 bool antialias = true;
71 if (display_item_list_->RetainsIndividualDisplayItems()) { 70 if (display_item_list_->RetainsIndividualDisplayItems()) {
72 display_item_list_->CreateAndAppendItem<cc::ClipDisplayItem>( 71 display_item_list_->CreateAndAppendPairedBeginItem<cc::ClipDisplayItem>(
73 visual_rect, clip_rect, rounded_rects, antialias); 72 clip_rect, rounded_rects, antialias);
74 } else { 73 } else {
75 cc::ClipDisplayItem item(clip_rect, rounded_rects, antialias); 74 cc::ClipDisplayItem item(clip_rect, rounded_rects, antialias);
76 display_item_list_->RasterIntoCanvas(item); 75 display_item_list_->RasterIntoCanvas(item);
77 } 76 }
78 } 77 }
79 78
80 void WebDisplayItemListImpl::appendEndClipItem( 79 void WebDisplayItemListImpl::appendEndClipItem() {
81 const blink::WebRect& visual_rect) {
82 if (display_item_list_->RetainsIndividualDisplayItems()) { 80 if (display_item_list_->RetainsIndividualDisplayItems()) {
83 display_item_list_->CreateAndAppendItem<cc::EndClipDisplayItem>( 81 display_item_list_->CreateAndAppendPairedEndItem<cc::EndClipDisplayItem>();
84 visual_rect);
85 } else { 82 } else {
86 display_item_list_->RasterIntoCanvas(cc::EndClipDisplayItem()); 83 display_item_list_->RasterIntoCanvas(cc::EndClipDisplayItem());
87 } 84 }
88 } 85 }
89 86
90 void WebDisplayItemListImpl::appendClipPathItem( 87 void WebDisplayItemListImpl::appendClipPathItem(
91 const blink::WebRect& visual_rect,
92 const SkPath& clip_path, 88 const SkPath& clip_path,
93 SkRegion::Op clip_op, 89 SkRegion::Op clip_op,
94 bool antialias) { 90 bool antialias) {
95 if (display_item_list_->RetainsIndividualDisplayItems()) { 91 if (display_item_list_->RetainsIndividualDisplayItems()) {
96 display_item_list_->CreateAndAppendItem<cc::ClipPathDisplayItem>( 92 display_item_list_->CreateAndAppendPairedBeginItem<cc::ClipPathDisplayItem>(
97 visual_rect, clip_path, clip_op, antialias); 93 clip_path, clip_op, antialias);
98 } else { 94 } else {
99 cc::ClipPathDisplayItem item(clip_path, clip_op, antialias); 95 cc::ClipPathDisplayItem item(clip_path, clip_op, antialias);
100 display_item_list_->RasterIntoCanvas(item); 96 display_item_list_->RasterIntoCanvas(item);
101 } 97 }
102 } 98 }
103 99
104 void WebDisplayItemListImpl::appendEndClipPathItem( 100 void WebDisplayItemListImpl::appendEndClipPathItem() {
105 const blink::WebRect& visual_rect) {
106 if (display_item_list_->RetainsIndividualDisplayItems()) { 101 if (display_item_list_->RetainsIndividualDisplayItems()) {
107 display_item_list_->CreateAndAppendItem<cc::EndClipPathDisplayItem>( 102 display_item_list_
108 visual_rect); 103 ->CreateAndAppendPairedEndItem<cc::EndClipPathDisplayItem>();
109 } else { 104 } else {
110 display_item_list_->RasterIntoCanvas(cc::EndClipPathDisplayItem()); 105 display_item_list_->RasterIntoCanvas(cc::EndClipPathDisplayItem());
111 } 106 }
112 } 107 }
113 108
114 void WebDisplayItemListImpl::appendFloatClipItem( 109 void WebDisplayItemListImpl::appendFloatClipItem(
115 const blink::WebRect& visual_rect,
116 const blink::WebFloatRect& clip_rect) { 110 const blink::WebFloatRect& clip_rect) {
117 if (display_item_list_->RetainsIndividualDisplayItems()) { 111 if (display_item_list_->RetainsIndividualDisplayItems()) {
118 display_item_list_->CreateAndAppendItem<cc::FloatClipDisplayItem>( 112 display_item_list_
119 visual_rect, clip_rect); 113 ->CreateAndAppendPairedBeginItem<cc::FloatClipDisplayItem>(clip_rect);
120 } else { 114 } else {
121 cc::FloatClipDisplayItem item(clip_rect); 115 cc::FloatClipDisplayItem item(clip_rect);
122 display_item_list_->RasterIntoCanvas(item); 116 display_item_list_->RasterIntoCanvas(item);
123 } 117 }
124 } 118 }
125 119
126 void WebDisplayItemListImpl::appendEndFloatClipItem( 120 void WebDisplayItemListImpl::appendEndFloatClipItem() {
127 const blink::WebRect& visual_rect) {
128 if (display_item_list_->RetainsIndividualDisplayItems()) { 121 if (display_item_list_->RetainsIndividualDisplayItems()) {
129 display_item_list_->CreateAndAppendItem<cc::EndFloatClipDisplayItem>( 122 display_item_list_
130 visual_rect); 123 ->CreateAndAppendPairedEndItem<cc::EndFloatClipDisplayItem>();
131 } else { 124 } else {
132 display_item_list_->RasterIntoCanvas(cc::EndFloatClipDisplayItem()); 125 display_item_list_->RasterIntoCanvas(cc::EndFloatClipDisplayItem());
133 } 126 }
134 } 127 }
135 128
136 void WebDisplayItemListImpl::appendTransformItem( 129 void WebDisplayItemListImpl::appendTransformItem(
137 const blink::WebRect& visual_rect,
138 const SkMatrix44& matrix) { 130 const SkMatrix44& matrix) {
139 gfx::Transform transform(gfx::Transform::kSkipInitialization); 131 gfx::Transform transform(gfx::Transform::kSkipInitialization);
140 transform.matrix() = matrix; 132 transform.matrix() = matrix;
141 133
142 if (display_item_list_->RetainsIndividualDisplayItems()) { 134 if (display_item_list_->RetainsIndividualDisplayItems()) {
143 display_item_list_->CreateAndAppendItem<cc::TransformDisplayItem>( 135 display_item_list_
144 visual_rect, transform); 136 ->CreateAndAppendPairedBeginItem<cc::TransformDisplayItem>(transform);
145 } else { 137 } else {
146 cc::TransformDisplayItem item(transform); 138 cc::TransformDisplayItem item(transform);
147 display_item_list_->RasterIntoCanvas(item); 139 display_item_list_->RasterIntoCanvas(item);
148 } 140 }
149 } 141 }
150 142
151 void WebDisplayItemListImpl::appendEndTransformItem( 143 void WebDisplayItemListImpl::appendEndTransformItem() {
152 const blink::WebRect& visual_rect) {
153 if (display_item_list_->RetainsIndividualDisplayItems()) { 144 if (display_item_list_->RetainsIndividualDisplayItems()) {
154 display_item_list_->CreateAndAppendItem<cc::EndTransformDisplayItem>( 145 display_item_list_
155 visual_rect); 146 ->CreateAndAppendPairedEndItem<cc::EndTransformDisplayItem>();
156 } else { 147 } else {
157 display_item_list_->RasterIntoCanvas(cc::EndTransformDisplayItem()); 148 display_item_list_->RasterIntoCanvas(cc::EndTransformDisplayItem());
158 } 149 }
159 } 150 }
160 151
161 void WebDisplayItemListImpl::appendCompositingItem( 152 void WebDisplayItemListImpl::appendCompositingItem(
162 const blink::WebRect& visual_rect,
163 float opacity, 153 float opacity,
164 SkXfermode::Mode xfermode, 154 SkXfermode::Mode xfermode,
165 SkRect* bounds, 155 SkRect* bounds,
166 SkColorFilter* color_filter) { 156 SkColorFilter* color_filter) {
167 DCHECK_GE(opacity, 0.f); 157 DCHECK_GE(opacity, 0.f);
168 DCHECK_LE(opacity, 1.f); 158 DCHECK_LE(opacity, 1.f);
169 // TODO(ajuma): This should really be rounding instead of flooring the alpha 159 // TODO(ajuma): This should really be rounding instead of flooring the alpha
170 // value, but that breaks slimming paint reftests. 160 // value, but that breaks slimming paint reftests.
171 161
172 const bool kLcdTextRequiresOpaqueLayer = true; 162 const bool kLcdTextRequiresOpaqueLayer = true;
173 if (display_item_list_->RetainsIndividualDisplayItems()) { 163 if (display_item_list_->RetainsIndividualDisplayItems()) {
174 display_item_list_->CreateAndAppendItem<cc::CompositingDisplayItem>( 164 display_item_list_
175 visual_rect, static_cast<uint8_t>(gfx::ToFlooredInt(255 * opacity)), 165 ->CreateAndAppendPairedBeginItem<cc::CompositingDisplayItem>(
176 xfermode, bounds, sk_ref_sp(color_filter), kLcdTextRequiresOpaqueLayer); 166 static_cast<uint8_t>(gfx::ToFlooredInt(255 * opacity)), xfermode,
167 bounds, sk_ref_sp(color_filter), kLcdTextRequiresOpaqueLayer);
177 } else { 168 } else {
178 cc::CompositingDisplayItem item( 169 cc::CompositingDisplayItem item(
179 static_cast<uint8_t>(gfx::ToFlooredInt(255 * opacity)), xfermode, 170 static_cast<uint8_t>(gfx::ToFlooredInt(255 * opacity)), xfermode,
180 bounds, sk_ref_sp(color_filter), kLcdTextRequiresOpaqueLayer); 171 bounds, sk_ref_sp(color_filter), kLcdTextRequiresOpaqueLayer);
181 display_item_list_->RasterIntoCanvas(item); 172 display_item_list_->RasterIntoCanvas(item);
182 } 173 }
183 } 174 }
184 175
185 void WebDisplayItemListImpl::appendEndCompositingItem( 176 void WebDisplayItemListImpl::appendEndCompositingItem() {
186 const blink::WebRect& visual_rect) {
187 if (display_item_list_->RetainsIndividualDisplayItems()) { 177 if (display_item_list_->RetainsIndividualDisplayItems()) {
188 display_item_list_->CreateAndAppendItem<cc::EndCompositingDisplayItem>( 178 display_item_list_
189 visual_rect); 179 ->CreateAndAppendPairedEndItem<cc::EndCompositingDisplayItem>();
190 } else { 180 } else {
191 display_item_list_->RasterIntoCanvas(cc::EndCompositingDisplayItem()); 181 display_item_list_->RasterIntoCanvas(cc::EndCompositingDisplayItem());
192 } 182 }
193 } 183 }
194 184
195 void WebDisplayItemListImpl::appendFilterItem( 185 void WebDisplayItemListImpl::appendFilterItem(
196 const blink::WebRect& visual_rect,
197 const cc::FilterOperations& filters, 186 const cc::FilterOperations& filters,
198 const blink::WebFloatRect& bounds) { 187 const blink::WebFloatRect& bounds) {
199 if (display_item_list_->RetainsIndividualDisplayItems()) { 188 if (display_item_list_->RetainsIndividualDisplayItems()) {
200 display_item_list_->CreateAndAppendItem<cc::FilterDisplayItem>( 189 display_item_list_->CreateAndAppendPairedBeginItem<cc::FilterDisplayItem>(
201 visual_rect, filters, bounds); 190 filters, bounds);
202 } else { 191 } else {
203 cc::FilterDisplayItem item(filters, bounds); 192 cc::FilterDisplayItem item(filters, bounds);
204 display_item_list_->RasterIntoCanvas(item); 193 display_item_list_->RasterIntoCanvas(item);
205 } 194 }
206 } 195 }
207 196
208 void WebDisplayItemListImpl::appendEndFilterItem( 197 void WebDisplayItemListImpl::appendEndFilterItem() {
209 const blink::WebRect& visual_rect) {
210 if (display_item_list_->RetainsIndividualDisplayItems()) { 198 if (display_item_list_->RetainsIndividualDisplayItems()) {
211 display_item_list_->CreateAndAppendItem<cc::EndFilterDisplayItem>( 199 display_item_list_
212 visual_rect); 200 ->CreateAndAppendPairedEndItem<cc::EndFilterDisplayItem>();
213 } else { 201 } else {
214 display_item_list_->RasterIntoCanvas(cc::EndFilterDisplayItem()); 202 display_item_list_->RasterIntoCanvas(cc::EndFilterDisplayItem());
215 } 203 }
216 } 204 }
217 205
218 void WebDisplayItemListImpl::appendScrollItem( 206 void WebDisplayItemListImpl::appendScrollItem(
219 const blink::WebRect& visual_rect,
220 const blink::WebSize& scroll_offset, 207 const blink::WebSize& scroll_offset,
221 ScrollContainerId) { 208 ScrollContainerId) {
222 SkMatrix44 matrix(SkMatrix44::kUninitialized_Constructor); 209 SkMatrix44 matrix(SkMatrix44::kUninitialized_Constructor);
223 matrix.setTranslate(-scroll_offset.width, -scroll_offset.height, 0); 210 matrix.setTranslate(-scroll_offset.width, -scroll_offset.height, 0);
224 // TODO(wkorman): Should we translate the visual rect as well? 211 // TODO(wkorman): Should we translate the visual rect as well?
225 appendTransformItem(visual_rect, matrix); 212 appendTransformItem(matrix);
226 } 213 }
227 214
228 void WebDisplayItemListImpl::appendEndScrollItem( 215 void WebDisplayItemListImpl::appendEndScrollItem() {
229 const blink::WebRect& visual_rect) { 216 appendEndTransformItem();
230 appendEndTransformItem(visual_rect);
231 } 217 }
232 218
233 void WebDisplayItemListImpl::setIsSuitableForGpuRasterization(bool isSuitable) { 219 void WebDisplayItemListImpl::setIsSuitableForGpuRasterization(bool isSuitable) {
234 display_item_list_->SetIsSuitableForGpuRasterization(isSuitable); 220 display_item_list_->SetIsSuitableForGpuRasterization(isSuitable);
235 } 221 }
236 222
237 WebDisplayItemListImpl::~WebDisplayItemListImpl() { 223 WebDisplayItemListImpl::~WebDisplayItemListImpl() {
238 } 224 }
239 225
240 } // namespace cc_blink 226 } // namespace cc_blink
OLDNEW
« no previous file with comments | « cc/blink/web_display_item_list_impl.h ('k') | cc/layers/picture_image_layer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698