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

Side by Side Diff: gm/deferredtextureimagedata.cpp

Issue 2007113008: Add prescale option to deferred params (Closed) Base URL: https://chromium.googlesource.com/skia.git@master
Patch Set: feedback Created 4 years, 6 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 unified diff | Download patch
« no previous file with comments | « no previous file | include/core/SkImage.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 * Copyright 2016 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7 #include <vector>
8
9 #include "gm.h"
10 #include "GrContext.h"
11 #include "Resources.h"
12 #include "SkImage.h"
13
14 #if SK_SUPPORT_GPU
15
16 // Helper function that uploads the given SkImage using MakdeFromDeferredTexture ImageData and then
17 // draws the uploaded version at the specified coordinates.
18 bool DrawDeferredTextureImageData(SkCanvas* canvas, SkImage* image,
bsalomon 2016/06/10 13:18:24 nit, should be static bool draw_deferred_texture_i
19 SkImage::DeferredTextureImageUsageParams* para ms, int x, int y) {
20 size_t deferredSize =
21 image->getDeferredTextureImageData(*canvas->getGrContext()->threadSafeProx y(), params, 1,
22 nullptr);
23 if (deferredSize == 0) {
24 SkDebugf("\nCould not create DeferredTextureImageData.\n");
25 return false;
26 }
27
28 std::vector<uint8_t> memory;
29 memory.resize(deferredSize);
30 image->getDeferredTextureImageData(*canvas->getGrContext()->threadSafeProxy(), params, 1,
31 memory.data());
32 sk_sp<SkImage> uploadedImage =
33 SkImage::MakeFromDeferredTextureImageData(canvas->getGrContext(), memory.d ata(),
34 SkBudgeted::kNo);
35 canvas->drawImage(uploadedImage, x, y);
36
37 return true;
38 }
39
40 DEF_SIMPLE_GM(deferred_texture_image_data, canvas, 60, 10) {
41 sk_sp<SkImage> encodedImage = GetResourceAsImage("randPixels.png");
42 if (!encodedImage) {
43 SkDebugf("\nCould not load resource.\n");
44 return;
45 }
46
47 SkBitmap bitmap;
48 if (!GetResourceAsBitmap("randPixels.png", &bitmap)) {
49 SkDebugf("\nCould not decode resource.\n");
50 return;
51 }
52
53 sk_sp<SkImage> decodedImage = SkImage::MakeFromBitmap(bitmap);
54
55 // Draw both encoded and decoded image via deferredTextureImageData.
56 SkImage::DeferredTextureImageUsageParams params;
57 DrawDeferredTextureImageData(canvas, encodedImage.get(), &params, 0, 0);
58 DrawDeferredTextureImageData(canvas, decodedImage.get(), &params, 10, 0);
59
60 // Draw 50% scaled versions of the encoded and decoded images at medium qual ity.
61 SkImage::DeferredTextureImageUsageParams mediumScaledParams;
62 mediumScaledParams.fPreScaleMipLevel = 1;
63 mediumScaledParams.fQuality = kMedium_SkFilterQuality;
64
65 DrawDeferredTextureImageData(canvas, encodedImage.get(), &mediumScaledParams , 20, 0);
66 DrawDeferredTextureImageData(canvas, decodedImage.get(), &mediumScaledParams , 30, 0);
67
68 // Draw 50% scaled versions of the encoded and decoded images at none qualit y.
69 SkImage::DeferredTextureImageUsageParams noneScaledParams;
70 noneScaledParams.fPreScaleMipLevel = 1;
71 noneScaledParams.fQuality = kNone_SkFilterQuality;
72
73 DrawDeferredTextureImageData(canvas, encodedImage.get(), &noneScaledParams, 40, 0);
74 DrawDeferredTextureImageData(canvas, decodedImage.get(), &noneScaledParams, 50, 0);
75 }
76
77 #endif
OLDNEW
« no previous file with comments | « no previous file | include/core/SkImage.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698