OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 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 | 9 |
10 // This test is specific to the GPU backend. | 10 // This test is specific to the GPU backend. |
11 #if SK_SUPPORT_GPU && !defined(SK_BUILD_FOR_ANDROID) | 11 #if SK_SUPPORT_GPU && !defined(SK_BUILD_FOR_ANDROID) |
12 | 12 |
13 #include "GrContextFactory.h" | 13 #include "GrContextFactory.h" |
14 #include "SkGpuDevice.h" | 14 #include "SkGpuDevice.h" |
15 | 15 |
16 static const int X_SIZE = 12; | 16 static const int X_SIZE = 12; |
17 static const int Y_SIZE = 12; | 17 static const int Y_SIZE = 12; |
18 | 18 |
| 19 #if 0 |
19 DEF_GPUTEST(ReadWriteAlpha, reporter, factory) { | 20 DEF_GPUTEST(ReadWriteAlpha, reporter, factory) { |
20 for (int type = 0; type < GrContextFactory::kLastGLContextType; ++type) { | 21 for (int type = 0; type < GrContextFactory::kLastGLContextType; ++type) { |
21 GrContextFactory::GLContextType glType = static_cast<GrContextFactory::G
LContextType>(type); | 22 GrContextFactory::GLContextType glType = static_cast<GrContextFactory::G
LContextType>(type); |
22 if (!GrContextFactory::IsRenderingGLContext(glType)) { | 23 if (!GrContextFactory::IsRenderingGLContext(glType)) { |
23 continue; | 24 continue; |
24 } | 25 } |
25 GrContext* context = factory->get(glType); | 26 GrContext* context = factory->get(glType); |
26 if (nullptr == context) { | 27 if (nullptr == context) { |
27 continue; | 28 continue; |
28 } | 29 } |
(...skipping 10 matching lines...) Expand all Loading... |
39 desc.fConfig = kAlpha_8_GrPixelConfig; | 40 desc.fConfig = kAlpha_8_GrPixelConfig; |
40 desc.fWidth = X_SIZE; | 41 desc.fWidth = X_SIZE; |
41 desc.fHeight = Y_SIZE; | 42 desc.fHeight = Y_SIZE; |
42 | 43 |
43 // We are initializing the texture with zeros here | 44 // We are initializing the texture with zeros here |
44 GrTexture* texture = context->textureProvider()->createTexture(desc, fal
se, textureData, 0); | 45 GrTexture* texture = context->textureProvider()->createTexture(desc, fal
se, textureData, 0); |
45 if (!texture) { | 46 if (!texture) { |
46 return; | 47 return; |
47 } | 48 } |
48 | 49 |
| 50 // TODO: this should be okay |
| 51 texture->setFromRawPixels(false); |
| 52 |
49 SkAutoTUnref<GrTexture> au(texture); | 53 SkAutoTUnref<GrTexture> au(texture); |
50 | 54 |
| 55 SkAutoTUnref<GrDrawContext> dc(context->drawContext(texture->asRenderTar
get())); |
| 56 if (!dc) { |
| 57 return; |
| 58 } |
| 59 |
51 // create a distinctive texture | 60 // create a distinctive texture |
52 for (int y = 0; y < Y_SIZE; ++y) { | 61 for (int y = 0; y < Y_SIZE; ++y) { |
53 for (int x = 0; x < X_SIZE; ++x) { | 62 for (int x = 0; x < X_SIZE; ++x) { |
54 textureData[x][y] = x*Y_SIZE+y; | 63 textureData[x][y] = x*Y_SIZE+y; |
55 } | 64 } |
56 } | 65 } |
57 | 66 |
58 // upload the texture | 67 // upload the texture |
59 texture->writePixels(0, 0, desc.fWidth, desc.fHeight, desc.fConfig, | 68 texture->writePixels(dc, 0, 0, desc.fWidth, desc.fHeight, desc.fConfig, |
60 textureData, 0); | 69 textureData, 0); |
61 | 70 |
62 unsigned char readback[X_SIZE][Y_SIZE]; | 71 unsigned char readback[X_SIZE][Y_SIZE]; |
63 | 72 |
64 // clear readback to something non-zero so we can detect readback failur
es | 73 // clear readback to something non-zero so we can detect readback failur
es |
65 memset(readback, 0x1, X_SIZE * Y_SIZE); | 74 memset(readback, 0x1, X_SIZE * Y_SIZE); |
66 | 75 |
67 // read the texture back | 76 // read the texture back |
68 texture->readPixels(0, 0, desc.fWidth, desc.fHeight, desc.fConfig, | 77 texture->readPixels(0, 0, desc.fWidth, desc.fHeight, desc.fConfig, |
69 readback, 0); | 78 readback, 0); |
70 | 79 |
71 // make sure the original & read back versions match | 80 // make sure the original & read back versions match |
72 bool match = true; | 81 bool match = true; |
73 | 82 |
74 for (int y = 0; y < Y_SIZE; ++y) { | 83 for (int y = 0; y < Y_SIZE; ++y) { |
75 for (int x = 0; x < X_SIZE; ++x) { | 84 for (int x = 0; x < X_SIZE; ++x) { |
76 if (textureData[x][y] != readback[x][y]) { | 85 if (textureData[x][y] != readback[x][y]) { |
77 match = false; | 86 match = false; |
78 } | 87 } |
79 } | 88 } |
80 } | 89 } |
81 | 90 |
| 91 // What on earth is this doing? |
| 92 texture->setFromRawPixels(false); |
| 93 texture->setDC1(NULL); |
| 94 texture->setDT(NULL); |
| 95 |
82 REPORTER_ASSERT(reporter, match); | 96 REPORTER_ASSERT(reporter, match); |
83 | 97 |
84 // Now try writing on the single channel texture | 98 // Now try writing on the single channel texture |
85 SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType); | 99 SkSurfaceProps props(SkSurfaceProps::kLegacyFontHost_InitType); |
86 SkAutoTUnref<SkBaseDevice> device(SkGpuDevice::Create(texture->asRenderT
arget(), &props, | 100 SkAutoTUnref<SkBaseDevice> device(SkGpuDevice::Create(texture->asRenderT
arget(), &props, |
87 SkGpuDevice::kUnin
it_InitContents)); | 101 SkGpuDevice::kUnin
it_InitContents)); |
88 SkCanvas canvas(device); | 102 SkCanvas canvas(device); |
89 | 103 |
90 SkPaint paint; | 104 SkPaint paint; |
91 | 105 |
(...skipping 12 matching lines...) Expand all Loading... |
104 for (int x = 0; x < X_SIZE; ++x) { | 118 for (int x = 0; x < X_SIZE; ++x) { |
105 if (0xFF != readback[x][y]) { | 119 if (0xFF != readback[x][y]) { |
106 match = false; | 120 match = false; |
107 } | 121 } |
108 } | 122 } |
109 } | 123 } |
110 | 124 |
111 REPORTER_ASSERT(reporter, match); | 125 REPORTER_ASSERT(reporter, match); |
112 } | 126 } |
113 } | 127 } |
| 128 #endif |
114 | 129 |
115 #endif | 130 #endif |
OLD | NEW |