Moved SkPictureContentInfo into its own file. It now tracks the number of skia
operations (maybe, I'm not 100% sure I'm doing this right yet) and the number
of text draws. I also moved some of the gpu logic out of SkPictureRecord and
into SkPictureContentInfo,
http://code.google.com/p/chromium/issues/detail?id=396908
http://code.google.com/p/chromium/issues/detail?id=397198
http://code.google.com/p/chromium/issues/detail?id=399728
BUG=396908
R=nduca@chromium.org, mtklein@chromium.org, robertphillips@google.com, mtklein@google.com
Author: hendrikw@chromium.org
Review URL: https://codereview.chromium.org/435093003
diff --git a/src/core/SkPictureRecord.cpp b/src/core/SkPictureRecord.cpp
index 72c537b..31a66ab 100644
--- a/src/core/SkPictureRecord.cpp
+++ b/src/core/SkPictureRecord.cpp
@@ -972,20 +972,14 @@
#ifdef SK_COLLAPSE_MATRIX_CLIP_STATE
fMCMgr.call(SkMatrixClipStateMgr::kOther_CallType);
#endif
+ fContentInfo.onDrawPoints(count, paint);
// op + paint index + mode + count + point data
size_t size = 4 * kUInt32Size + count * sizeof(SkPoint);
size_t initialOffset = this->addDraw(DRAW_POINTS, &size);
SkASSERT(initialOffset+getPaintOffset(DRAW_POINTS, size) == fWriter.bytesWritten());
this->addPaint(paint);
- if (paint.getPathEffect() != NULL) {
- SkPathEffect::DashInfo info;
- SkPathEffect::DashType dashType = paint.getPathEffect()->asADash(&info);
- if (2 == count && SkPaint::kRound_Cap != paint.getStrokeCap() &&
- SkPathEffect::kDash_DashType == dashType && 2 == info.fCount) {
- fContentInfo.incFastPathDashEffects();
- }
- }
+
this->addInt(mode);
this->addInt(SkToInt(count));
fWriter.writeMul4(pts, count * sizeof(SkPoint));
@@ -1062,14 +1056,7 @@
void SkPictureRecord::drawPath(const SkPath& path, const SkPaint& paint) {
- if (paint.isAntiAlias() && !path.isConvex()) {
- fContentInfo.incAAConcavePaths();
-
- if (SkPaint::kStroke_Style == paint.getStyle() &&
- 0 == paint.getStrokeWidth()) {
- fContentInfo.incAAHairlineConcavePaths();
- }
- }
+ fContentInfo.onDrawPath(path, paint);
#ifdef SK_COLLAPSE_MATRIX_CLIP_STATE
fMCMgr.call(SkMatrixClipStateMgr::kOther_CallType);
@@ -1600,9 +1587,7 @@
}
const SkFlatData* SkPictureRecord::addPaintPtr(const SkPaint* paint) {
- if (NULL != paint && NULL != paint->getPathEffect()) {
- fContentInfo.incPaintWithPathEffectUses();
- }
+ fContentInfo.onAddPaintPtr(paint);
const SkFlatData* data = paint ? getFlatPaintData(*paint) : NULL;
this->addFlatPaint(data);
@@ -1704,6 +1689,7 @@
}
void SkPictureRecord::addText(const void* text, size_t byteLength) {
+ fContentInfo.onDrawText();
#ifdef SK_DEBUG_SIZE
size_t start = fWriter.bytesWritten();
#endif