| Index: tests/PictureTest.cpp
|
| diff --git a/tests/PictureTest.cpp b/tests/PictureTest.cpp
|
| index 7c3a4d0fe07372c72a795964f1ed99e28ddd0064..ea32805b49eed76c4c63d77c2f7385e712d114ad 100644
|
| --- a/tests/PictureTest.cpp
|
| +++ b/tests/PictureTest.cpp
|
| @@ -8,6 +8,7 @@
|
| #include "SkBBoxHierarchy.h"
|
| #include "SkBlurImageFilter.h"
|
| #include "SkCanvas.h"
|
| +#include "SkColorMatrixFilter.h"
|
| #include "SkColorPriv.h"
|
| #include "SkDashPathEffect.h"
|
| #include "SkData.h"
|
| @@ -866,6 +867,16 @@ static void test_gpu_picture_optimization(skiatest::Reporter* reporter,
|
| static const int kWidth = 100;
|
| static const int kHeight = 100;
|
|
|
| + // Create complex paint that the bounding box computation code can't
|
| + // optimize away
|
| + SkScalar blueToRedMatrix[20] = { 0 };
|
| + blueToRedMatrix[2] = blueToRedMatrix[18] = SK_Scalar1;
|
| + SkAutoTUnref<SkColorFilter> blueToRed(SkColorMatrixFilter::Create(blueToRedMatrix));
|
| + SkAutoTUnref<SkImageFilter> filter(SkColorFilterImageFilter::Create(blueToRed.get()));
|
| +
|
| + SkPaint complexPaint;
|
| + complexPaint.setImageFilter(filter);
|
| +
|
| SkAutoTUnref<SkPicture> pict, child;
|
|
|
| {
|
| @@ -873,7 +884,7 @@ static void test_gpu_picture_optimization(skiatest::Reporter* reporter,
|
|
|
| SkCanvas* c = recorder.beginRecording(SkIntToScalar(kWidth), SkIntToScalar(kHeight));
|
|
|
| - c->saveLayer(NULL, NULL);
|
| + c->saveLayer(NULL, &complexPaint);
|
| c->restore();
|
|
|
| child.reset(recorder.endRecording());
|
| @@ -906,22 +917,20 @@ static void test_gpu_picture_optimization(skiatest::Reporter* reporter,
|
| SkCanvas* c = recorder.beginRecording(SkIntToScalar(kWidth),
|
| SkIntToScalar(kHeight));
|
| // 1)
|
| - c->saveLayer(NULL, NULL); // layer #0
|
| + c->saveLayer(NULL, &complexPaint); // layer #0
|
| c->restore();
|
|
|
| // 2)
|
| c->saveLayer(NULL, NULL); // layer #1
|
| c->translate(kWidth/2.0f, kHeight/2.0f);
|
| SkRect r = SkRect::MakeXYWH(0, 0, kWidth/2, kHeight/2);
|
| - c->saveLayer(&r, NULL); // layer #2
|
| + c->saveLayer(&r, &complexPaint); // layer #2
|
| c->restore();
|
| c->restore();
|
|
|
| // 3)
|
| {
|
| - SkPaint p;
|
| - p.setColor(SK_ColorRED);
|
| - c->saveLayer(NULL, &p); // layer #3
|
| + c->saveLayer(NULL, &complexPaint); // layer #3
|
| c->restore();
|
| }
|
|
|
| @@ -986,7 +995,7 @@ static void test_gpu_picture_optimization(skiatest::Reporter* reporter,
|
| REPORTER_ASSERT(reporter, info0.fLocalMat.isIdentity());
|
| REPORTER_ASSERT(reporter, info0.fPreMat.isIdentity());
|
| REPORTER_ASSERT(reporter, 0 == info0.fBounds.fLeft && 0 == info0.fBounds.fTop);
|
| - REPORTER_ASSERT(reporter, NULL == info0.fPaint);
|
| + REPORTER_ASSERT(reporter, NULL != info0.fPaint);
|
| REPORTER_ASSERT(reporter, !info0.fIsNested && !info0.fHasNestedLayers);
|
|
|
| REPORTER_ASSERT(reporter, NULL == info1.fPicture);
|
| @@ -1006,7 +1015,7 @@ static void test_gpu_picture_optimization(skiatest::Reporter* reporter,
|
| REPORTER_ASSERT(reporter, info2.fPreMat.isIdentity());
|
| REPORTER_ASSERT(reporter, kWidth / 2 == info2.fBounds.fLeft && // translated
|
| kHeight / 2 == info2.fBounds.fTop);
|
| - REPORTER_ASSERT(reporter, NULL == info1.fPaint);
|
| + REPORTER_ASSERT(reporter, NULL != info2.fPaint);
|
| REPORTER_ASSERT(reporter, info2.fIsNested && !info2.fHasNestedLayers); // is nested
|
|
|
| REPORTER_ASSERT(reporter, NULL == info3.fPicture);
|
| @@ -1034,13 +1043,13 @@ static void test_gpu_picture_optimization(skiatest::Reporter* reporter,
|
| REPORTER_ASSERT(reporter, 0 == info5.fBounds.fLeft && 0 == info5.fBounds.fTop);
|
| REPORTER_ASSERT(reporter, info5.fLocalMat.isIdentity());
|
| REPORTER_ASSERT(reporter, info5.fPreMat.isIdentity());
|
| - REPORTER_ASSERT(reporter, NULL == info5.fPaint);
|
| + REPORTER_ASSERT(reporter, NULL != info5.fPaint);
|
| REPORTER_ASSERT(reporter, info5.fIsNested && !info5.fHasNestedLayers); // is nested
|
|
|
| REPORTER_ASSERT(reporter, NULL == info6.fPicture);
|
| - REPORTER_ASSERT(reporter, kWidth == info6.fBounds.width() &&
|
| - kHeight == info6.fBounds.height());
|
| - REPORTER_ASSERT(reporter, 0 == info6.fBounds.fLeft && 0 == info6.fBounds.fTop);
|
| + REPORTER_ASSERT(reporter, kWidth-10 == info6.fBounds.width() &&
|
| + kHeight-10 == info6.fBounds.height());
|
| + REPORTER_ASSERT(reporter, 10 == info6.fBounds.fLeft && 10 == info6.fBounds.fTop);
|
| REPORTER_ASSERT(reporter, info6.fLocalMat.isIdentity());
|
| REPORTER_ASSERT(reporter, info6.fPreMat.isIdentity());
|
| REPORTER_ASSERT(reporter, info6.fPaint);
|
| @@ -1053,7 +1062,7 @@ static void test_gpu_picture_optimization(skiatest::Reporter* reporter,
|
| REPORTER_ASSERT(reporter, 0 == info7.fBounds.fLeft && 0 == info7.fBounds.fTop);
|
| REPORTER_ASSERT(reporter, info7.fLocalMat.isIdentity());
|
| REPORTER_ASSERT(reporter, info7.fPreMat.isIdentity());
|
| - REPORTER_ASSERT(reporter, NULL == info7.fPaint);
|
| + REPORTER_ASSERT(reporter, NULL != info7.fPaint);
|
| REPORTER_ASSERT(reporter, info7.fIsNested && !info7.fHasNestedLayers); // is nested
|
| }
|
| }
|
|
|