| Index: tests/SurfaceTest.cpp
|
| diff --git a/tests/SurfaceTest.cpp b/tests/SurfaceTest.cpp
|
| index 6422669055ad2bbd632f41def7dce01d930493cf..c77c25186c32453fd712139fa214f3235fb87b9f 100644
|
| --- a/tests/SurfaceTest.cpp
|
| +++ b/tests/SurfaceTest.cpp
|
| @@ -85,8 +85,7 @@ static void test_image(skiatest::Reporter* reporter) {
|
| data->unref();
|
| }
|
|
|
| -static SkImage* createImage(ImageType imageType, GrContext* context,
|
| - SkColor color) {
|
| +static SkImage* createImage(ImageType imageType, GrContext* context, SkColor color) {
|
| const SkPMColor pmcolor = SkPreMultiplyColor(color);
|
| const SkImageInfo info = SkImageInfo::MakeN32Premul(10, 10);
|
| const size_t rowBytes = info.minRowBytes();
|
| @@ -101,42 +100,51 @@ static SkImage* createImage(ImageType imageType, GrContext* context,
|
| return SkImage::NewRasterCopy(info, addr, rowBytes);
|
| case kRasterData_ImageType:
|
| return SkImage::NewRasterData(info, data, rowBytes);
|
| - case kGpu_ImageType:
|
| - return NULL; // TODO
|
| + case kGpu_ImageType: {
|
| + SkAutoTUnref<SkSurface> surf(SkSurface::NewRenderTarget(context, info, 0));
|
| + surf->getCanvas()->clear(color);
|
| + return surf->newImageSnapshot();
|
| + }
|
| case kCodec_ImageType: {
|
| SkBitmap bitmap;
|
| bitmap.installPixels(info, addr, rowBytes);
|
| SkAutoTUnref<SkData> src(
|
| - SkImageEncoder::EncodeData(bitmap, SkImageEncoder::kPNG_Type,
|
| - 100));
|
| + SkImageEncoder::EncodeData(bitmap, SkImageEncoder::kPNG_Type, 100));
|
| return SkImage::NewFromGenerator(
|
| - SkDecodingImageGenerator::Create(data, SkDecodingImageGenerator::Options()));
|
| + SkDecodingImageGenerator::Create(src, SkDecodingImageGenerator::Options()));
|
| }
|
| }
|
| SkASSERT(false);
|
| return NULL;
|
| }
|
|
|
| -static void test_imagepeek(skiatest::Reporter* reporter) {
|
| +static void test_imagepeek(skiatest::Reporter* reporter, GrContextFactory* factory) {
|
| static const struct {
|
| ImageType fType;
|
| bool fPeekShouldSucceed;
|
| + const char* fName;
|
| } gRec[] = {
|
| - { kRasterCopy_ImageType, true },
|
| - { kRasterData_ImageType, true },
|
| - { kGpu_ImageType, false },
|
| - { kCodec_ImageType, false },
|
| + { kRasterCopy_ImageType, true, "RasterCopy" },
|
| + { kRasterData_ImageType, true, "RasterData" },
|
| + { kGpu_ImageType, false, "Gpu" },
|
| + { kCodec_ImageType, false, "Codec" },
|
| };
|
|
|
| const SkColor color = SK_ColorRED;
|
| const SkPMColor pmcolor = SkPreMultiplyColor(color);
|
|
|
| + GrContext* ctx = NULL;
|
| +#if SK_SUPPORT_GPU
|
| + ctx = factory->get(GrContextFactory::kNative_GLContextType);
|
| +#endif
|
| +
|
| for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); ++i) {
|
| SkImageInfo info;
|
| size_t rowBytes;
|
|
|
| - SkAutoTUnref<SkImage> image(createImage(gRec[i].fType, NULL, color));
|
| + SkAutoTUnref<SkImage> image(createImage(gRec[i].fType, ctx, color));
|
| if (!image.get()) {
|
| + SkDebugf("failed to createImage[%d] %s\n", i, gRec[i].fName);
|
| continue; // gpu may not be enabled
|
| }
|
| const void* addr = image->peekPixels(&info, &rowBytes);
|
| @@ -413,7 +421,7 @@ DEF_GPUTEST(Surface, reporter, factory) {
|
| TestSurfaceNoCanvas(reporter, kRaster_SurfaceType, NULL, SkSurface::kDiscard_ContentChangeMode);
|
| TestSurfaceNoCanvas(reporter, kRaster_SurfaceType, NULL, SkSurface::kRetain_ContentChangeMode);
|
|
|
| - test_imagepeek(reporter);
|
| + test_imagepeek(reporter, factory);
|
| test_canvaspeek(reporter, factory);
|
|
|
| #if SK_SUPPORT_GPU
|
|
|