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

Side by Side Diff: content/common/cc_messages.cc

Issue 30593005: IPC pickling optimizations for geometry types. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ccmessagesperf-geom: maintain check on Rect size from before Created 7 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | content/public/common/common_param_traits.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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 "content/common/cc_messages.h" 5 #include "content/common/cc_messages.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "cc/output/compositor_frame.h" 8 #include "cc/output/compositor_frame.h"
9 #include "cc/output/filter_operations.h" 9 #include "cc/output/filter_operations.h"
10 #include "content/public/common/common_param_traits.h" 10 #include "content/public/common/common_param_traits.h"
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 235
236 void ParamTraits<skia::RefPtr<SkImageFilter> >::Log( 236 void ParamTraits<skia::RefPtr<SkImageFilter> >::Log(
237 const param_type& p, std::string* l) { 237 const param_type& p, std::string* l) {
238 l->append("("); 238 l->append("(");
239 LogParam(p.get() ? p->countInputs() : 0, l); 239 LogParam(p.get() ? p->countInputs() : 0, l);
240 l->append(")"); 240 l->append(")");
241 } 241 }
242 242
243 void ParamTraits<gfx::Transform>::Write( 243 void ParamTraits<gfx::Transform>::Write(
244 Message* m, const param_type& p) { 244 Message* m, const param_type& p) {
245 WriteParam(m, p.matrix().get(0, 0)); 245 #ifdef SK_MSCALAR_IS_FLOAT
246 WriteParam(m, p.matrix().get(1, 0)); 246 float column_major_data[16];
247 WriteParam(m, p.matrix().get(2, 0)); 247 p.matrix().asColMajorf(column_major_data);
248 WriteParam(m, p.matrix().get(3, 0)); 248 #else
249 WriteParam(m, p.matrix().get(0, 1)); 249 double column_major_data[16];
250 WriteParam(m, p.matrix().get(1, 1)); 250 p.matrix().asColMajord(column_major_data);
251 WriteParam(m, p.matrix().get(2, 1)); 251 #endif
252 WriteParam(m, p.matrix().get(3, 1)); 252 m->WriteBytes(&column_major_data, sizeof(SkMScalar) * 16);
253 WriteParam(m, p.matrix().get(0, 2));
254 WriteParam(m, p.matrix().get(1, 2));
255 WriteParam(m, p.matrix().get(2, 2));
256 WriteParam(m, p.matrix().get(3, 2));
257 WriteParam(m, p.matrix().get(0, 3));
258 WriteParam(m, p.matrix().get(1, 3));
259 WriteParam(m, p.matrix().get(2, 3));
260 WriteParam(m, p.matrix().get(3, 3));
261 } 253 }
262 254
263 bool ParamTraits<gfx::Transform>::Read( 255 bool ParamTraits<gfx::Transform>::Read(
264 const Message* m, PickleIterator* iter, param_type* r) { 256 const Message* m, PickleIterator* iter, param_type* r) {
265 // Note: In this function, "m12" means 1st row, 2nd column of the matrix. 257 const char* column_major_data;
266 // This is consistent with Skia's row-column notation, but backwards from 258 if (!m->ReadBytes(iter, &column_major_data, sizeof(SkMScalar) * 16))
267 // WebCore's column-row notation. 259 return false;
268 SkMScalar m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, 260 r->matrix().setColMajor(
269 m42, m43, m44; 261 reinterpret_cast<const SkMScalar*>(column_major_data));
270 262 return true;
271 bool success =
272 ReadParam(m, iter, &m11) &&
273 ReadParam(m, iter, &m21) &&
274 ReadParam(m, iter, &m31) &&
275 ReadParam(m, iter, &m41) &&
276 ReadParam(m, iter, &m12) &&
277 ReadParam(m, iter, &m22) &&
278 ReadParam(m, iter, &m32) &&
279 ReadParam(m, iter, &m42) &&
280 ReadParam(m, iter, &m13) &&
281 ReadParam(m, iter, &m23) &&
282 ReadParam(m, iter, &m33) &&
283 ReadParam(m, iter, &m43) &&
284 ReadParam(m, iter, &m14) &&
285 ReadParam(m, iter, &m24) &&
286 ReadParam(m, iter, &m34) &&
287 ReadParam(m, iter, &m44);
288
289 if (success) {
290 r->matrix().set(0, 0, m11);
291 r->matrix().set(1, 0, m21);
292 r->matrix().set(2, 0, m31);
293 r->matrix().set(3, 0, m41);
294 r->matrix().set(0, 1, m12);
295 r->matrix().set(1, 1, m22);
296 r->matrix().set(2, 1, m32);
297 r->matrix().set(3, 1, m42);
298 r->matrix().set(0, 2, m13);
299 r->matrix().set(1, 2, m23);
300 r->matrix().set(2, 2, m33);
301 r->matrix().set(3, 2, m43);
302 r->matrix().set(0, 3, m14);
303 r->matrix().set(1, 3, m24);
304 r->matrix().set(2, 3, m34);
305 r->matrix().set(3, 3, m44);
306 }
307
308 return success;
309 } 263 }
310 264
311 void ParamTraits<gfx::Transform>::Log( 265 void ParamTraits<gfx::Transform>::Log(
312 const param_type& p, std::string* l) { 266 const param_type& p, std::string* l) {
267 #ifdef SK_MSCALAR_IS_FLOAT
268 float row_major_data[16];
269 p.matrix().asRowMajorf(row_major_data);
270 #else
271 double row_major_data[16];
272 p.matrix().asRowMajord(row_major_data);
273 #endif
313 l->append("("); 274 l->append("(");
314 LogParam(p.matrix().get(0, 0), l); 275 for (int i = 0; i < 16; ++i) {
315 l->append(", "); 276 if (i > 0)
316 LogParam(p.matrix().get(1, 0), l); 277 l->append(", ");
317 l->append(", "); 278 LogParam(row_major_data[i], l);
318 LogParam(p.matrix().get(2, 0), l); 279 }
319 l->append(", ");
320 LogParam(p.matrix().get(3, 0), l);
321 l->append(", ");
322 LogParam(p.matrix().get(0, 1), l);
323 l->append(", ");
324 LogParam(p.matrix().get(1, 1), l);
325 l->append(", ");
326 LogParam(p.matrix().get(2, 1), l);
327 l->append(", ");
328 LogParam(p.matrix().get(3, 1), l);
329 l->append(", ");
330 LogParam(p.matrix().get(0, 2), l);
331 l->append(", ");
332 LogParam(p.matrix().get(1, 2), l);
333 l->append(", ");
334 LogParam(p.matrix().get(2, 2), l);
335 l->append(", ");
336 LogParam(p.matrix().get(3, 2), l);
337 l->append(", ");
338 LogParam(p.matrix().get(0, 3), l);
339 l->append(", ");
340 LogParam(p.matrix().get(1, 3), l);
341 l->append(", ");
342 LogParam(p.matrix().get(2, 3), l);
343 l->append(", ");
344 LogParam(p.matrix().get(3, 3), l);
345 l->append(") "); 280 l->append(") ");
346 } 281 }
347 282
348 void ParamTraits<cc::RenderPass>::Write( 283 void ParamTraits<cc::RenderPass>::Write(
349 Message* m, const param_type& p) { 284 Message* m, const param_type& p) {
350 WriteParam(m, p.id); 285 WriteParam(m, p.id);
351 WriteParam(m, p.output_rect); 286 WriteParam(m, p.output_rect);
352 WriteParam(m, p.damage_rect); 287 WriteParam(m, p.damage_rect);
353 WriteParam(m, p.transform_to_root_target); 288 WriteParam(m, p.transform_to_root_target);
354 WriteParam(m, p.has_transparent_background); 289 WriteParam(m, p.has_transparent_background);
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after
777 l->append(", ["); 712 l->append(", [");
778 for (size_t i = 0; i < p.render_pass_list.size(); ++i) { 713 for (size_t i = 0; i < p.render_pass_list.size(); ++i) {
779 if (i) 714 if (i)
780 l->append(", "); 715 l->append(", ");
781 LogParam(*p.render_pass_list[i], l); 716 LogParam(*p.render_pass_list[i], l);
782 } 717 }
783 l->append("])"); 718 l->append("])");
784 } 719 }
785 720
786 } // namespace IPC 721 } // namespace IPC
OLDNEW
« no previous file with comments | « no previous file | content/public/common/common_param_traits.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698