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

Side by Side Diff: src/core/SkPictureRecord.cpp

Issue 12843028: Add testing of optimizations to GM (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: compiler warning/error fixes Created 7 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « include/core/SkPicture.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 #include "SkPictureRecord.h" 8 #include "SkPictureRecord.h"
9 #include "SkTSearch.h" 9 #include "SkTSearch.h"
10 #include "SkPixelRef.h" 10 #include "SkPixelRef.h"
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 convert_command_to_noop(writer, saveLayerInfo.fOffset); 405 convert_command_to_noop(writer, saveLayerInfo.fOffset);
406 uint32_t* ptr = writer->peek32(dbmInfo.fOffset+dbmPaintOffset); 406 uint32_t* ptr = writer->peek32(dbmInfo.fOffset+dbmPaintOffset);
407 SkASSERT(dbmPaintId == *ptr); 407 SkASSERT(dbmPaintId == *ptr);
408 *ptr = data->index(); 408 *ptr = data->index();
409 return true; 409 return true;
410 } 410 }
411 411
412 /* 412 /*
413 * Restore has just been called (but not recorded), look back at the 413 * Restore has just been called (but not recorded), look back at the
414 * matching save* and see if we are in the configuration: 414 * matching save* and see if we are in the configuration:
415 * SAVE_LAYER 415 * SAVE_LAYER (with NULL == bounds)
416 * SAVE 416 * SAVE
417 * CLIP_RECT 417 * CLIP_RECT
418 * DRAW_BITMAP|DRAW_BITMAP_MATRIX|DRAW_BITMAP_NINE|DRAW_BITMAP_RECT_TO_R ECT 418 * DRAW_BITMAP|DRAW_BITMAP_MATRIX|DRAW_BITMAP_NINE|DRAW_BITMAP_RECT_TO_R ECT
419 * RESTORE 419 * RESTORE
420 * RESTORE 420 * RESTORE
421 * where the saveLayer's color can be moved into the drawBitmap*'s paint 421 * where the saveLayer's color can be moved into the drawBitmap*'s paint
422 */ 422 */
423 static bool remove_save_layer2(SkWriter32* writer, int32_t offset, 423 static bool remove_save_layer2(SkWriter32* writer, int32_t offset,
424 SkPaintDictionary* paintDict) { 424 SkPaintDictionary* paintDict) {
425 425
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 if (fRestoreOffsetStack.count() == 0) { 558 if (fRestoreOffsetStack.count() == 0) {
559 return; 559 return;
560 } 560 }
561 561
562 if (fRestoreOffsetStack.count() == fFirstSavedLayerIndex) { 562 if (fRestoreOffsetStack.count() == fFirstSavedLayerIndex) {
563 fFirstSavedLayerIndex = kNoSavedLayerIndex; 563 fFirstSavedLayerIndex = kNoSavedLayerIndex;
564 } 564 }
565 565
566 uint32_t initialOffset, size; 566 uint32_t initialOffset, size;
567 size_t opt; 567 size_t opt;
568 for (opt = 0; opt < SK_ARRAY_COUNT(gPictureRecordOpts); ++opt) { 568 if (!(fRecordFlags & SkPicture::kDisableRecordOptimizations_RecordingFlag)) {
569 if ((*gPictureRecordOpts[opt].fProc)(&fWriter, fRestoreOffsetStack.top() , &fPaints)) { 569 for (opt = 0; opt < SK_ARRAY_COUNT(gPictureRecordOpts); ++opt) {
570 // Some optimization fired so don't add the RESTORE 570 if ((*gPictureRecordOpts[opt].fProc)(&fWriter, fRestoreOffsetStack.t op(), &fPaints)) {
571 size = 0; 571 // Some optimization fired so don't add the RESTORE
572 initialOffset = fWriter.size(); 572 size = 0;
573 apply_optimization_to_bbh(gPictureRecordOpts[opt].fType, 573 initialOffset = fWriter.size();
574 fStateTree, fBoundingHierarchy); 574 apply_optimization_to_bbh(gPictureRecordOpts[opt].fType,
575 break; 575 fStateTree, fBoundingHierarchy);
576 break;
577 }
576 } 578 }
577 } 579 }
578 580
579 if (SK_ARRAY_COUNT(gPictureRecordOpts) == opt) { 581 if ((fRecordFlags & SkPicture::kDisableRecordOptimizations_RecordingFlag) ||
582 SK_ARRAY_COUNT(gPictureRecordOpts) == opt) {
580 // No optimization fired so add the RESTORE 583 // No optimization fired so add the RESTORE
581 fillRestoreOffsetPlaceholdersForCurrentStackLevel((uint32_t)fWriter.size ()); 584 fillRestoreOffsetPlaceholdersForCurrentStackLevel((uint32_t)fWriter.size ());
582 size = 1 * kUInt32Size; // RESTORE consists solely of 1 op code 585 size = 1 * kUInt32Size; // RESTORE consists solely of 1 op code
583 initialOffset = this->addDraw(RESTORE, &size); 586 initialOffset = this->addDraw(RESTORE, &size);
584 } 587 }
585 588
586 fRestoreOffsetStack.pop(); 589 fRestoreOffsetStack.pop();
587 590
588 validate(initialOffset, size); 591 validate(initialOffset, size);
589 return this->INHERITED::restore(); 592 return this->INHERITED::restore();
(...skipping 857 matching lines...) Expand 10 before | Expand all | Expand 10 after
1447 void SkPictureRecord::validateRegions() const { 1450 void SkPictureRecord::validateRegions() const {
1448 int count = fRegions.count(); 1451 int count = fRegions.count();
1449 SkASSERT((unsigned) count < 0x1000); 1452 SkASSERT((unsigned) count < 0x1000);
1450 for (int index = 0; index < count; index++) { 1453 for (int index = 0; index < count; index++) {
1451 const SkFlatData* region = fRegions[index]; 1454 const SkFlatData* region = fRegions[index];
1452 SkASSERT(region); 1455 SkASSERT(region);
1453 // region->validate(); 1456 // region->validate();
1454 } 1457 }
1455 } 1458 }
1456 #endif 1459 #endif
OLDNEW
« no previous file with comments | « include/core/SkPicture.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698