Index: tests/RecordTest.cpp |
diff --git a/tests/RecordTest.cpp b/tests/RecordTest.cpp |
index 2fcc1e9c53cc6a6020fa4aab979e6bb6ec91a015..1e713c33ccb8dd7cb637bd5fe57ead5d44c58bca 100644 |
--- a/tests/RecordTest.cpp |
+++ b/tests/RecordTest.cpp |
@@ -8,6 +8,7 @@ |
#include "Test.h" |
#include "SkBitmap.h" |
+#include "SkDashPathEffect.h" |
#include "SkImageInfo.h" |
#include "SkShader.h" |
#include "SkRecord.h" |
@@ -80,18 +81,25 @@ DEF_TEST(Record, r) { |
DEF_TEST(RecordAnalysis, r) { |
SkRecord record; |
+ // Test WillPlaybackBitmaps |
SkRect rect = SkRect::MakeWH(10, 10); |
SkPaint paint; |
APPEND(record, SkRecords::DrawRect, paint, rect); |
- REPORTER_ASSERT(r, !SkRecordWillPlaybackBitmaps(record)); |
+ SkRecordAnalysis analysis = AnalyzeSkRecord(record); |
+ REPORTER_ASSERT(r, !analysis.fWillPlaybackBitmaps); |
+ REPORTER_ASSERT(r, analysis.fSuitableForGpuRasterization); |
SkBitmap bitmap; |
APPEND(record, SkRecords::DrawBitmap, &paint, bitmap, 0.0f, 0.0f); |
- REPORTER_ASSERT(r, SkRecordWillPlaybackBitmaps(record)); |
+ analysis = AnalyzeSkRecord(record); |
+ REPORTER_ASSERT(r, analysis.fWillPlaybackBitmaps); |
+ REPORTER_ASSERT(r, analysis.fSuitableForGpuRasterization); |
SkNEW_PLACEMENT_ARGS(record.replace<SkRecords::DrawRect>(1), |
SkRecords::DrawRect, (paint, rect)); |
- REPORTER_ASSERT(r, !SkRecordWillPlaybackBitmaps(record)); |
+ analysis = AnalyzeSkRecord(record); |
+ REPORTER_ASSERT(r, !analysis.fWillPlaybackBitmaps); |
+ REPORTER_ASSERT(r, analysis.fSuitableForGpuRasterization); |
SkPaint paint2; |
// CreateBitmapShader is too smart for us; an empty (or 1x1) bitmap shader |
@@ -106,7 +114,27 @@ DEF_TEST(RecordAnalysis, r) { |
REPORTER_ASSERT(r, shader->asABitmap(NULL, NULL, NULL) == SkShader::kDefault_BitmapType); |
APPEND(record, SkRecords::DrawRect, paint2, rect); |
- REPORTER_ASSERT(r, SkRecordWillPlaybackBitmaps(record)); |
+ analysis = AnalyzeSkRecord(record); |
+ REPORTER_ASSERT(r, analysis.fWillPlaybackBitmaps); |
+ REPORTER_ASSERT(r, analysis.fSuitableForGpuRasterization); |
+ |
+ // Test SuitableForGpuRasterization |
+ // Fast-path dashed effects preserve GPU rasterizability of DrawPoints |
+ SkPaint paint3; |
+ SkScalar intervals [] = {10, 20}; |
+ SkPathEffect* pe = SkDashPathEffect::Create(intervals, 2, 25); |
+ paint3.setPathEffect(pe)->unref(); |
+ SkPoint points [2] = { { 0.0f, 0.0f }, { 100.0f, 0.0f } }; |
+ APPEND(record, SkRecords::DrawPoints, paint3, SkCanvas::kLines_PointMode, 2, points); |
+ analysis = AnalyzeSkRecord(record); |
+ REPORTER_ASSERT(r, analysis.fSuitableForGpuRasterization); |
+ |
+ // ... but not of other primitives |
+ APPEND(record, SkRecords::DrawRect, paint3, rect); |
+ analysis = AnalyzeSkRecord(record); |
+ REPORTER_ASSERT(r, !analysis.fSuitableForGpuRasterization); |
+ |
+ |
} |
#undef APPEND |