Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(70)

Unified Diff: tests/DeviceTest.cpp

Issue 2161533003: Add makeSpecial calls to SkGpuDevice (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Nervous compilers Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/SkGpuDevice.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/DeviceTest.cpp
diff --git a/tests/DeviceTest.cpp b/tests/DeviceTest.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d6bd1bfe476c4e7f39c10fed7514e8b9d525eca4
--- /dev/null
+++ b/tests/DeviceTest.cpp
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2016 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkBitmapDevice.h"
+#include "SkDevice.h"
+#include "SkSpecialImage.h"
+
+#if SK_SUPPORT_GPU
+#include "SkGpuDevice.h"
+#endif
+
+#include "Test.h"
+
+class DeviceTestingAccess {
+public:
+ static sk_sp<SkSpecialImage> MakeSpecial(SkBaseDevice* dev, const SkBitmap& bm) {
+ return dev->makeSpecial(bm);
+ }
+
+ static sk_sp<SkSpecialImage> MakeSpecial(SkBaseDevice* dev, SkImage* img) {
+ return dev->makeSpecial(img);
+ }
+
+ static sk_sp<SkSpecialImage> SnapSpecial(SkBaseDevice* dev) {
+ return dev->snapSpecial();
+ }
+};
+
+// TODO: re-enable this when Raster methods are implemented
+#if 0
+DEF_TEST(SpecialImage_BitmapDevice, reporter) {
+ static const int kWidth = 100;
+ static const int kHeight = 90;
+
+ SkImageInfo ii = SkImageInfo::MakeN32Premul(2*kWidth, 2*kHeight);
+
+ SkAutoTUnref<SkBaseDevice> bmDev(SkBitmapDevice::Create(ii));
+
+ SkBitmap bm;
+ bm.tryAllocN32Pixels(kWidth, kHeight);
+
+ // Create a raster-backed special image from a raster-backed SkBitmap
+ sk_sp<SkSpecialImage> special = DeviceTestingAccess::MakeSpecial(bmDev.get(), bm);
+ SkASSERT(!special->isTextureBacked());
+ SkASSERT(kWidth == special->width());
+ SkASSERT(kHeight == special->height());
+ SkASSERT(bm.getGenerationID() == special->uniqueID());
+ SkASSERT(SkIRect::MakeWH(kWidth, kHeight) == special->subset());
+
+ // Create a raster-backed special image from a raster-backed SkImage
+ sk_sp<SkImage> image(SkImage::MakeFromBitmap(bm));
+ special = DeviceTestingAccess::MakeSpecial(bmDev.get(), image.get());
+ SkASSERT(!special->isTextureBacked());
+ SkASSERT(kWidth == special->width());
+ SkASSERT(kHeight == special->height());
+ SkASSERT(bm.getGenerationID() == special->uniqueID());
+ SkASSERT(SkIRect::MakeWH(kWidth, kHeight) == special->subset());
+
+ // Snap the device as a raster-backed special image
+ special = DeviceTestingAccess::SnapSpecial(bmDev.get());
+ SkASSERT(!special->isTextureBacked());
+ SkASSERT(2*kWidth == special->width());
+ SkASSERT(2*kHeight == special->height());
+ SkASSERT(SkIRect::MakeWH(2*kWidth, 2*kHeight) == special->subset());
+}
+#endif
+
+
+#if SK_SUPPORT_GPU
+
+DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SpecialImage_GPUDevice, reporter, ctxInfo) {
+ GrContext* context = ctxInfo.grContext();
+
+ static const int kWidth = 100;
+ static const int kHeight = 90;
+
+ SkImageInfo ii = SkImageInfo::MakeN32Premul(2*kWidth, 2*kHeight);
+
+ sk_sp<SkBaseDevice> gpuDev(SkGpuDevice::Make(context, SkBudgeted::kNo, ii,
+ 0, nullptr, SkGpuDevice::kClear_InitContents));
+
+ SkBitmap bm;
+ SkAssertResult(bm.tryAllocN32Pixels(kWidth, kHeight));
+
+ // Create a gpu-backed special image from a raster-backed SkBitmap
+ sk_sp<SkSpecialImage> special = DeviceTestingAccess::MakeSpecial(gpuDev.get(), bm);
+ SkASSERT(special->isTextureBacked());
+ SkASSERT(kWidth == special->width());
+ SkASSERT(kHeight == special->height());
+ SkASSERT(bm.getGenerationID() == special->uniqueID());
+ SkASSERT(SkIRect::MakeWH(kWidth, kHeight) == special->subset());
+
+ // Create a gpu-backed special image from a raster-backed SkImage
+ sk_sp<SkImage> image(SkImage::MakeFromBitmap(bm));
+ special = DeviceTestingAccess::MakeSpecial(gpuDev.get(), image.get());
+ SkASSERT(special->isTextureBacked());
+ SkASSERT(kWidth == special->width());
+ SkASSERT(kHeight == special->height());
+ // TODO: Hmmm, this is a bit unexpected
+ SkASSERT(image->uniqueID() != special->uniqueID());
+ SkASSERT(SkIRect::MakeWH(kWidth, kHeight) == special->subset());
+
+ // Create a gpu-backed special image from a gpu-backed SkImage
+ image = image->makeTextureImage(context);
+ special = DeviceTestingAccess::MakeSpecial(gpuDev.get(), image.get());
+ SkASSERT(special->isTextureBacked());
+ SkASSERT(kWidth == special->width());
+ SkASSERT(kHeight == special->height());
+ SkASSERT(image->uniqueID() == special->uniqueID());
+ SkASSERT(SkIRect::MakeWH(kWidth, kHeight) == special->subset());
+
+ // Snap the device as a gpu-backed special image
+ special = DeviceTestingAccess::SnapSpecial(gpuDev.get());
+ SkASSERT(special->isTextureBacked());
+ SkASSERT(2*kWidth == special->width());
+ SkASSERT(2*kHeight == special->height());
+ SkASSERT(SkIRect::MakeWH(2*kWidth, 2*kHeight) == special->subset());
+}
+
+#endif
« no previous file with comments | « src/gpu/SkGpuDevice.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698