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

Side by Side Diff: gpu/command_buffer/service/test_helper.cc

Issue 1335873002: Initialize default texture for GL_TEXTURE_3D and GL_TEXTURE_2D_ARRAY (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix gpu_unittests Created 5 years, 3 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 "gpu/command_buffer/service/test_helper.h" 5 #include "gpu/command_buffer/service/test_helper.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 var.mappedName = name; // No name hashing. 51 var.mappedName = name; // No name hashing.
52 return var; 52 return var;
53 } 53 }
54 54
55 } // namespace anonymous 55 } // namespace anonymous
56 56
57 // GCC requires these declarations, but MSVC requires they not be present 57 // GCC requires these declarations, but MSVC requires they not be present
58 #ifndef COMPILER_MSVC 58 #ifndef COMPILER_MSVC
59 const GLuint TestHelper::kServiceBlackTexture2dId; 59 const GLuint TestHelper::kServiceBlackTexture2dId;
60 const GLuint TestHelper::kServiceDefaultTexture2dId; 60 const GLuint TestHelper::kServiceDefaultTexture2dId;
61 const GLuint TestHelper::kServiceBlackTexture3dId;
62 const GLuint TestHelper::kServiceDefaultTexture3dId;
63 const GLuint TestHelper::kServiceBlackTexture2dArrayId;
64 const GLuint TestHelper::kServiceDefaultTexture2dArrayId;
61 const GLuint TestHelper::kServiceBlackTextureCubemapId; 65 const GLuint TestHelper::kServiceBlackTextureCubemapId;
62 const GLuint TestHelper::kServiceDefaultTextureCubemapId; 66 const GLuint TestHelper::kServiceDefaultTextureCubemapId;
63 const GLuint TestHelper::kServiceBlackExternalTextureId; 67 const GLuint TestHelper::kServiceBlackExternalTextureId;
64 const GLuint TestHelper::kServiceDefaultExternalTextureId; 68 const GLuint TestHelper::kServiceDefaultExternalTextureId;
65 const GLuint TestHelper::kServiceBlackRectangleTextureId; 69 const GLuint TestHelper::kServiceBlackRectangleTextureId;
66 const GLuint TestHelper::kServiceDefaultRectangleTextureId; 70 const GLuint TestHelper::kServiceDefaultRectangleTextureId;
67 71
68 const GLint TestHelper::kMaxSamples; 72 const GLint TestHelper::kMaxSamples;
69 const GLint TestHelper::kMaxRenderbufferSize; 73 const GLint TestHelper::kMaxRenderbufferSize;
70 const GLint TestHelper::kMaxTextureSize; 74 const GLint TestHelper::kMaxTextureSize;
(...skipping 15 matching lines...) Expand all
86 std::vector<std::string> TestHelper::split_extensions_; 90 std::vector<std::string> TestHelper::split_extensions_;
87 91
88 void TestHelper::SetupTextureInitializationExpectations( 92 void TestHelper::SetupTextureInitializationExpectations(
89 ::gfx::MockGLInterface* gl, 93 ::gfx::MockGLInterface* gl,
90 GLenum target, 94 GLenum target,
91 bool use_default_textures) { 95 bool use_default_textures) {
92 InSequence sequence; 96 InSequence sequence;
93 97
94 bool needs_initialization = (target != GL_TEXTURE_EXTERNAL_OES); 98 bool needs_initialization = (target != GL_TEXTURE_EXTERNAL_OES);
95 bool needs_faces = (target == GL_TEXTURE_CUBE_MAP); 99 bool needs_faces = (target == GL_TEXTURE_CUBE_MAP);
100 bool is_3d_or_2d_array_target = (target == GL_TEXTURE_3D ||
101 target == GL_TEXTURE_2D_ARRAY);
96 102
97 static GLuint texture_2d_ids[] = { 103 static GLuint texture_2d_ids[] = {
98 kServiceBlackTexture2dId, 104 kServiceBlackTexture2dId,
99 kServiceDefaultTexture2dId }; 105 kServiceDefaultTexture2dId };
106 static GLuint texture_3d_ids[] = {
107 kServiceBlackTexture3dId,
108 kServiceDefaultTexture3dId };
109 static GLuint texture_2d_array_ids[] = {
110 kServiceBlackTexture2dArrayId,
111 kServiceDefaultTexture2dArrayId };
100 static GLuint texture_cube_map_ids[] = { 112 static GLuint texture_cube_map_ids[] = {
101 kServiceBlackTextureCubemapId, 113 kServiceBlackTextureCubemapId,
102 kServiceDefaultTextureCubemapId }; 114 kServiceDefaultTextureCubemapId };
103 static GLuint texture_external_oes_ids[] = { 115 static GLuint texture_external_oes_ids[] = {
104 kServiceBlackExternalTextureId, 116 kServiceBlackExternalTextureId,
105 kServiceDefaultExternalTextureId }; 117 kServiceDefaultExternalTextureId };
106 static GLuint texture_rectangle_arb_ids[] = { 118 static GLuint texture_rectangle_arb_ids[] = {
107 kServiceBlackRectangleTextureId, 119 kServiceBlackRectangleTextureId,
108 kServiceDefaultRectangleTextureId }; 120 kServiceDefaultRectangleTextureId };
109 121
110 const GLuint* texture_ids = NULL; 122 const GLuint* texture_ids = NULL;
111 switch (target) { 123 switch (target) {
112 case GL_TEXTURE_2D: 124 case GL_TEXTURE_2D:
113 texture_ids = &texture_2d_ids[0]; 125 texture_ids = &texture_2d_ids[0];
114 break; 126 break;
127 case GL_TEXTURE_3D:
128 texture_ids = &texture_3d_ids[0];
129 break;
130 case GL_TEXTURE_2D_ARRAY:
131 texture_ids = &texture_2d_array_ids[0];
132 break;
115 case GL_TEXTURE_CUBE_MAP: 133 case GL_TEXTURE_CUBE_MAP:
116 texture_ids = &texture_cube_map_ids[0]; 134 texture_ids = &texture_cube_map_ids[0];
117 break; 135 break;
118 case GL_TEXTURE_EXTERNAL_OES: 136 case GL_TEXTURE_EXTERNAL_OES:
119 texture_ids = &texture_external_oes_ids[0]; 137 texture_ids = &texture_external_oes_ids[0];
120 break; 138 break;
121 case GL_TEXTURE_RECTANGLE_ARB: 139 case GL_TEXTURE_RECTANGLE_ARB:
122 texture_ids = &texture_rectangle_arb_ids[0]; 140 texture_ids = &texture_rectangle_arb_ids[0];
123 break; 141 break;
124 default: 142 default:
(...skipping 20 matching lines...) Expand all
145 GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 163 GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
146 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 164 GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
147 }; 165 };
148 for (size_t ii = 0; ii < arraysize(faces); ++ii) { 166 for (size_t ii = 0; ii < arraysize(faces); ++ii) {
149 EXPECT_CALL(*gl, TexImage2D(faces[ii], 0, GL_RGBA, 1, 1, 0, GL_RGBA, 167 EXPECT_CALL(*gl, TexImage2D(faces[ii], 0, GL_RGBA, 1, 1, 0, GL_RGBA,
150 GL_UNSIGNED_BYTE, _)) 168 GL_UNSIGNED_BYTE, _))
151 .Times(1) 169 .Times(1)
152 .RetiresOnSaturation(); 170 .RetiresOnSaturation();
153 } 171 }
154 } else { 172 } else {
155 EXPECT_CALL(*gl, TexImage2D(target, 0, GL_RGBA, 1, 1, 0, GL_RGBA, 173 if (is_3d_or_2d_array_target) {
156 GL_UNSIGNED_BYTE, _)) 174 EXPECT_CALL(*gl, TexImage3D(target, 0, GL_RGBA, 1, 1, 1, 0, GL_RGBA,
157 .Times(1) 175 GL_UNSIGNED_BYTE, _))
158 .RetiresOnSaturation(); 176 .Times(1)
177 .RetiresOnSaturation();
178 } else {
179 EXPECT_CALL(*gl, TexImage2D(target, 0, GL_RGBA, 1, 1, 0, GL_RGBA,
180 GL_UNSIGNED_BYTE, _))
181 .Times(1)
182 .RetiresOnSaturation();
183 }
159 } 184 }
160 } 185 }
161 } 186 }
162 EXPECT_CALL(*gl, BindTexture(target, 0)) 187 EXPECT_CALL(*gl, BindTexture(target, 0))
163 .Times(1) 188 .Times(1)
164 .RetiresOnSaturation(); 189 .RetiresOnSaturation();
165 } 190 }
166 191
167 void TestHelper::SetupTextureManagerInitExpectations( 192 void TestHelper::SetupTextureManagerInitExpectations(
168 ::gfx::MockGLInterface* gl, 193 ::gfx::MockGLInterface* gl,
194 const char* gl_version,
169 const char* extensions, 195 const char* extensions,
170 bool use_default_textures) { 196 bool use_default_textures) {
171 InSequence sequence; 197 InSequence sequence;
172 198
199 gfx::GLVersionInfo gl_info(gl_version, "", extensions);
200
173 SetupTextureInitializationExpectations( 201 SetupTextureInitializationExpectations(
174 gl, GL_TEXTURE_2D, use_default_textures); 202 gl, GL_TEXTURE_2D, use_default_textures);
175 SetupTextureInitializationExpectations( 203 SetupTextureInitializationExpectations(
176 gl, GL_TEXTURE_CUBE_MAP, use_default_textures); 204 gl, GL_TEXTURE_CUBE_MAP, use_default_textures);
177 205
206 if (gl_info.is_es3) {
Zhenyao Mo 2015/09/14 21:12:06 This is also incorrect. I assume you want to setu
qiankun 2015/09/15 09:14:59 Done.
207 SetupTextureInitializationExpectations(
208 gl, GL_TEXTURE_3D, use_default_textures);
209 SetupTextureInitializationExpectations(
210 gl, GL_TEXTURE_2D_ARRAY, use_default_textures);
211 }
212
178 bool ext_image_external = false; 213 bool ext_image_external = false;
179 bool arb_texture_rectangle = false; 214 bool arb_texture_rectangle = false;
180 base::CStringTokenizer t(extensions, extensions + strlen(extensions), " "); 215 base::CStringTokenizer t(extensions, extensions + strlen(extensions), " ");
181 while (t.GetNext()) { 216 while (t.GetNext()) {
182 if (t.token() == "GL_OES_EGL_image_external") { 217 if (t.token() == "GL_OES_EGL_image_external") {
183 ext_image_external = true; 218 ext_image_external = true;
184 break; 219 break;
185 } 220 }
186 if (t.token() == "GL_ARB_texture_rectangle") { 221 if (t.token() == "GL_ARB_texture_rectangle") {
187 arb_texture_rectangle = true; 222 arb_texture_rectangle = true;
(...skipping 16 matching lines...) Expand all
204 GLenum target, 239 GLenum target,
205 bool use_default_textures) { 240 bool use_default_textures) {
206 if (!use_default_textures) 241 if (!use_default_textures)
207 return; 242 return;
208 243
209 GLuint texture_id = 0; 244 GLuint texture_id = 0;
210 switch (target) { 245 switch (target) {
211 case GL_TEXTURE_2D: 246 case GL_TEXTURE_2D:
212 texture_id = kServiceDefaultTexture2dId; 247 texture_id = kServiceDefaultTexture2dId;
213 break; 248 break;
249 case GL_TEXTURE_3D:
250 texture_id = kServiceDefaultTexture3dId;
251 break;
252 case GL_TEXTURE_2D_ARRAY:
253 texture_id = kServiceDefaultTexture2dArrayId;
254 break;
214 case GL_TEXTURE_CUBE_MAP: 255 case GL_TEXTURE_CUBE_MAP:
215 texture_id = kServiceDefaultTextureCubemapId; 256 texture_id = kServiceDefaultTextureCubemapId;
216 break; 257 break;
217 case GL_TEXTURE_EXTERNAL_OES: 258 case GL_TEXTURE_EXTERNAL_OES:
218 texture_id = kServiceDefaultExternalTextureId; 259 texture_id = kServiceDefaultExternalTextureId;
219 break; 260 break;
220 case GL_TEXTURE_RECTANGLE_ARB: 261 case GL_TEXTURE_RECTANGLE_ARB:
221 texture_id = kServiceDefaultRectangleTextureId; 262 texture_id = kServiceDefaultRectangleTextureId;
222 break; 263 break;
223 default: 264 default:
224 NOTREACHED(); 265 NOTREACHED();
225 } 266 }
226 267
227 EXPECT_CALL(*gl, DeleteTextures(1, Pointee(texture_id))) 268 EXPECT_CALL(*gl, DeleteTextures(1, Pointee(texture_id)))
228 .Times(1) 269 .Times(1)
229 .RetiresOnSaturation(); 270 .RetiresOnSaturation();
230 } 271 }
231 272
232 void TestHelper::SetupTextureManagerDestructionExpectations( 273 void TestHelper::SetupTextureManagerDestructionExpectations(
233 ::gfx::MockGLInterface* gl, 274 ::gfx::MockGLInterface* gl,
275 const char* gl_version,
Zhenyao Mo 2015/09/14 21:12:06 same here.
qiankun 2015/09/15 09:14:58 Done.
234 const char* extensions, 276 const char* extensions,
235 bool use_default_textures) { 277 bool use_default_textures) {
236 SetupTextureDestructionExpectations(gl, GL_TEXTURE_2D, use_default_textures); 278 SetupTextureDestructionExpectations(gl, GL_TEXTURE_2D, use_default_textures);
237 SetupTextureDestructionExpectations( 279 SetupTextureDestructionExpectations(
238 gl, GL_TEXTURE_CUBE_MAP, use_default_textures); 280 gl, GL_TEXTURE_CUBE_MAP, use_default_textures);
239 281
282 gfx::GLVersionInfo gl_info(gl_version, "", extensions);
283
284 if (gl_info.is_es3) {
285 SetupTextureDestructionExpectations(
286 gl, GL_TEXTURE_3D, use_default_textures);
287 SetupTextureDestructionExpectations(
288 gl, GL_TEXTURE_2D_ARRAY,use_default_textures);
289 }
290
240 bool ext_image_external = false; 291 bool ext_image_external = false;
241 bool arb_texture_rectangle = false; 292 bool arb_texture_rectangle = false;
242 base::CStringTokenizer t(extensions, extensions + strlen(extensions), " "); 293 base::CStringTokenizer t(extensions, extensions + strlen(extensions), " ");
243 while (t.GetNext()) { 294 while (t.GetNext()) {
244 if (t.token() == "GL_OES_EGL_image_external") { 295 if (t.token() == "GL_OES_EGL_image_external") {
245 ext_image_external = true; 296 ext_image_external = true;
246 break; 297 break;
247 } 298 }
248 if (t.token() == "GL_ARB_texture_rectangle") { 299 if (t.token() == "GL_ARB_texture_rectangle") {
249 arb_texture_rectangle = true; 300 arb_texture_rectangle = true;
250 break; 301 break;
251 } 302 }
252 } 303 }
253 304
254 if (ext_image_external) { 305 if (ext_image_external) {
255 SetupTextureDestructionExpectations( 306 SetupTextureDestructionExpectations(
256 gl, GL_TEXTURE_EXTERNAL_OES, use_default_textures); 307 gl, GL_TEXTURE_EXTERNAL_OES, use_default_textures);
257 } 308 }
258 if (arb_texture_rectangle) { 309 if (arb_texture_rectangle) {
259 SetupTextureDestructionExpectations( 310 SetupTextureDestructionExpectations(
260 gl, GL_TEXTURE_RECTANGLE_ARB, use_default_textures); 311 gl, GL_TEXTURE_RECTANGLE_ARB, use_default_textures);
261 } 312 }
262 313
263 EXPECT_CALL(*gl, DeleteTextures(4, _)) 314 EXPECT_CALL(*gl, DeleteTextures(6, _))
264 .Times(1) 315 .Times(1)
265 .RetiresOnSaturation(); 316 .RetiresOnSaturation();
266 } 317 }
267 318
268 void TestHelper::SetupContextGroupInitExpectations( 319 void TestHelper::SetupContextGroupInitExpectations(
269 ::gfx::MockGLInterface* gl, 320 ::gfx::MockGLInterface* gl,
270 const DisallowedFeatures& disallowed_features, 321 const DisallowedFeatures& disallowed_features,
271 const char* extensions, 322 const char* extensions,
272 const char* gl_version, 323 const char* gl_version,
273 bool bind_generates_resource) { 324 bool bind_generates_resource) {
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 .RetiresOnSaturation(); 387 .RetiresOnSaturation();
337 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VARYING_FLOATS, _)) 388 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VARYING_FLOATS, _))
338 .WillOnce(SetArgumentPointee<1>(kMaxVaryingFloats)) 389 .WillOnce(SetArgumentPointee<1>(kMaxVaryingFloats))
339 .RetiresOnSaturation(); 390 .RetiresOnSaturation();
340 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS, _)) 391 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS, _))
341 .WillOnce(SetArgumentPointee<1>(kMaxVertexUniformComponents)) 392 .WillOnce(SetArgumentPointee<1>(kMaxVertexUniformComponents))
342 .RetiresOnSaturation(); 393 .RetiresOnSaturation();
343 } 394 }
344 395
345 bool use_default_textures = bind_generates_resource; 396 bool use_default_textures = bind_generates_resource;
346 SetupTextureManagerInitExpectations(gl, extensions, use_default_textures); 397 SetupTextureManagerInitExpectations(
398 gl, gl_version, extensions, use_default_textures);
347 } 399 }
348 400
349 void TestHelper::SetupFeatureInfoInitExpectations( 401 void TestHelper::SetupFeatureInfoInitExpectations(
350 ::gfx::MockGLInterface* gl, const char* extensions) { 402 ::gfx::MockGLInterface* gl, const char* extensions) {
351 SetupFeatureInfoInitExpectationsWithGLVersion(gl, extensions, "", ""); 403 SetupFeatureInfoInitExpectationsWithGLVersion(gl, extensions, "", "");
352 } 404 }
353 405
354 void TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion( 406 void TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion(
355 ::gfx::MockGLInterface* gl, 407 ::gfx::MockGLInterface* gl,
356 const char* extensions, 408 const char* extensions,
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after
877 gfx::SetGLImplementation(implementation); 929 gfx::SetGLImplementation(implementation);
878 } 930 }
879 931
880 ScopedGLImplementationSetter::~ScopedGLImplementationSetter() { 932 ScopedGLImplementationSetter::~ScopedGLImplementationSetter() {
881 gfx::SetGLImplementation(old_implementation_); 933 gfx::SetGLImplementation(old_implementation_);
882 } 934 }
883 935
884 } // namespace gles2 936 } // namespace gles2
885 } // namespace gpu 937 } // namespace gpu
886 938
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698