| Index: src/record/SkRecords.h
|
| diff --git a/src/record/SkRecords.h b/src/record/SkRecords.h
|
| index d4b6852d705d956556cca35e547a31c82870b511..581ae21e0535322916b9aff63bb96abe3514b410 100644
|
| --- a/src/record/SkRecords.h
|
| +++ b/src/record/SkRecords.h
|
| @@ -19,11 +19,17 @@ namespace SkRecords {
|
| //
|
| // We leave this SK_RECORD_TYPES macro defined for use by code that wants to operate on SkRecords
|
| // types polymorphically. (See SkRecord::Record::{visit,mutate} for an example.)
|
| +//
|
| +// Order doesn't technically matter here, but the compiler can generally generate better code if
|
| +// you keep them semantically grouped, especially the Draws. It's also nice to leave NoOp at 0.
|
| #define SK_RECORD_TYPES(M) \
|
| M(NoOp) \
|
| M(Restore) \
|
| M(Save) \
|
| M(SaveLayer) \
|
| + M(PushCull) \
|
| + M(PopCull) \
|
| + M(PairedPushCull) /*From SkRecordAnnotateCullingPairs*/ \
|
| M(Concat) \
|
| M(SetMatrix) \
|
| M(ClipPath) \
|
| @@ -48,9 +54,6 @@ namespace SkRecords {
|
| M(DrawText) \
|
| M(DrawTextOnPath) \
|
| M(DrawVertices) \
|
| - M(PushCull) \
|
| - M(PopCull) \
|
| - M(PairedPushCull) /*From SkRecordAnnotateCullingPairs*/ \
|
| M(BoundedDrawPosTextH) /*From SkRecordBoundDrawPosTextH*/
|
|
|
| // Defines SkRecords::Type, an enum of all record types.
|
| @@ -195,71 +198,73 @@ RECORD3(ClipRect, SkRect, rect, SkRegion::Op, op, bool, doAA);
|
| RECORD2(ClipRegion, SkRegion, region, SkRegion::Op, op);
|
|
|
| RECORD1(Clear, SkColor, color);
|
| -RECORD4(DrawBitmap, ImmutableBitmap, bitmap,
|
| +// While not strictly required, if you have an SkPaint, it's fastest to put it first.
|
| +RECORD4(DrawBitmap, Optional<SkPaint>, paint,
|
| + ImmutableBitmap, bitmap,
|
| SkScalar, left,
|
| - SkScalar, top,
|
| - Optional<SkPaint>, paint);
|
| -RECORD3(DrawBitmapMatrix, ImmutableBitmap, bitmap, SkMatrix, matrix, Optional<SkPaint>, paint);
|
| -RECORD4(DrawBitmapNine, ImmutableBitmap, bitmap,
|
| + SkScalar, top);
|
| +RECORD3(DrawBitmapMatrix, Optional<SkPaint>, paint, ImmutableBitmap, bitmap, SkMatrix, matrix);
|
| +RECORD4(DrawBitmapNine, Optional<SkPaint>, paint,
|
| + ImmutableBitmap, bitmap,
|
| SkIRect, center,
|
| - SkRect, dst,
|
| - Optional<SkPaint>, paint);
|
| -RECORD5(DrawBitmapRectToRect, ImmutableBitmap, bitmap,
|
| + SkRect, dst);
|
| +RECORD5(DrawBitmapRectToRect, Optional<SkPaint>, paint,
|
| + ImmutableBitmap, bitmap,
|
| Optional<SkRect>, src,
|
| SkRect, dst,
|
| - Optional<SkPaint>, paint,
|
| SkCanvas::DrawBitmapRectFlags, flags);
|
| -RECORD3(DrawDRRect, SkRRect, outer, SkRRect, inner, SkPaint, paint);
|
| -RECORD2(DrawOval, SkRect, oval, SkPaint, paint);
|
| +RECORD3(DrawDRRect, SkPaint, paint, SkRRect, outer, SkRRect, inner);
|
| +RECORD2(DrawOval, SkPaint, paint, SkRect, oval);
|
| RECORD1(DrawPaint, SkPaint, paint);
|
| -RECORD2(DrawPath, SkPath, path, SkPaint, paint);
|
| -RECORD4(DrawPoints, SkCanvas::PointMode, mode, size_t, count, SkPoint*, pts, SkPaint, paint);
|
| -RECORD4(DrawPosText, PODArray<char>, text,
|
| +RECORD2(DrawPath, SkPaint, paint, SkPath, path);
|
| +RECORD4(DrawPoints, SkPaint, paint, SkCanvas::PointMode, mode, size_t, count, SkPoint*, pts);
|
| +RECORD4(DrawPosText, SkPaint, paint,
|
| + PODArray<char>, text,
|
| size_t, byteLength,
|
| - PODArray<SkPoint>, pos,
|
| - SkPaint, paint);
|
| -RECORD5(DrawPosTextH, PODArray<char>, text,
|
| + PODArray<SkPoint>, pos);
|
| +RECORD5(DrawPosTextH, SkPaint, paint,
|
| + PODArray<char>, text,
|
| size_t, byteLength,
|
| PODArray<SkScalar>, xpos,
|
| - SkScalar, y,
|
| - SkPaint, paint);
|
| -RECORD2(DrawRRect, SkRRect, rrect, SkPaint, paint);
|
| -RECORD2(DrawRect, SkRect, rect, SkPaint, paint);
|
| -RECORD4(DrawSprite, ImmutableBitmap, bitmap, int, left, int, top, Optional<SkPaint>, paint);
|
| -RECORD5(DrawText, PODArray<char>, text,
|
| + SkScalar, y);
|
| +RECORD2(DrawRRect, SkPaint, paint, SkRRect, rrect);
|
| +RECORD2(DrawRect, SkPaint, paint, SkRect, rect);
|
| +RECORD4(DrawSprite, Optional<SkPaint>, paint, ImmutableBitmap, bitmap, int, left, int, top);
|
| +RECORD5(DrawText, SkPaint, paint,
|
| + PODArray<char>, text,
|
| size_t, byteLength,
|
| SkScalar, x,
|
| - SkScalar, y,
|
| - SkPaint, paint);
|
| -RECORD5(DrawTextOnPath, PODArray<char>, text,
|
| + SkScalar, y);
|
| +RECORD5(DrawTextOnPath, SkPaint, paint,
|
| + PODArray<char>, text,
|
| size_t, byteLength,
|
| SkPath, path,
|
| - Optional<SkMatrix>, matrix,
|
| - SkPaint, paint);
|
| + Optional<SkMatrix>, matrix);
|
|
|
| // This guy is so ugly we just write it manually.
|
| struct DrawVertices {
|
| static const Type kType = DrawVertices_Type;
|
|
|
| - DrawVertices(SkCanvas::VertexMode vmode,
|
| + DrawVertices(const SkPaint& paint,
|
| + SkCanvas::VertexMode vmode,
|
| int vertexCount,
|
| SkPoint* vertices,
|
| SkPoint* texs,
|
| SkColor* colors,
|
| SkXfermode* xmode,
|
| uint16_t* indices,
|
| - int indexCount,
|
| - const SkPaint& paint)
|
| - : vmode(vmode)
|
| + int indexCount)
|
| + : paint(paint)
|
| + , vmode(vmode)
|
| , vertexCount(vertexCount)
|
| , vertices(vertices)
|
| , texs(texs)
|
| , colors(colors)
|
| , xmode(SkSafeRef(xmode))
|
| , indices(indices)
|
| - , indexCount(indexCount)
|
| - , paint(paint) {}
|
| + , indexCount(indexCount) {}
|
|
|
| + SkPaint paint;
|
| SkCanvas::VertexMode vmode;
|
| int vertexCount;
|
| PODArray<SkPoint> vertices;
|
| @@ -268,7 +273,6 @@ struct DrawVertices {
|
| SkAutoTUnref<SkXfermode> xmode;
|
| PODArray<uint16_t> indices;
|
| int indexCount;
|
| - SkPaint paint;
|
| };
|
|
|
| // Records added by optimizations.
|
|
|