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

Side by Side Diff: tests/SRGBMipMapTest.cpp

Issue 2215323003: Start using RenderTargetProxy (omnibus) (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: update Created 4 years, 1 month 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 | « tests/ClearTest.cpp ('k') | tests/SurfaceTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2016 Google Inc. 2 * Copyright 2016 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "Test.h" 8 #include "Test.h"
9 #if SK_SUPPORT_GPU 9 #if SK_SUPPORT_GPU
10 #include "GrCaps.h" 10 #include "GrCaps.h"
11 #include "GrContext.h" 11 #include "GrContext.h"
12 #include "GrRenderTargetContext.h" 12 #include "GrRenderTargetContext.h"
13 #include "GrTextureProxy.h"
14
13 #include "SkCanvas.h" 15 #include "SkCanvas.h"
14 #include "SkSurface.h" 16 #include "SkSurface.h"
15 17
16 // using anonymous namespace because these functions are used as template params . 18 // using anonymous namespace because these functions are used as template params .
17 namespace { 19 namespace {
18 /** convert 0..1 srgb value to 0..1 linear */ 20 /** convert 0..1 srgb value to 0..1 linear */
19 float srgb_to_linear(float srgb) { 21 float srgb_to_linear(float srgb) {
20 if (srgb <= 0.04045f) { 22 if (srgb <= 0.04045f) {
21 return srgb / 12.92f; 23 return srgb / 12.92f;
22 } else { 24 } else {
(...skipping 12 matching lines...) Expand all
35 } 37 }
36 38
37 static bool check_value(U8CPU value, U8CPU expected, U8CPU error) { 39 static bool check_value(U8CPU value, U8CPU expected, U8CPU error) {
38 if (value >= expected) { 40 if (value >= expected) {
39 return (value - expected) <= error; 41 return (value - expected) <= error;
40 } else { 42 } else {
41 return (expected - value) <= error; 43 return (expected - value) <= error;
42 } 44 }
43 } 45 }
44 46
45 void read_and_check_pixels(skiatest::Reporter* reporter, GrTexture* texture, U8C PU expected, 47 void read_and_check_pixels(skiatest::Reporter* reporter, GrTextureProxy* texture , U8CPU expected,
46 U8CPU error, const char* subtestName) { 48 U8CPU error, const char* subtestName) {
47 int w = texture->width(); 49 int w = texture->width();
48 int h = texture->height(); 50 int h = texture->height();
49 SkAutoTMalloc<uint32_t> readData(w * h); 51 SkAutoTMalloc<uint32_t> readData(w * h);
50 memset(readData.get(), 0, sizeof(uint32_t) * w * h); 52 memset(readData.get(), 0, sizeof(uint32_t) * w * h);
51 if (!texture->readPixels(0, 0, w, h, texture->config(), readData.get())) { 53 if (!texture->readPixels2(0, 0, w, h, texture->config(), readData.get())) {
52 ERRORF(reporter, "Could not read pixels for %s.", subtestName); 54 ERRORF(reporter, "Could not read pixels for %s.", subtestName);
53 return; 55 return;
54 } 56 }
55 for (int j = 0; j < h; ++j) { 57 for (int j = 0; j < h; ++j) {
56 for (int i = 0; i < w; ++i) { 58 for (int i = 0; i < w; ++i) {
57 uint32_t read = readData[j * w + i]; 59 uint32_t read = readData[j * w + i];
58 60
59 bool success = 61 bool success =
60 check_value(read & 0xff, expected, error) && 62 check_value(read & 0xff, expected, error) &&
61 check_value((read >> 8) & 0xff, expected, error) && 63 check_value((read >> 8) & 0xff, expected, error) &&
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 SkRect rect = SkRect::MakeWH(SkIntToScalar(rtS), SkIntToScalar(rtS)); 131 SkRect rect = SkRect::MakeWH(SkIntToScalar(rtS), SkIntToScalar(rtS));
130 GrNoClip noClip; 132 GrNoClip noClip;
131 GrPaint paint; 133 GrPaint paint;
132 paint.setPorterDuffXPFactory(SkBlendMode::kSrc); 134 paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
133 GrTextureParams mipMapParams(SkShader::kRepeat_TileMode, GrTextureParams::kM ipMap_FilterMode); 135 GrTextureParams mipMapParams(SkShader::kRepeat_TileMode, GrTextureParams::kM ipMap_FilterMode);
134 paint.addColorTextureProcessor(texture.get(), nullptr, SkMatrix::MakeScale(0 .5f), mipMapParams); 136 paint.addColorTextureProcessor(texture.get(), nullptr, SkMatrix::MakeScale(0 .5f), mipMapParams);
135 137
136 // 1) Draw texture to S32 surface (should generate/use sRGB mips) 138 // 1) Draw texture to S32 surface (should generate/use sRGB mips)
137 paint.setGammaCorrect(true); 139 paint.setGammaCorrect(true);
138 s32RenderTargetContext->drawRect(noClip, paint, SkMatrix::I(), rect); 140 s32RenderTargetContext->drawRect(noClip, paint, SkMatrix::I(), rect);
139 read_and_check_pixels(reporter, s32RenderTargetContext->asTexture().get(), e xpectedSRGB, error, 141 read_and_check_pixels(reporter, s32RenderTargetContext->asDeferredTexture(). get(), expectedSRGB, error,
140 "first render of sRGB"); 142 "first render of sRGB");
141 143
142 // 2) Draw texture to L32 surface (should generate/use linear mips) 144 // 2) Draw texture to L32 surface (should generate/use linear mips)
143 paint.setGammaCorrect(false); 145 paint.setGammaCorrect(false);
144 l32RenderTargetContext->drawRect(noClip, paint, SkMatrix::I(), rect); 146 l32RenderTargetContext->drawRect(noClip, paint, SkMatrix::I(), rect);
145 read_and_check_pixels(reporter, l32RenderTargetContext->asTexture().get(), e xpectedLinear, 147 read_and_check_pixels(reporter, l32RenderTargetContext->asDeferredTexture(). get(), expectedLinear,
146 error, "re-render as linear"); 148 error, "re-render as linear");
147 149
148 // 3) Go back to sRGB 150 // 3) Go back to sRGB
149 paint.setGammaCorrect(true); 151 paint.setGammaCorrect(true);
150 s32RenderTargetContext->drawRect(noClip, paint, SkMatrix::I(), rect); 152 s32RenderTargetContext->drawRect(noClip, paint, SkMatrix::I(), rect);
151 read_and_check_pixels(reporter, s32RenderTargetContext->asTexture().get(), e xpectedSRGB, error, 153 read_and_check_pixels(reporter, s32RenderTargetContext->asDeferredTexture(). get(), expectedSRGB, error,
152 "re-render as sRGB"); 154 "re-render as sRGB");
153 } 155 }
154 #endif 156 #endif
OLDNEW
« no previous file with comments | « tests/ClearTest.cpp ('k') | tests/SurfaceTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698