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

Side by Side Diff: trunk/src/cc/scheduler/texture_uploader_unittest.cc

Issue 13316003: Revert 191364 "cc: Add ‘chromium_code’: 1 to cc.gyp and cc_t..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « trunk/src/cc/scheduler/texture_uploader.cc ('k') | trunk/src/cc/scheduler/vsync_time_source.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/scheduler/texture_uploader.h" 5 #include "cc/scheduler/texture_uploader.h"
6 6
7 #include "cc/base/util.h" 7 #include "cc/base/util.h"
8 #include "cc/resources/prioritized_resource.h" 8 #include "cc/resources/prioritized_resource.h"
9 #include "cc/test/test_web_graphics_context_3d.h" 9 #include "cc/test/test_web_graphics_context_3d.h"
10 #include "testing/gmock/include/gmock/gmock.h" 10 #include "testing/gmock/include/gmock/gmock.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 63
64 virtual void texSubImage2D(WGC3Denum target, 64 virtual void texSubImage2D(WGC3Denum target,
65 WGC3Dint level, 65 WGC3Dint level,
66 WGC3Dint xoffset, 66 WGC3Dint xoffset,
67 WGC3Dint yoffset, 67 WGC3Dint yoffset,
68 WGC3Dsizei width, 68 WGC3Dsizei width,
69 WGC3Dsizei height, 69 WGC3Dsizei height,
70 WGC3Denum format, 70 WGC3Denum format,
71 WGC3Denum type, 71 WGC3Denum type,
72 const void* pixels) OVERRIDE { 72 const void* pixels) OVERRIDE {
73 EXPECT_EQ(static_cast<unsigned>(GL_TEXTURE_2D), target); 73 EXPECT_EQ(GL_TEXTURE_2D, target);
74 EXPECT_EQ(0, level); 74 EXPECT_EQ(0, level);
75 EXPECT_LE(0, width); 75 EXPECT_LE(0, width);
76 EXPECT_LE(0, height); 76 EXPECT_LE(0, height);
77 EXPECT_LE(0, xoffset); 77 EXPECT_LE(0, xoffset);
78 EXPECT_LE(0, yoffset); 78 EXPECT_LE(0, yoffset);
79 EXPECT_LE(0, width); 79 EXPECT_LE(0, width);
80 EXPECT_LE(0, height); 80 EXPECT_LE(0, height);
81 81
82 // Check for allowed format/type combination. 82 // Check for allowed format/type combination.
83 unsigned int bytes_per_pixel = 0; 83 unsigned int bytes_per_pixel = 0;
84 switch (format) { 84 switch (format) {
85 case GL_ALPHA: 85 case GL_ALPHA:
86 EXPECT_EQ(static_cast<unsigned>(GL_UNSIGNED_BYTE), type); 86 EXPECT_EQ(GL_UNSIGNED_BYTE, type);
87 bytes_per_pixel = 1; 87 bytes_per_pixel = 1;
88 break; 88 break;
89 case GL_RGB: 89 case GL_RGB:
90 EXPECT_NE(static_cast<unsigned>(GL_UNSIGNED_SHORT_4_4_4_4), type); 90 EXPECT_NE(GL_UNSIGNED_SHORT_4_4_4_4, type);
91 EXPECT_NE(static_cast<unsigned>(GL_UNSIGNED_SHORT_5_5_5_1), type); 91 EXPECT_NE(GL_UNSIGNED_SHORT_5_5_5_1, type);
92 switch (type) { 92 switch (type) {
93 case GL_UNSIGNED_BYTE: 93 case GL_UNSIGNED_BYTE:
94 bytes_per_pixel = 3; 94 bytes_per_pixel = 3;
95 break; 95 break;
96 case GL_UNSIGNED_SHORT_5_6_5: 96 case GL_UNSIGNED_SHORT_5_6_5:
97 bytes_per_pixel = 2; 97 bytes_per_pixel = 2;
98 break; 98 break;
99 } 99 }
100 break; 100 break;
101 case GL_RGBA: 101 case GL_RGBA:
102 EXPECT_NE(static_cast<unsigned>(GL_UNSIGNED_SHORT_5_6_5), type); 102 EXPECT_NE(GL_UNSIGNED_SHORT_5_6_5, type);
103 switch (type) { 103 switch (type) {
104 case GL_UNSIGNED_BYTE: 104 case GL_UNSIGNED_BYTE:
105 bytes_per_pixel = 4; 105 bytes_per_pixel = 4;
106 break; 106 break;
107 case GL_UNSIGNED_SHORT_4_4_4_4: 107 case GL_UNSIGNED_SHORT_4_4_4_4:
108 bytes_per_pixel = 2; 108 bytes_per_pixel = 2;
109 break; 109 break;
110 case GL_UNSIGNED_SHORT_5_5_5_1: 110 case GL_UNSIGNED_SHORT_5_5_5_1:
111 bytes_per_pixel = 2; 111 bytes_per_pixel = 2;
112 break; 112 break;
113 } 113 }
114 break; 114 break;
115 case GL_LUMINANCE: 115 case GL_LUMINANCE:
116 EXPECT_EQ(static_cast<unsigned>(GL_UNSIGNED_BYTE), type); 116 EXPECT_EQ(GL_UNSIGNED_BYTE, type);
117 bytes_per_pixel = 1; 117 bytes_per_pixel = 1;
118 break; 118 break;
119 case GL_LUMINANCE_ALPHA: 119 case GL_LUMINANCE_ALPHA:
120 EXPECT_EQ(static_cast<unsigned>(GL_UNSIGNED_BYTE), type); 120 EXPECT_EQ(GL_UNSIGNED_BYTE, type);
121 bytes_per_pixel = 2; 121 bytes_per_pixel = 2;
122 break; 122 break;
123 } 123 }
124 124
125 // If NULL, we aren't checking texture contents. 125 // If NULL, we aren't checking texture contents.
126 if (pixels == NULL) 126 if (pixels == NULL)
127 return; 127 return;
128 128
129 const uint8* bytes = static_cast<const uint8*>(pixels); 129 const uint8* bytes = static_cast<const uint8*>(pixels);
130 // We'll expect the first byte of every row to be 0x1, and the last byte to 130 // We'll expect the first byte of every row to be 0x1, and the last byte to
131 // be 0x2. 131 // be 0x2.
132 const unsigned int stride = 132 const unsigned int stride =
133 RoundUp(bytes_per_pixel * width, unpack_alignment_); 133 RoundUp(bytes_per_pixel * width, unpack_alignment_);
134 for (WGC3Dsizei row = 0; row < height; ++row) { 134 for (WGC3Dsizei row = 0; row < height; ++row) {
135 const uint8* row_bytes = 135 const uint8* row_bytes =
136 bytes + (xoffset * bytes_per_pixel + (yoffset + row) * stride); 136 bytes + (xoffset * bytes_per_pixel + (yoffset + row) * stride);
137 EXPECT_EQ(0x1, row_bytes[0]); 137 EXPECT_EQ(0x1, row_bytes[0]);
138 EXPECT_EQ(0x2, row_bytes[width * bytes_per_pixel - 1]); 138 EXPECT_EQ(0x2, row_bytes[width * bytes_per_pixel - 1]);
139 } 139 }
140 } 140 }
141 141
142 void SetResultAvailable(unsigned result_available) { 142 void SetResultAvailable(unsigned result_available) {
143 result_available_ = result_available; 143 result_available_ = result_available;
144 } 144 }
145 145
146 private: 146 private:
147 unsigned unpack_alignment_;
147 unsigned result_available_; 148 unsigned result_available_;
148 unsigned unpack_alignment_;
149 149
150 DISALLOW_COPY_AND_ASSIGN(TestWebGraphicsContext3DTextureUpload); 150 DISALLOW_COPY_AND_ASSIGN(TestWebGraphicsContext3DTextureUpload);
151 }; 151 };
152 152
153 void UploadTexture(TextureUploader* uploader, 153 void UploadTexture(TextureUploader* uploader,
154 WGC3Denum format, 154 WGC3Denum format,
155 gfx::Size size, 155 gfx::Size size,
156 const uint8* data) { 156 const uint8* data) {
157 uploader->Upload(data, 157 uploader->Upload(data,
158 gfx::Rect(size), 158 gfx::Rect(size),
159 gfx::Rect(size), 159 gfx::Rect(size),
160 gfx::Vector2d(), 160 gfx::Vector2d(),
161 format, 161 format,
162 size); 162 size);
163 } 163 }
164 164
165 TEST(TextureUploaderTest, NumBlockingUploads) { 165 TEST(TextureUploaderTest, NumBlockingUploads) {
166 scoped_ptr<TestWebGraphicsContext3DTextureUpload> fake_context( 166 scoped_ptr<TestWebGraphicsContext3DTextureUpload> fake_context(
167 new TestWebGraphicsContext3DTextureUpload); 167 new TestWebGraphicsContext3DTextureUpload);
168 scoped_ptr<TextureUploader> uploader = 168 scoped_ptr<TextureUploader> uploader =
169 TextureUploader::Create(fake_context.get(), false, false); 169 TextureUploader::Create(fake_context.get(), false, false);
170 170
171 fake_context->SetResultAvailable(0); 171 fake_context->SetResultAvailable(0);
172 EXPECT_EQ(0u, uploader->NumBlockingUploads()); 172 EXPECT_EQ(0, uploader->NumBlockingUploads());
173 UploadTexture(uploader.get(), GL_RGBA, gfx::Size(), NULL); 173 UploadTexture(uploader.get(), GL_RGBA, gfx::Size(), NULL);
174 EXPECT_EQ(1u, uploader->NumBlockingUploads()); 174 EXPECT_EQ(1, uploader->NumBlockingUploads());
175 UploadTexture(uploader.get(), GL_RGBA, gfx::Size(), NULL); 175 UploadTexture(uploader.get(), GL_RGBA, gfx::Size(), NULL);
176 EXPECT_EQ(2u, uploader->NumBlockingUploads()); 176 EXPECT_EQ(2, uploader->NumBlockingUploads());
177 177
178 fake_context->SetResultAvailable(1); 178 fake_context->SetResultAvailable(1);
179 EXPECT_EQ(0u, uploader->NumBlockingUploads()); 179 EXPECT_EQ(0, uploader->NumBlockingUploads());
180 UploadTexture(uploader.get(), GL_RGBA, gfx::Size(), NULL); 180 UploadTexture(uploader.get(), GL_RGBA, gfx::Size(), NULL);
181 EXPECT_EQ(0u, uploader->NumBlockingUploads()); 181 EXPECT_EQ(0, uploader->NumBlockingUploads());
182 UploadTexture(uploader.get(), GL_RGBA, gfx::Size(), NULL); 182 UploadTexture(uploader.get(), GL_RGBA, gfx::Size(), NULL);
183 UploadTexture(uploader.get(), GL_RGBA, gfx::Size(), NULL); 183 UploadTexture(uploader.get(), GL_RGBA, gfx::Size(), NULL);
184 EXPECT_EQ(0u, uploader->NumBlockingUploads()); 184 EXPECT_EQ(0, uploader->NumBlockingUploads());
185 } 185 }
186 186
187 TEST(TextureUploaderTest, MarkPendingUploadsAsNonBlocking) { 187 TEST(TextureUploaderTest, MarkPendingUploadsAsNonBlocking) {
188 scoped_ptr<TestWebGraphicsContext3DTextureUpload> fake_context( 188 scoped_ptr<TestWebGraphicsContext3DTextureUpload> fake_context(
189 new TestWebGraphicsContext3DTextureUpload); 189 new TestWebGraphicsContext3DTextureUpload);
190 scoped_ptr<TextureUploader> uploader = 190 scoped_ptr<TextureUploader> uploader =
191 TextureUploader::Create(fake_context.get(), false, false); 191 TextureUploader::Create(fake_context.get(), false, false);
192 192
193 fake_context->SetResultAvailable(0); 193 fake_context->SetResultAvailable(0);
194 EXPECT_EQ(0u, uploader->NumBlockingUploads()); 194 EXPECT_EQ(0, uploader->NumBlockingUploads());
195 UploadTexture(uploader.get(), GL_RGBA, gfx::Size(), NULL); 195 UploadTexture(uploader.get(), GL_RGBA, gfx::Size(), NULL);
196 UploadTexture(uploader.get(), GL_RGBA, gfx::Size(), NULL); 196 UploadTexture(uploader.get(), GL_RGBA, gfx::Size(), NULL);
197 EXPECT_EQ(2u, uploader->NumBlockingUploads()); 197 EXPECT_EQ(2, uploader->NumBlockingUploads());
198 198
199 uploader->MarkPendingUploadsAsNonBlocking(); 199 uploader->MarkPendingUploadsAsNonBlocking();
200 EXPECT_EQ(0u, uploader->NumBlockingUploads()); 200 EXPECT_EQ(0, uploader->NumBlockingUploads());
201 UploadTexture(uploader.get(), GL_RGBA, gfx::Size(), NULL); 201 UploadTexture(uploader.get(), GL_RGBA, gfx::Size(), NULL);
202 EXPECT_EQ(1u, uploader->NumBlockingUploads()); 202 EXPECT_EQ(1, uploader->NumBlockingUploads());
203 203
204 fake_context->SetResultAvailable(1); 204 fake_context->SetResultAvailable(1);
205 EXPECT_EQ(0u, uploader->NumBlockingUploads()); 205 EXPECT_EQ(0, uploader->NumBlockingUploads());
206 UploadTexture(uploader.get(), GL_RGBA, gfx::Size(), NULL); 206 UploadTexture(uploader.get(), GL_RGBA, gfx::Size(), NULL);
207 uploader->MarkPendingUploadsAsNonBlocking(); 207 uploader->MarkPendingUploadsAsNonBlocking();
208 EXPECT_EQ(0u, uploader->NumBlockingUploads()); 208 EXPECT_EQ(0, uploader->NumBlockingUploads());
209 } 209 }
210 210
211 TEST(TextureUploaderTest, UploadContentsTest) { 211 TEST(TextureUploaderTest, UploadContentsTest) {
212 scoped_ptr<TestWebGraphicsContext3DTextureUpload> fake_context( 212 scoped_ptr<TestWebGraphicsContext3DTextureUpload> fake_context(
213 new TestWebGraphicsContext3DTextureUpload); 213 new TestWebGraphicsContext3DTextureUpload);
214 scoped_ptr<TextureUploader> uploader = 214 scoped_ptr<TextureUploader> uploader =
215 TextureUploader::Create(fake_context.get(), false, false); 215 TextureUploader::Create(fake_context.get(), false, false);
216 uint8 buffer[256 * 256 * 4]; 216 uint8 buffer[256 * 256 * 4];
217 217
218 // Upload a tightly packed 256x256 RGBA texture. 218 // Upload a tightly packed 256x256 RGBA texture.
(...skipping 19 matching lines...) Expand all
238 for (int i = 0; i < 86; ++i) { 238 for (int i = 0; i < 86; ++i) {
239 // Mark the beginning and end of each row, for the test. 239 // Mark the beginning and end of each row, for the test.
240 buffer[i * 1 * 82] = 0x1; 240 buffer[i * 1 * 82] = 0x1;
241 buffer[(i + 1) * 82 - 1] = 0x2; 241 buffer[(i + 1) * 82 - 1] = 0x2;
242 } 242 }
243 UploadTexture(uploader.get(), GL_LUMINANCE, gfx::Size(82, 86), buffer); 243 UploadTexture(uploader.get(), GL_LUMINANCE, gfx::Size(82, 86), buffer);
244 } 244 }
245 245
246 } // namespace 246 } // namespace
247 } // namespace cc 247 } // namespace cc
OLDNEW
« no previous file with comments | « trunk/src/cc/scheduler/texture_uploader.cc ('k') | trunk/src/cc/scheduler/vsync_time_source.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698