aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2017-01-20 13:21:56 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-01-20 19:02:08 +0000
commitaaedae7acb609ac9c914ca435ed845f0139916c0 (patch)
tree0aa612597b4f80445575c739b50db74e3c6d4bdd /gm
parent3329cceab5feca230df1caee16be045249228dc1 (diff)
Force Index8 to N32 in deferred texture path.
Ganesh doesn't support Index8, because GPUs don't really support it. So serializing it in the deferred blob just meant doing an expansion before upload. This forces that to happen when we build the blob. It also paves the way for removing the last usage of MakeTextureFromPixmap, which I'd like to remove. BUG=skia: Change-Id: I7c0292098d71e2f8ec1f9910e1234761822ce957 Reviewed-on: https://skia-review.googlesource.com/7340 Reviewed-by: Robert Phillips <robertphillips@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'gm')
-rw-r--r--gm/deferredtextureimage.cpp45
1 files changed, 36 insertions, 9 deletions
diff --git a/gm/deferredtextureimage.cpp b/gm/deferredtextureimage.cpp
index 1043c1b6d6..ed1717d5cd 100644
--- a/gm/deferredtextureimage.cpp
+++ b/gm/deferredtextureimage.cpp
@@ -85,7 +85,7 @@ static void DrawDeferredTextureImageMipMapTree(SkCanvas* canvas, SkImage* image,
SkPaint paint;
paint.setFilterQuality(params->fQuality);
- int mipLevelCount = SkMipMap::ComputeLevelCount(512, 512);
+ int mipLevelCount = SkMipMap::ComputeLevelCount(image->width(), image->height());
size_t requiredMemoryInBytes = image->getDeferredTextureImageData(
*proxy, params, 1, nullptr, canvas->imageInfo().colorSpace());
if (requiredMemoryInBytes == 0) {
@@ -107,13 +107,14 @@ static void DrawDeferredTextureImageMipMapTree(SkCanvas* canvas, SkImage* image,
canvas->translate(10.f, offsetHeight);
canvas->drawImage(uploadedImage, 0, 0, &paint);
canvas->restore();
- offsetHeight += 512 + 10;
+ offsetHeight += image->height() + 10;
// handle generated mipmap levels
for (int i = 0; i < mipLevelCount; i++) {
- SkISize mipSize = SkMipMap::ComputeLevelSize(512, 512, i);
+ SkISize mipSize = SkMipMap::ComputeLevelSize(image->width(), image->height(), i);
canvas->save();
canvas->translate(10.f, offsetHeight);
- canvas->scale(mipSize.width() / 512.f, mipSize.height() / 512.f);
+ canvas->scale(mipSize.width() / static_cast<float>(image->width()),
+ mipSize.height() / static_cast<float>(image->height()));
canvas->drawImage(uploadedImage, 0, 0, &paint);
canvas->restore();
offsetHeight += mipSize.height() + 10;
@@ -123,16 +124,17 @@ static void DrawDeferredTextureImageMipMapTree(SkCanvas* canvas, SkImage* image,
offsetHeight = 10;
// handle base mipmap level
canvas->save();
- canvas->translate(512.f + 20.f, offsetHeight);
+ canvas->translate(image->width() + 20.f, offsetHeight);
canvas->drawImage(image, 0, 0, &paint);
canvas->restore();
- offsetHeight += 512 + 10;
+ offsetHeight += image->height() + 10;
// handle generated mipmap levels
for (int i = 0; i < mipLevelCount; i++) {
- SkISize mipSize = SkMipMap::ComputeLevelSize(512, 512, i);
+ SkISize mipSize = SkMipMap::ComputeLevelSize(image->width(), image->height(), i);
canvas->save();
- canvas->translate(512.f + 20.f, offsetHeight);
- canvas->scale(mipSize.width() / 512.f, mipSize.height() / 512.f);
+ canvas->translate(image->width() + 20.f, offsetHeight);
+ canvas->scale(mipSize.width() / static_cast<float>(image->width()),
+ mipSize.height() / static_cast<float>(image->height()));
canvas->drawImage(image, 0, 0, &paint);
canvas->restore();
offsetHeight += mipSize.height() + 10;
@@ -182,4 +184,29 @@ DEF_SIMPLE_GM(deferred_texture_image_high, canvas, 512 + 512 + 30, 512 + 20) {
DrawDeferredTextureImageData(canvas, &params);
}
+DEF_SIMPLE_GM(deferred_texture_image_medium_encoded_indexed, canvas, 128 + 128 + 30, 340) {
+ sk_sp<SkImage> encodedImage = GetResourceAsImage("color_wheel.gif");
+ if (!encodedImage) {
+ SkDebugf("\nCould not load resource.\n");
+ return;
+ }
+
+ auto params = SkImage::DeferredTextureImageUsageParams(SkMatrix::MakeScale(0.25f, 0.25f),
+ kMedium_SkFilterQuality, 0);
+ DrawDeferredTextureImageMipMapTree(canvas, encodedImage.get(), &params);
+}
+
+DEF_SIMPLE_GM(deferred_texture_image_medium_decoded_indexed, canvas, 128 + 128 + 30, 340) {
+ SkBitmap bitmap;
+ if (!GetResourceAsBitmap("color_wheel.gif", &bitmap)) {
+ SkDebugf("\nCould not decode resource.\n");
+ return;
+ }
+ sk_sp<SkImage> decodedImage = SkImage::MakeFromBitmap(bitmap);
+
+ auto params = SkImage::DeferredTextureImageUsageParams(SkMatrix::MakeScale(0.25f, 0.25f),
+ kMedium_SkFilterQuality, 0);
+ DrawDeferredTextureImageMipMapTree(canvas, decodedImage.get(), &params);
+}
+
#endif