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

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 default argument 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
« no previous file with comments | « gpu/command_buffer/service/test_helper.h ('k') | gpu/command_buffer/service/texture_manager.h » ('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 (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 bool is_es3_enabled,
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
173 SetupTextureInitializationExpectations( 199 SetupTextureInitializationExpectations(
174 gl, GL_TEXTURE_2D, use_default_textures); 200 gl, GL_TEXTURE_2D, use_default_textures);
175 SetupTextureInitializationExpectations( 201 SetupTextureInitializationExpectations(
176 gl, GL_TEXTURE_CUBE_MAP, use_default_textures); 202 gl, GL_TEXTURE_CUBE_MAP, use_default_textures);
177 203
204 if (is_es3_enabled) {
205 SetupTextureInitializationExpectations(
206 gl, GL_TEXTURE_3D, use_default_textures);
207 SetupTextureInitializationExpectations(
208 gl, GL_TEXTURE_2D_ARRAY, use_default_textures);
209 }
210
178 bool ext_image_external = false; 211 bool ext_image_external = false;
179 bool arb_texture_rectangle = false; 212 bool arb_texture_rectangle = false;
180 base::CStringTokenizer t(extensions, extensions + strlen(extensions), " "); 213 base::CStringTokenizer t(extensions, extensions + strlen(extensions), " ");
181 while (t.GetNext()) { 214 while (t.GetNext()) {
182 if (t.token() == "GL_OES_EGL_image_external") { 215 if (t.token() == "GL_OES_EGL_image_external") {
183 ext_image_external = true; 216 ext_image_external = true;
184 break; 217 break;
185 } 218 }
186 if (t.token() == "GL_ARB_texture_rectangle") { 219 if (t.token() == "GL_ARB_texture_rectangle") {
187 arb_texture_rectangle = true; 220 arb_texture_rectangle = true;
(...skipping 16 matching lines...) Expand all
204 GLenum target, 237 GLenum target,
205 bool use_default_textures) { 238 bool use_default_textures) {
206 if (!use_default_textures) 239 if (!use_default_textures)
207 return; 240 return;
208 241
209 GLuint texture_id = 0; 242 GLuint texture_id = 0;
210 switch (target) { 243 switch (target) {
211 case GL_TEXTURE_2D: 244 case GL_TEXTURE_2D:
212 texture_id = kServiceDefaultTexture2dId; 245 texture_id = kServiceDefaultTexture2dId;
213 break; 246 break;
247 case GL_TEXTURE_3D:
248 texture_id = kServiceDefaultTexture3dId;
249 break;
250 case GL_TEXTURE_2D_ARRAY:
251 texture_id = kServiceDefaultTexture2dArrayId;
252 break;
214 case GL_TEXTURE_CUBE_MAP: 253 case GL_TEXTURE_CUBE_MAP:
215 texture_id = kServiceDefaultTextureCubemapId; 254 texture_id = kServiceDefaultTextureCubemapId;
216 break; 255 break;
217 case GL_TEXTURE_EXTERNAL_OES: 256 case GL_TEXTURE_EXTERNAL_OES:
218 texture_id = kServiceDefaultExternalTextureId; 257 texture_id = kServiceDefaultExternalTextureId;
219 break; 258 break;
220 case GL_TEXTURE_RECTANGLE_ARB: 259 case GL_TEXTURE_RECTANGLE_ARB:
221 texture_id = kServiceDefaultRectangleTextureId; 260 texture_id = kServiceDefaultRectangleTextureId;
222 break; 261 break;
223 default: 262 default:
224 NOTREACHED(); 263 NOTREACHED();
225 } 264 }
226 265
227 EXPECT_CALL(*gl, DeleteTextures(1, Pointee(texture_id))) 266 EXPECT_CALL(*gl, DeleteTextures(1, Pointee(texture_id)))
228 .Times(1) 267 .Times(1)
229 .RetiresOnSaturation(); 268 .RetiresOnSaturation();
230 } 269 }
231 270
232 void TestHelper::SetupTextureManagerDestructionExpectations( 271 void TestHelper::SetupTextureManagerDestructionExpectations(
233 ::gfx::MockGLInterface* gl, 272 ::gfx::MockGLInterface* gl,
273 bool is_es3_enabled,
234 const char* extensions, 274 const char* extensions,
235 bool use_default_textures) { 275 bool use_default_textures) {
236 SetupTextureDestructionExpectations(gl, GL_TEXTURE_2D, use_default_textures); 276 SetupTextureDestructionExpectations(gl, GL_TEXTURE_2D, use_default_textures);
237 SetupTextureDestructionExpectations( 277 SetupTextureDestructionExpectations(
238 gl, GL_TEXTURE_CUBE_MAP, use_default_textures); 278 gl, GL_TEXTURE_CUBE_MAP, use_default_textures);
239 279
280 if (is_es3_enabled) {
281 SetupTextureDestructionExpectations(
282 gl, GL_TEXTURE_3D, use_default_textures);
283 SetupTextureDestructionExpectations(
284 gl, GL_TEXTURE_2D_ARRAY,use_default_textures);
285 }
286
240 bool ext_image_external = false; 287 bool ext_image_external = false;
241 bool arb_texture_rectangle = false; 288 bool arb_texture_rectangle = false;
242 base::CStringTokenizer t(extensions, extensions + strlen(extensions), " "); 289 base::CStringTokenizer t(extensions, extensions + strlen(extensions), " ");
243 while (t.GetNext()) { 290 while (t.GetNext()) {
244 if (t.token() == "GL_OES_EGL_image_external") { 291 if (t.token() == "GL_OES_EGL_image_external") {
245 ext_image_external = true; 292 ext_image_external = true;
246 break; 293 break;
247 } 294 }
248 if (t.token() == "GL_ARB_texture_rectangle") { 295 if (t.token() == "GL_ARB_texture_rectangle") {
249 arb_texture_rectangle = true; 296 arb_texture_rectangle = true;
250 break; 297 break;
251 } 298 }
252 } 299 }
253 300
254 if (ext_image_external) { 301 if (ext_image_external) {
255 SetupTextureDestructionExpectations( 302 SetupTextureDestructionExpectations(
256 gl, GL_TEXTURE_EXTERNAL_OES, use_default_textures); 303 gl, GL_TEXTURE_EXTERNAL_OES, use_default_textures);
257 } 304 }
258 if (arb_texture_rectangle) { 305 if (arb_texture_rectangle) {
259 SetupTextureDestructionExpectations( 306 SetupTextureDestructionExpectations(
260 gl, GL_TEXTURE_RECTANGLE_ARB, use_default_textures); 307 gl, GL_TEXTURE_RECTANGLE_ARB, use_default_textures);
261 } 308 }
262 309
263 EXPECT_CALL(*gl, DeleteTextures(4, _)) 310 EXPECT_CALL(*gl, DeleteTextures(TextureManager::kNumDefaultTextures, _))
264 .Times(1) 311 .Times(1)
265 .RetiresOnSaturation(); 312 .RetiresOnSaturation();
266 } 313 }
267 314
268 void TestHelper::SetupContextGroupInitExpectations( 315 void TestHelper::SetupContextGroupInitExpectations(
269 ::gfx::MockGLInterface* gl, 316 ::gfx::MockGLInterface* gl,
270 const DisallowedFeatures& disallowed_features, 317 const DisallowedFeatures& disallowed_features,
271 const char* extensions, 318 const char* extensions,
272 const char* gl_version, 319 const char* gl_version,
273 bool bind_generates_resource) { 320 bool bind_generates_resource) {
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 .RetiresOnSaturation(); 383 .RetiresOnSaturation();
337 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VARYING_FLOATS, _)) 384 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VARYING_FLOATS, _))
338 .WillOnce(SetArgumentPointee<1>(kMaxVaryingFloats)) 385 .WillOnce(SetArgumentPointee<1>(kMaxVaryingFloats))
339 .RetiresOnSaturation(); 386 .RetiresOnSaturation();
340 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS, _)) 387 EXPECT_CALL(*gl, GetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS, _))
341 .WillOnce(SetArgumentPointee<1>(kMaxVertexUniformComponents)) 388 .WillOnce(SetArgumentPointee<1>(kMaxVertexUniformComponents))
342 .RetiresOnSaturation(); 389 .RetiresOnSaturation();
343 } 390 }
344 391
345 bool use_default_textures = bind_generates_resource; 392 bool use_default_textures = bind_generates_resource;
346 SetupTextureManagerInitExpectations(gl, extensions, use_default_textures); 393 SetupTextureManagerInitExpectations(
394 gl, false, extensions, use_default_textures);
347 } 395 }
348 396
349 void TestHelper::SetupFeatureInfoInitExpectations( 397 void TestHelper::SetupFeatureInfoInitExpectations(
350 ::gfx::MockGLInterface* gl, const char* extensions) { 398 ::gfx::MockGLInterface* gl, const char* extensions) {
351 SetupFeatureInfoInitExpectationsWithGLVersion(gl, extensions, "", ""); 399 SetupFeatureInfoInitExpectationsWithGLVersion(gl, extensions, "", "");
352 } 400 }
353 401
354 void TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion( 402 void TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion(
355 ::gfx::MockGLInterface* gl, 403 ::gfx::MockGLInterface* gl,
356 const char* extensions, 404 const char* extensions,
(...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after
898 gfx::SetGLImplementation(implementation); 946 gfx::SetGLImplementation(implementation);
899 } 947 }
900 948
901 ScopedGLImplementationSetter::~ScopedGLImplementationSetter() { 949 ScopedGLImplementationSetter::~ScopedGLImplementationSetter() {
902 gfx::SetGLImplementation(old_implementation_); 950 gfx::SetGLImplementation(old_implementation_);
903 } 951 }
904 952
905 } // namespace gles2 953 } // namespace gles2
906 } // namespace gpu 954 } // namespace gpu
907 955
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/test_helper.h ('k') | gpu/command_buffer/service/texture_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698