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

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

Issue 245923008: Optimize GLES2DecoderImpl::ApplyDirtyState. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase on refactored gles2_cmd_decoder_unittest.cc Created 6 years, 7 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/gles2_cmd_decoder_unittest.h" 5 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "gpu/command_buffer/common/gles2_cmd_format.h" 9 #include "gpu/command_buffer/common/gles2_cmd_format.h"
10 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 10 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 init.gl_version = "3.0"; 65 init.gl_version = "3.0";
66 init.bind_generates_resource = true; 66 init.bind_generates_resource = true;
67 InitDecoderWithCommandLine(init, &command_line); 67 InitDecoderWithCommandLine(init, &command_line);
68 SetupDefaultProgram(); 68 SetupDefaultProgram();
69 } 69 }
70 70
71 // Override default setup so nothing gets setup. 71 // Override default setup so nothing gets setup.
72 void GLES2DecoderManualInitTest::SetUp() { 72 void GLES2DecoderManualInitTest::SetUp() {
73 } 73 }
74 74
75 TEST_F(GLES2DecoderTest, GetIntegervCached) { 75 void GLES2DecoderManualInitTest::EnableDisableTest(GLenum cap,
76 bool enable,
77 bool expect_set) {
78 if (expect_set) {
79 SetupExpectationsForEnableDisable(cap, enable);
80 }
81 if (enable) {
82 Enable cmd;
83 cmd.Init(cap);
84 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
85 EXPECT_EQ(GL_NO_ERROR, GetGLError());
86 } else {
87 Disable cmd;
88 cmd.Init(cap);
89 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
90 EXPECT_EQ(GL_NO_ERROR, GetGLError());
91 }
92 }
93
94 TEST_P(GLES2DecoderTest, GetIntegervCached) {
76 struct TestInfo { 95 struct TestInfo {
77 GLenum pname; 96 GLenum pname;
78 GLint expected; 97 GLint expected;
79 }; 98 };
80 TestInfo tests[] = { 99 TestInfo tests[] = {
81 { 100 {
82 GL_MAX_TEXTURE_SIZE, TestHelper::kMaxTextureSize, 101 GL_MAX_TEXTURE_SIZE, TestHelper::kMaxTextureSize,
83 }, 102 },
84 { 103 {
85 GL_MAX_CUBE_MAP_TEXTURE_SIZE, TestHelper::kMaxCubeMapTextureSize, 104 GL_MAX_CUBE_MAP_TEXTURE_SIZE, TestHelper::kMaxCubeMapTextureSize,
(...skipping 15 matching lines...) Expand all
101 GetIntegerv cmd2; 120 GetIntegerv cmd2;
102 cmd2.Init(test.pname, shared_memory_id_, shared_memory_offset_); 121 cmd2.Init(test.pname, shared_memory_id_, shared_memory_offset_);
103 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); 122 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2));
104 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(test.pname), 123 EXPECT_EQ(decoder_->GetGLES2Util()->GLGetNumValuesReturned(test.pname),
105 result->GetNumResults()); 124 result->GetNumResults());
106 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 125 EXPECT_EQ(GL_NO_ERROR, GetGLError());
107 EXPECT_EQ(test.expected, result->GetData()[0]); 126 EXPECT_EQ(test.expected, result->GetData()[0]);
108 } 127 }
109 } 128 }
110 129
111 TEST_F(GLES2DecoderWithShaderTest, GetMaxValueInBufferCHROMIUM) { 130 TEST_P(GLES2DecoderWithShaderTest, GetMaxValueInBufferCHROMIUM) {
112 SetupIndexBuffer(); 131 SetupIndexBuffer();
113 GetMaxValueInBufferCHROMIUM::Result* result = 132 GetMaxValueInBufferCHROMIUM::Result* result =
114 static_cast<GetMaxValueInBufferCHROMIUM::Result*>(shared_memory_address_); 133 static_cast<GetMaxValueInBufferCHROMIUM::Result*>(shared_memory_address_);
115 *result = 0; 134 *result = 0;
116 135
117 GetMaxValueInBufferCHROMIUM cmd; 136 GetMaxValueInBufferCHROMIUM cmd;
118 cmd.Init(client_element_buffer_id_, 137 cmd.Init(client_element_buffer_id_,
119 kValidIndexRangeCount, 138 kValidIndexRangeCount,
120 GL_UNSIGNED_SHORT, 139 GL_UNSIGNED_SHORT,
121 kValidIndexRangeStart * 2, 140 kValidIndexRangeStart * 2,
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 201 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
183 cmd.Init(client_element_buffer_id_, 202 cmd.Init(client_element_buffer_id_,
184 kValidIndexRangeCount + 1, 203 kValidIndexRangeCount + 1,
185 GL_UNSIGNED_SHORT, 204 GL_UNSIGNED_SHORT,
186 kValidIndexRangeStart * 2, 205 kValidIndexRangeStart * 2,
187 kSharedMemoryId, 206 kSharedMemoryId,
188 kInvalidSharedMemoryOffset); 207 kInvalidSharedMemoryOffset);
189 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 208 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
190 } 209 }
191 210
192 TEST_F(GLES2DecoderTest, SharedIds) { 211 TEST_P(GLES2DecoderTest, SharedIds) {
193 GenSharedIdsCHROMIUM gen_cmd; 212 GenSharedIdsCHROMIUM gen_cmd;
194 RegisterSharedIdsCHROMIUM reg_cmd; 213 RegisterSharedIdsCHROMIUM reg_cmd;
195 DeleteSharedIdsCHROMIUM del_cmd; 214 DeleteSharedIdsCHROMIUM del_cmd;
196 215
197 const GLuint kNamespaceId = id_namespaces::kTextures; 216 const GLuint kNamespaceId = id_namespaces::kTextures;
198 const GLuint kExpectedId1 = 1; 217 const GLuint kExpectedId1 = 1;
199 const GLuint kExpectedId2 = 2; 218 const GLuint kExpectedId2 = 2;
200 const GLuint kExpectedId3 = 4; 219 const GLuint kExpectedId3 = 4;
201 const GLuint kRegisterId = 3; 220 const GLuint kRegisterId = 3;
202 GLuint* ids = GetSharedMemoryAs<GLuint*>(); 221 GLuint* ids = GetSharedMemoryAs<GLuint*>();
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 272
254 // Check passing in an id_offset. 273 // Check passing in an id_offset.
255 ClearSharedMemory(); 274 ClearSharedMemory();
256 const GLuint kOffset = 0xABCDEF; 275 const GLuint kOffset = 0xABCDEF;
257 gen_cmd.Init(kNamespaceId, kOffset, 2, kSharedMemoryId, kSharedMemoryOffset); 276 gen_cmd.Init(kNamespaceId, kOffset, 2, kSharedMemoryId, kSharedMemoryOffset);
258 EXPECT_EQ(error::kNoError, ExecuteCmd(gen_cmd)); 277 EXPECT_EQ(error::kNoError, ExecuteCmd(gen_cmd));
259 EXPECT_EQ(kOffset, ids[0]); 278 EXPECT_EQ(kOffset, ids[0]);
260 EXPECT_EQ(kOffset + 1, ids[1]); 279 EXPECT_EQ(kOffset + 1, ids[1]);
261 } 280 }
262 281
263 TEST_F(GLES2DecoderTest, GenSharedIdsCHROMIUMBadArgs) { 282 TEST_P(GLES2DecoderTest, GenSharedIdsCHROMIUMBadArgs) {
264 const GLuint kNamespaceId = id_namespaces::kTextures; 283 const GLuint kNamespaceId = id_namespaces::kTextures;
265 GenSharedIdsCHROMIUM cmd; 284 GenSharedIdsCHROMIUM cmd;
266 cmd.Init(kNamespaceId, 0, -1, kSharedMemoryId, kSharedMemoryOffset); 285 cmd.Init(kNamespaceId, 0, -1, kSharedMemoryId, kSharedMemoryOffset);
267 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 286 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
268 cmd.Init(kNamespaceId, 0, 1, kInvalidSharedMemoryId, kSharedMemoryOffset); 287 cmd.Init(kNamespaceId, 0, 1, kInvalidSharedMemoryId, kSharedMemoryOffset);
269 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 288 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
270 cmd.Init(kNamespaceId, 0, 1, kSharedMemoryId, kInvalidSharedMemoryOffset); 289 cmd.Init(kNamespaceId, 0, 1, kSharedMemoryId, kInvalidSharedMemoryOffset);
271 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 290 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
272 } 291 }
273 292
274 TEST_F(GLES2DecoderTest, RegisterSharedIdsCHROMIUMBadArgs) { 293 TEST_P(GLES2DecoderTest, RegisterSharedIdsCHROMIUMBadArgs) {
275 const GLuint kNamespaceId = id_namespaces::kTextures; 294 const GLuint kNamespaceId = id_namespaces::kTextures;
276 RegisterSharedIdsCHROMIUM cmd; 295 RegisterSharedIdsCHROMIUM cmd;
277 cmd.Init(kNamespaceId, -1, kSharedMemoryId, kSharedMemoryOffset); 296 cmd.Init(kNamespaceId, -1, kSharedMemoryId, kSharedMemoryOffset);
278 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 297 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
279 cmd.Init(kNamespaceId, 1, kInvalidSharedMemoryId, kSharedMemoryOffset); 298 cmd.Init(kNamespaceId, 1, kInvalidSharedMemoryId, kSharedMemoryOffset);
280 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 299 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
281 cmd.Init(kNamespaceId, 1, kSharedMemoryId, kInvalidSharedMemoryOffset); 300 cmd.Init(kNamespaceId, 1, kSharedMemoryId, kInvalidSharedMemoryOffset);
282 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 301 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
283 } 302 }
284 303
285 TEST_F(GLES2DecoderTest, RegisterSharedIdsCHROMIUMDuplicateIds) { 304 TEST_P(GLES2DecoderTest, RegisterSharedIdsCHROMIUMDuplicateIds) {
286 const GLuint kNamespaceId = id_namespaces::kTextures; 305 const GLuint kNamespaceId = id_namespaces::kTextures;
287 const GLuint kRegisterId = 3; 306 const GLuint kRegisterId = 3;
288 RegisterSharedIdsCHROMIUM cmd; 307 RegisterSharedIdsCHROMIUM cmd;
289 GLuint* ids = GetSharedMemoryAs<GLuint*>(); 308 GLuint* ids = GetSharedMemoryAs<GLuint*>();
290 ids[0] = kRegisterId; 309 ids[0] = kRegisterId;
291 cmd.Init(kNamespaceId, 1, kSharedMemoryId, kSharedMemoryOffset); 310 cmd.Init(kNamespaceId, 1, kSharedMemoryId, kSharedMemoryOffset);
292 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 311 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
293 cmd.Init(kNamespaceId, 1, kSharedMemoryId, kSharedMemoryOffset); 312 cmd.Init(kNamespaceId, 1, kSharedMemoryId, kSharedMemoryOffset);
294 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 313 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
295 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); 314 EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
296 } 315 }
297 316
298 TEST_F(GLES2DecoderTest, DeleteSharedIdsCHROMIUMBadArgs) { 317 TEST_P(GLES2DecoderTest, DeleteSharedIdsCHROMIUMBadArgs) {
299 const GLuint kNamespaceId = id_namespaces::kTextures; 318 const GLuint kNamespaceId = id_namespaces::kTextures;
300 DeleteSharedIdsCHROMIUM cmd; 319 DeleteSharedIdsCHROMIUM cmd;
301 cmd.Init(kNamespaceId, -1, kSharedMemoryId, kSharedMemoryOffset); 320 cmd.Init(kNamespaceId, -1, kSharedMemoryId, kSharedMemoryOffset);
302 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 321 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
303 cmd.Init(kNamespaceId, 1, kInvalidSharedMemoryId, kSharedMemoryOffset); 322 cmd.Init(kNamespaceId, 1, kInvalidSharedMemoryId, kSharedMemoryOffset);
304 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 323 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
305 cmd.Init(kNamespaceId, 1, kSharedMemoryId, kInvalidSharedMemoryOffset); 324 cmd.Init(kNamespaceId, 1, kSharedMemoryId, kInvalidSharedMemoryOffset);
306 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 325 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
307 } 326 }
308 327
309 TEST_F(GLES2DecoderTest, IsBuffer) { 328 TEST_P(GLES2DecoderTest, IsBuffer) {
310 EXPECT_FALSE(DoIsBuffer(client_buffer_id_)); 329 EXPECT_FALSE(DoIsBuffer(client_buffer_id_));
311 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId); 330 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId);
312 EXPECT_TRUE(DoIsBuffer(client_buffer_id_)); 331 EXPECT_TRUE(DoIsBuffer(client_buffer_id_));
313 DoDeleteBuffer(client_buffer_id_, kServiceBufferId); 332 DoDeleteBuffer(client_buffer_id_, kServiceBufferId);
314 EXPECT_FALSE(DoIsBuffer(client_buffer_id_)); 333 EXPECT_FALSE(DoIsBuffer(client_buffer_id_));
315 } 334 }
316 335
317 TEST_F(GLES2DecoderTest, IsFramebuffer) { 336 TEST_P(GLES2DecoderTest, IsFramebuffer) {
318 EXPECT_FALSE(DoIsFramebuffer(client_framebuffer_id_)); 337 EXPECT_FALSE(DoIsFramebuffer(client_framebuffer_id_));
319 DoBindFramebuffer( 338 DoBindFramebuffer(
320 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); 339 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId);
321 EXPECT_TRUE(DoIsFramebuffer(client_framebuffer_id_)); 340 EXPECT_TRUE(DoIsFramebuffer(client_framebuffer_id_));
322 DoDeleteFramebuffer(client_framebuffer_id_, 341 DoDeleteFramebuffer(client_framebuffer_id_,
323 kServiceFramebufferId, 342 kServiceFramebufferId,
324 true, 343 true,
325 GL_FRAMEBUFFER, 344 GL_FRAMEBUFFER,
326 0, 345 0,
327 true, 346 true,
328 GL_FRAMEBUFFER, 347 GL_FRAMEBUFFER,
329 0); 348 0);
330 EXPECT_FALSE(DoIsFramebuffer(client_framebuffer_id_)); 349 EXPECT_FALSE(DoIsFramebuffer(client_framebuffer_id_));
331 } 350 }
332 351
333 TEST_F(GLES2DecoderTest, IsProgram) { 352 TEST_P(GLES2DecoderTest, IsProgram) {
334 // IsProgram is true as soon as the program is created. 353 // IsProgram is true as soon as the program is created.
335 EXPECT_TRUE(DoIsProgram(client_program_id_)); 354 EXPECT_TRUE(DoIsProgram(client_program_id_));
336 EXPECT_CALL(*gl_, DeleteProgram(kServiceProgramId)) 355 EXPECT_CALL(*gl_, DeleteProgram(kServiceProgramId))
337 .Times(1) 356 .Times(1)
338 .RetiresOnSaturation(); 357 .RetiresOnSaturation();
339 DoDeleteProgram(client_program_id_, kServiceProgramId); 358 DoDeleteProgram(client_program_id_, kServiceProgramId);
340 EXPECT_FALSE(DoIsProgram(client_program_id_)); 359 EXPECT_FALSE(DoIsProgram(client_program_id_));
341 } 360 }
342 361
343 TEST_F(GLES2DecoderTest, IsRenderbuffer) { 362 TEST_P(GLES2DecoderTest, IsRenderbuffer) {
344 EXPECT_FALSE(DoIsRenderbuffer(client_renderbuffer_id_)); 363 EXPECT_FALSE(DoIsRenderbuffer(client_renderbuffer_id_));
345 DoBindRenderbuffer( 364 DoBindRenderbuffer(
346 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); 365 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId);
347 EXPECT_TRUE(DoIsRenderbuffer(client_renderbuffer_id_)); 366 EXPECT_TRUE(DoIsRenderbuffer(client_renderbuffer_id_));
348 DoDeleteRenderbuffer(client_renderbuffer_id_, kServiceRenderbufferId); 367 DoDeleteRenderbuffer(client_renderbuffer_id_, kServiceRenderbufferId);
349 EXPECT_FALSE(DoIsRenderbuffer(client_renderbuffer_id_)); 368 EXPECT_FALSE(DoIsRenderbuffer(client_renderbuffer_id_));
350 } 369 }
351 370
352 TEST_F(GLES2DecoderTest, IsShader) { 371 TEST_P(GLES2DecoderTest, IsShader) {
353 // IsShader is true as soon as the program is created. 372 // IsShader is true as soon as the program is created.
354 EXPECT_TRUE(DoIsShader(client_shader_id_)); 373 EXPECT_TRUE(DoIsShader(client_shader_id_));
355 DoDeleteShader(client_shader_id_, kServiceShaderId); 374 DoDeleteShader(client_shader_id_, kServiceShaderId);
356 EXPECT_FALSE(DoIsShader(client_shader_id_)); 375 EXPECT_FALSE(DoIsShader(client_shader_id_));
357 } 376 }
358 377
359 TEST_F(GLES2DecoderTest, IsTexture) { 378 TEST_P(GLES2DecoderTest, IsTexture) {
360 EXPECT_FALSE(DoIsTexture(client_texture_id_)); 379 EXPECT_FALSE(DoIsTexture(client_texture_id_));
361 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); 380 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
362 EXPECT_TRUE(DoIsTexture(client_texture_id_)); 381 EXPECT_TRUE(DoIsTexture(client_texture_id_));
363 DoDeleteTexture(client_texture_id_, kServiceTextureId); 382 DoDeleteTexture(client_texture_id_, kServiceTextureId);
364 EXPECT_FALSE(DoIsTexture(client_texture_id_)); 383 EXPECT_FALSE(DoIsTexture(client_texture_id_));
365 } 384 }
366 385
367 TEST_F(GLES2DecoderTest, GetMultipleIntegervCHROMIUMValidArgs) { 386 TEST_P(GLES2DecoderTest, GetMultipleIntegervCHROMIUMValidArgs) {
368 const GLsizei kCount = 3; 387 const GLsizei kCount = 3;
369 GLenum* pnames = GetSharedMemoryAs<GLenum*>(); 388 GLenum* pnames = GetSharedMemoryAs<GLenum*>();
370 pnames[0] = GL_DEPTH_WRITEMASK; 389 pnames[0] = GL_DEPTH_WRITEMASK;
371 pnames[1] = GL_COLOR_WRITEMASK; 390 pnames[1] = GL_COLOR_WRITEMASK;
372 pnames[2] = GL_STENCIL_WRITEMASK; 391 pnames[2] = GL_STENCIL_WRITEMASK;
373 GLint* results = 392 GLint* results =
374 GetSharedMemoryAsWithOffset<GLint*>(sizeof(*pnames) * kCount); 393 GetSharedMemoryAsWithOffset<GLint*>(sizeof(*pnames) * kCount);
375 394
376 GLsizei num_results = 0; 395 GLsizei num_results = 0;
377 for (GLsizei ii = 0; ii < kCount; ++ii) { 396 for (GLsizei ii = 0; ii < kCount; ++ii) {
(...skipping 17 matching lines...) Expand all
395 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 414 EXPECT_EQ(GL_NO_ERROR, GetGLError());
396 EXPECT_EQ(1, results[0]); // Depth writemask 415 EXPECT_EQ(1, results[0]); // Depth writemask
397 EXPECT_EQ(1, results[1]); // color writemask red 416 EXPECT_EQ(1, results[1]); // color writemask red
398 EXPECT_EQ(1, results[2]); // color writemask green 417 EXPECT_EQ(1, results[2]); // color writemask green
399 EXPECT_EQ(1, results[3]); // color writemask blue 418 EXPECT_EQ(1, results[3]); // color writemask blue
400 EXPECT_EQ(1, results[4]); // color writemask alpha 419 EXPECT_EQ(1, results[4]); // color writemask alpha
401 EXPECT_EQ(-1, results[5]); // stencil writemask alpha 420 EXPECT_EQ(-1, results[5]); // stencil writemask alpha
402 EXPECT_EQ(kSentinel, results[num_results]); // End of results 421 EXPECT_EQ(kSentinel, results[num_results]); // End of results
403 } 422 }
404 423
405 TEST_F(GLES2DecoderTest, GetMultipleIntegervCHROMIUMInvalidArgs) { 424 TEST_P(GLES2DecoderTest, GetMultipleIntegervCHROMIUMInvalidArgs) {
406 const GLsizei kCount = 3; 425 const GLsizei kCount = 3;
407 // Offset the pnames because GLGetError will use the first uint32. 426 // Offset the pnames because GLGetError will use the first uint32.
408 const uint32 kPnameOffset = sizeof(uint32); 427 const uint32 kPnameOffset = sizeof(uint32);
409 const uint32 kResultsOffset = kPnameOffset + sizeof(GLint) * kCount; 428 const uint32 kResultsOffset = kPnameOffset + sizeof(GLint) * kCount;
410 GLenum* pnames = GetSharedMemoryAsWithOffset<GLenum*>(kPnameOffset); 429 GLenum* pnames = GetSharedMemoryAsWithOffset<GLenum*>(kPnameOffset);
411 pnames[0] = GL_DEPTH_WRITEMASK; 430 pnames[0] = GL_DEPTH_WRITEMASK;
412 pnames[1] = GL_COLOR_WRITEMASK; 431 pnames[1] = GL_COLOR_WRITEMASK;
413 pnames[2] = GL_STENCIL_WRITEMASK; 432 pnames[2] = GL_STENCIL_WRITEMASK;
414 GLint* results = GetSharedMemoryAsWithOffset<GLint*>(kResultsOffset); 433 GLint* results = GetSharedMemoryAsWithOffset<GLint*>(kResultsOffset);
415 434
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 // Check buffer is what we expect 524 // Check buffer is what we expect
506 EXPECT_EQ(0, results[0]); 525 EXPECT_EQ(0, results[0]);
507 EXPECT_EQ(1, results[1]); 526 EXPECT_EQ(1, results[1]);
508 EXPECT_EQ(0, results[2]); 527 EXPECT_EQ(0, results[2]);
509 EXPECT_EQ(0, results[3]); 528 EXPECT_EQ(0, results[3]);
510 EXPECT_EQ(0, results[4]); 529 EXPECT_EQ(0, results[4]);
511 EXPECT_EQ(0, results[5]); 530 EXPECT_EQ(0, results[5]);
512 EXPECT_EQ(kSentinel, results[num_results]); // End of results 531 EXPECT_EQ(kSentinel, results[num_results]); // End of results
513 } 532 }
514 533
515 TEST_F(GLES2DecoderManualInitTest, BindGeneratesResourceFalse) { 534 TEST_P(GLES2DecoderManualInitTest, BindGeneratesResourceFalse) {
516 InitState init; 535 InitState init;
517 init.gl_version = "3.0"; 536 init.gl_version = "3.0";
518 InitDecoder(init); 537 InitDecoder(init);
519 538
520 BindTexture cmd1; 539 BindTexture cmd1;
521 cmd1.Init(GL_TEXTURE_2D, kInvalidClientId); 540 cmd1.Init(GL_TEXTURE_2D, kInvalidClientId);
522 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1)); 541 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd1));
523 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 542 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
524 543
525 BindBuffer cmd2; 544 BindBuffer cmd2;
526 cmd2.Init(GL_ARRAY_BUFFER, kInvalidClientId); 545 cmd2.Init(GL_ARRAY_BUFFER, kInvalidClientId);
527 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2)); 546 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd2));
528 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 547 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
529 548
530 BindFramebuffer cmd3; 549 BindFramebuffer cmd3;
531 cmd3.Init(GL_FRAMEBUFFER, kInvalidClientId); 550 cmd3.Init(GL_FRAMEBUFFER, kInvalidClientId);
532 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd3)); 551 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd3));
533 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 552 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
534 553
535 BindRenderbuffer cmd4; 554 BindRenderbuffer cmd4;
536 cmd4.Init(GL_RENDERBUFFER, kInvalidClientId); 555 cmd4.Init(GL_RENDERBUFFER, kInvalidClientId);
537 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd4)); 556 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd4));
538 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); 557 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError());
539 } 558 }
540 559
541 TEST_F(GLES2DecoderTest, EnableFeatureCHROMIUMBadBucket) { 560 TEST_P(GLES2DecoderTest, EnableFeatureCHROMIUMBadBucket) {
542 const uint32 kBadBucketId = 123; 561 const uint32 kBadBucketId = 123;
543 EnableFeatureCHROMIUM cmd; 562 EnableFeatureCHROMIUM cmd;
544 cmd.Init(kBadBucketId, shared_memory_id_, shared_memory_offset_); 563 cmd.Init(kBadBucketId, shared_memory_id_, shared_memory_offset_);
545 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 564 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
546 } 565 }
547 566
548 TEST_F(GLES2DecoderTest, RequestExtensionCHROMIUMBadBucket) { 567 TEST_P(GLES2DecoderTest, RequestExtensionCHROMIUMBadBucket) {
549 const uint32 kBadBucketId = 123; 568 const uint32 kBadBucketId = 123;
550 RequestExtensionCHROMIUM cmd; 569 RequestExtensionCHROMIUM cmd;
551 cmd.Init(kBadBucketId); 570 cmd.Init(kBadBucketId);
552 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); 571 EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
553 } 572 }
554 573
555 TEST_F(GLES2DecoderTest, BeginQueryEXTDisabled) { 574 TEST_P(GLES2DecoderTest, BeginQueryEXTDisabled) {
556 // Test something fails if off. 575 // Test something fails if off.
557 } 576 }
558 577
559 TEST_F(GLES2DecoderManualInitTest, BeginEndQueryEXT) { 578 TEST_P(GLES2DecoderManualInitTest, BeginEndQueryEXT) {
560 InitState init; 579 InitState init;
561 init.extensions = "GL_EXT_occlusion_query_boolean"; 580 init.extensions = "GL_EXT_occlusion_query_boolean";
562 init.gl_version = "opengl es 2.0"; 581 init.gl_version = "opengl es 2.0";
563 init.has_alpha = true; 582 init.has_alpha = true;
564 init.request_alpha = true; 583 init.request_alpha = true;
565 init.bind_generates_resource = true; 584 init.bind_generates_resource = true;
566 InitDecoder(init); 585 InitDecoder(init);
567 586
568 // Test end fails if no begin. 587 // Test end fails if no begin.
569 EndQueryEXT end_cmd; 588 EndQueryEXT end_cmd;
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
730 !process_success); 749 !process_success);
731 750
732 if (query_type.is_gl) { 751 if (query_type.is_gl) {
733 EXPECT_CALL(*gl, DeleteQueriesARB(1, _)).Times(1).RetiresOnSaturation(); 752 EXPECT_CALL(*gl, DeleteQueriesARB(1, _)).Times(1).RetiresOnSaturation();
734 } 753 }
735 if (query_type.type == GL_COMMANDS_COMPLETED_CHROMIUM) 754 if (query_type.type == GL_COMMANDS_COMPLETED_CHROMIUM)
736 EXPECT_CALL(*gl, DeleteSync(kGlSync)).Times(1).RetiresOnSaturation(); 755 EXPECT_CALL(*gl, DeleteSync(kGlSync)).Times(1).RetiresOnSaturation();
737 test->ResetDecoder(); 756 test->ResetDecoder();
738 } 757 }
739 758
740 TEST_F(GLES2DecoderManualInitTest, BeginEndQueryEXTBadMemoryIdFails) { 759 TEST_P(GLES2DecoderManualInitTest, BeginEndQueryEXTBadMemoryIdFails) {
741 for (size_t i = 0; i < arraysize(kQueryTypes); ++i) { 760 for (size_t i = 0; i < arraysize(kQueryTypes); ++i) {
742 CheckBeginEndQueryBadMemoryFails(this, 761 CheckBeginEndQueryBadMemoryFails(this,
743 kNewClientId, 762 kNewClientId,
744 kNewServiceId, 763 kNewServiceId,
745 kQueryTypes[i], 764 kQueryTypes[i],
746 kInvalidSharedMemoryId, 765 kInvalidSharedMemoryId,
747 kSharedMemoryOffset); 766 kSharedMemoryOffset);
748 } 767 }
749 } 768 }
750 769
751 TEST_F(GLES2DecoderManualInitTest, BeginEndQueryEXTBadMemoryOffsetFails) { 770 TEST_P(GLES2DecoderManualInitTest, BeginEndQueryEXTBadMemoryOffsetFails) {
752 for (size_t i = 0; i < arraysize(kQueryTypes); ++i) { 771 for (size_t i = 0; i < arraysize(kQueryTypes); ++i) {
753 // Out-of-bounds. 772 // Out-of-bounds.
754 CheckBeginEndQueryBadMemoryFails(this, 773 CheckBeginEndQueryBadMemoryFails(this,
755 kNewClientId, 774 kNewClientId,
756 kNewServiceId, 775 kNewServiceId,
757 kQueryTypes[i], 776 kQueryTypes[i],
758 kSharedMemoryId, 777 kSharedMemoryId,
759 kInvalidSharedMemoryOffset); 778 kInvalidSharedMemoryOffset);
760 // Overflow. 779 // Overflow.
761 CheckBeginEndQueryBadMemoryFails(this, 780 CheckBeginEndQueryBadMemoryFails(this,
762 kNewClientId, 781 kNewClientId,
763 kNewServiceId, 782 kNewServiceId,
764 kQueryTypes[i], 783 kQueryTypes[i],
765 kSharedMemoryId, 784 kSharedMemoryId,
766 0xfffffffcu); 785 0xfffffffcu);
767 } 786 }
768 } 787 }
769 788
770 TEST_F(GLES2DecoderTest, BeginEndQueryEXTCommandsIssuedCHROMIUM) { 789 TEST_P(GLES2DecoderTest, BeginEndQueryEXTCommandsIssuedCHROMIUM) {
771 BeginQueryEXT begin_cmd; 790 BeginQueryEXT begin_cmd;
772 791
773 GenHelper<GenQueriesEXTImmediate>(kNewClientId); 792 GenHelper<GenQueriesEXTImmediate>(kNewClientId);
774 793
775 // Test valid parameters work. 794 // Test valid parameters work.
776 begin_cmd.Init(GL_COMMANDS_ISSUED_CHROMIUM, 795 begin_cmd.Init(GL_COMMANDS_ISSUED_CHROMIUM,
777 kNewClientId, 796 kNewClientId,
778 kSharedMemoryId, 797 kSharedMemoryId,
779 kSharedMemoryOffset); 798 kSharedMemoryOffset);
780 EXPECT_EQ(error::kNoError, ExecuteCmd(begin_cmd)); 799 EXPECT_EQ(error::kNoError, ExecuteCmd(begin_cmd));
781 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 800 EXPECT_EQ(GL_NO_ERROR, GetGLError());
782 801
783 QueryManager* query_manager = decoder_->GetQueryManager(); 802 QueryManager* query_manager = decoder_->GetQueryManager();
784 ASSERT_TRUE(query_manager != NULL); 803 ASSERT_TRUE(query_manager != NULL);
785 QueryManager::Query* query = query_manager->GetQuery(kNewClientId); 804 QueryManager::Query* query = query_manager->GetQuery(kNewClientId);
786 ASSERT_TRUE(query != NULL); 805 ASSERT_TRUE(query != NULL);
787 EXPECT_FALSE(query->pending()); 806 EXPECT_FALSE(query->pending());
788 807
789 // Test end succeeds 808 // Test end succeeds
790 EndQueryEXT end_cmd; 809 EndQueryEXT end_cmd;
791 end_cmd.Init(GL_COMMANDS_ISSUED_CHROMIUM, 1); 810 end_cmd.Init(GL_COMMANDS_ISSUED_CHROMIUM, 1);
792 EXPECT_EQ(error::kNoError, ExecuteCmd(end_cmd)); 811 EXPECT_EQ(error::kNoError, ExecuteCmd(end_cmd));
793 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 812 EXPECT_EQ(GL_NO_ERROR, GetGLError());
794 EXPECT_FALSE(query->pending()); 813 EXPECT_FALSE(query->pending());
795 } 814 }
796 815
797 TEST_F(GLES2DecoderTest, BeginEndQueryEXTGetErrorQueryCHROMIUM) { 816 TEST_P(GLES2DecoderTest, BeginEndQueryEXTGetErrorQueryCHROMIUM) {
798 BeginQueryEXT begin_cmd; 817 BeginQueryEXT begin_cmd;
799 818
800 GenHelper<GenQueriesEXTImmediate>(kNewClientId); 819 GenHelper<GenQueriesEXTImmediate>(kNewClientId);
801 820
802 // Test valid parameters work. 821 // Test valid parameters work.
803 begin_cmd.Init(GL_GET_ERROR_QUERY_CHROMIUM, 822 begin_cmd.Init(GL_GET_ERROR_QUERY_CHROMIUM,
804 kNewClientId, 823 kNewClientId,
805 kSharedMemoryId, 824 kSharedMemoryId,
806 kSharedMemoryOffset); 825 kSharedMemoryOffset);
807 EXPECT_EQ(error::kNoError, ExecuteCmd(begin_cmd)); 826 EXPECT_EQ(error::kNoError, ExecuteCmd(begin_cmd));
(...skipping 14 matching lines...) Expand all
822 841
823 EndQueryEXT end_cmd; 842 EndQueryEXT end_cmd;
824 end_cmd.Init(GL_GET_ERROR_QUERY_CHROMIUM, 1); 843 end_cmd.Init(GL_GET_ERROR_QUERY_CHROMIUM, 1);
825 EXPECT_EQ(error::kNoError, ExecuteCmd(end_cmd)); 844 EXPECT_EQ(error::kNoError, ExecuteCmd(end_cmd));
826 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 845 EXPECT_EQ(GL_NO_ERROR, GetGLError());
827 EXPECT_FALSE(query->pending()); 846 EXPECT_FALSE(query->pending());
828 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_VALUE), 847 EXPECT_EQ(static_cast<GLenum>(GL_INVALID_VALUE),
829 static_cast<GLenum>(sync->result)); 848 static_cast<GLenum>(sync->result));
830 } 849 }
831 850
832 TEST_F(GLES2DecoderManualInitTest, BeginEndQueryEXTCommandsCompletedCHROMIUM) { 851 TEST_P(GLES2DecoderManualInitTest, BeginEndQueryEXTCommandsCompletedCHROMIUM) {
833 InitState init; 852 InitState init;
834 init.extensions = "GL_EXT_occlusion_query_boolean GL_ARB_sync"; 853 init.extensions = "GL_EXT_occlusion_query_boolean GL_ARB_sync";
835 init.gl_version = "opengl es 2.0"; 854 init.gl_version = "opengl es 2.0";
836 init.has_alpha = true; 855 init.has_alpha = true;
837 init.request_alpha = true; 856 init.request_alpha = true;
838 init.bind_generates_resource = true; 857 init.bind_generates_resource = true;
839 InitDecoder(init); 858 InitDecoder(init);
840 859
841 GenHelper<GenQueriesEXTImmediate>(kNewClientId); 860 GenHelper<GenQueriesEXTImmediate>(kNewClientId);
842 861
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
881 900
882 EXPECT_TRUE(process_success); 901 EXPECT_TRUE(process_success);
883 EXPECT_FALSE(query->pending()); 902 EXPECT_FALSE(query->pending());
884 QuerySync* sync = static_cast<QuerySync*>(shared_memory_address_); 903 QuerySync* sync = static_cast<QuerySync*>(shared_memory_address_);
885 EXPECT_EQ(static_cast<GLenum>(0), static_cast<GLenum>(sync->result)); 904 EXPECT_EQ(static_cast<GLenum>(0), static_cast<GLenum>(sync->result));
886 905
887 EXPECT_CALL(*gl_, DeleteSync(kGlSync)).Times(1).RetiresOnSaturation(); 906 EXPECT_CALL(*gl_, DeleteSync(kGlSync)).Times(1).RetiresOnSaturation();
888 ResetDecoder(); 907 ResetDecoder();
889 } 908 }
890 909
891 TEST_F(GLES2DecoderTest, IsEnabledReturnsCachedValue) { 910 TEST_P(GLES2DecoderTest, IsEnabledReturnsCachedValue) {
892 // NOTE: There are no expectations because no GL functions should be 911 // NOTE: There are no expectations because no GL functions should be
893 // called for DEPTH_TEST or STENCIL_TEST 912 // called for DEPTH_TEST or STENCIL_TEST
894 static const GLenum kStates[] = { 913 static const GLenum kStates[] = {
895 GL_DEPTH_TEST, GL_STENCIL_TEST, 914 GL_DEPTH_TEST, GL_STENCIL_TEST,
896 }; 915 };
897 for (size_t ii = 0; ii < arraysize(kStates); ++ii) { 916 for (size_t ii = 0; ii < arraysize(kStates); ++ii) {
898 Enable enable_cmd; 917 Enable enable_cmd;
899 GLenum state = kStates[ii]; 918 GLenum state = kStates[ii];
900 enable_cmd.Init(state); 919 enable_cmd.Init(state);
901 EXPECT_EQ(error::kNoError, ExecuteCmd(enable_cmd)); 920 EXPECT_EQ(error::kNoError, ExecuteCmd(enable_cmd));
902 IsEnabled::Result* result = 921 IsEnabled::Result* result =
903 static_cast<IsEnabled::Result*>(shared_memory_address_); 922 static_cast<IsEnabled::Result*>(shared_memory_address_);
904 IsEnabled is_enabled_cmd; 923 IsEnabled is_enabled_cmd;
905 is_enabled_cmd.Init(state, shared_memory_id_, shared_memory_offset_); 924 is_enabled_cmd.Init(state, shared_memory_id_, shared_memory_offset_);
906 EXPECT_EQ(error::kNoError, ExecuteCmd(is_enabled_cmd)); 925 EXPECT_EQ(error::kNoError, ExecuteCmd(is_enabled_cmd));
907 EXPECT_NE(0u, *result); 926 EXPECT_NE(0u, *result);
908 Disable disable_cmd; 927 Disable disable_cmd;
909 disable_cmd.Init(state); 928 disable_cmd.Init(state);
910 EXPECT_EQ(error::kNoError, ExecuteCmd(disable_cmd)); 929 EXPECT_EQ(error::kNoError, ExecuteCmd(disable_cmd));
911 EXPECT_EQ(error::kNoError, ExecuteCmd(is_enabled_cmd)); 930 EXPECT_EQ(error::kNoError, ExecuteCmd(is_enabled_cmd));
912 EXPECT_EQ(0u, *result); 931 EXPECT_EQ(0u, *result);
913 } 932 }
914 } 933 }
915 934
916 TEST_F(GLES2DecoderManualInitTest, GpuMemoryManagerCHROMIUM) { 935 TEST_P(GLES2DecoderManualInitTest, GpuMemoryManagerCHROMIUM) {
917 InitState init; 936 InitState init;
918 init.extensions = "GL_ARB_texture_rectangle"; 937 init.extensions = "GL_ARB_texture_rectangle";
919 init.gl_version = "3.0"; 938 init.gl_version = "3.0";
920 init.bind_generates_resource = true; 939 init.bind_generates_resource = true;
921 InitDecoder(init); 940 InitDecoder(init);
922 941
923 Texture* texture = GetTexture(client_texture_id_)->texture(); 942 Texture* texture = GetTexture(client_texture_id_)->texture();
924 EXPECT_TRUE(texture != NULL); 943 EXPECT_TRUE(texture != NULL);
925 EXPECT_TRUE(texture->pool() == GL_TEXTURE_POOL_UNMANAGED_CHROMIUM); 944 EXPECT_TRUE(texture->pool() == GL_TEXTURE_POOL_UNMANAGED_CHROMIUM);
926 945
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
980 struct PoolInfo { 999 struct PoolInfo {
981 PoolInfo() : initial_size(0), size(0) {} 1000 PoolInfo() : initial_size(0), size(0) {}
982 size_t initial_size; 1001 size_t initial_size;
983 size_t size; 1002 size_t size;
984 }; 1003 };
985 std::map<Pool, PoolInfo> pool_infos_; 1004 std::map<Pool, PoolInfo> pool_infos_;
986 }; 1005 };
987 1006
988 } // anonymous namespace. 1007 } // anonymous namespace.
989 1008
990 TEST_F(GLES2DecoderManualInitTest, MemoryTrackerInitialSize) { 1009 TEST_P(GLES2DecoderManualInitTest, MemoryTrackerInitialSize) {
991 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = 1010 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker =
992 new SizeOnlyMemoryTracker(); 1011 new SizeOnlyMemoryTracker();
993 set_memory_tracker(memory_tracker.get()); 1012 set_memory_tracker(memory_tracker.get());
994 InitState init; 1013 InitState init;
995 init.gl_version = "3.0"; 1014 init.gl_version = "3.0";
996 init.bind_generates_resource = true; 1015 init.bind_generates_resource = true;
997 InitDecoder(init); 1016 InitDecoder(init);
998 // Expect that initial size - size is 0. 1017 // Expect that initial size - size is 0.
999 EXPECT_EQ(0u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); 1018 EXPECT_EQ(0u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged));
1000 EXPECT_EQ(0u, memory_tracker->GetPoolSize(MemoryTracker::kManaged)); 1019 EXPECT_EQ(0u, memory_tracker->GetPoolSize(MemoryTracker::kManaged));
1001 } 1020 }
1002 1021
1003 TEST_F(GLES2DecoderManualInitTest, MemoryTrackerTexImage2D) { 1022 TEST_P(GLES2DecoderManualInitTest, MemoryTrackerTexImage2D) {
1004 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = 1023 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker =
1005 new SizeOnlyMemoryTracker(); 1024 new SizeOnlyMemoryTracker();
1006 set_memory_tracker(memory_tracker.get()); 1025 set_memory_tracker(memory_tracker.get());
1007 InitState init; 1026 InitState init;
1008 init.gl_version = "3.0"; 1027 init.gl_version = "3.0";
1009 init.bind_generates_resource = true; 1028 init.bind_generates_resource = true;
1010 InitDecoder(init); 1029 InitDecoder(init);
1011 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); 1030 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
1012 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128)) 1031 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128))
1013 .WillOnce(Return(true)) 1032 .WillOnce(Return(true))
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1051 0, 1070 0,
1052 GL_RGBA, 1071 GL_RGBA,
1053 GL_UNSIGNED_BYTE, 1072 GL_UNSIGNED_BYTE,
1054 kSharedMemoryId, 1073 kSharedMemoryId,
1055 kSharedMemoryOffset); 1074 kSharedMemoryOffset);
1056 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1075 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1057 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); 1076 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError());
1058 EXPECT_EQ(64u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); 1077 EXPECT_EQ(64u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged));
1059 } 1078 }
1060 1079
1061 TEST_F(GLES2DecoderManualInitTest, MemoryTrackerTexStorage2DEXT) { 1080 TEST_P(GLES2DecoderManualInitTest, MemoryTrackerTexStorage2DEXT) {
1062 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = 1081 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker =
1063 new SizeOnlyMemoryTracker(); 1082 new SizeOnlyMemoryTracker();
1064 set_memory_tracker(memory_tracker.get()); 1083 set_memory_tracker(memory_tracker.get());
1065 InitState init; 1084 InitState init;
1066 init.gl_version = "3.0"; 1085 init.gl_version = "3.0";
1067 init.bind_generates_resource = true; 1086 init.bind_generates_resource = true;
1068 InitDecoder(init); 1087 InitDecoder(init);
1069 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); 1088 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId);
1070 // Check we get out of memory and no call to glTexStorage2DEXT 1089 // Check we get out of memory and no call to glTexStorage2DEXT
1071 // if Ensure fails. 1090 // if Ensure fails.
1072 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128)) 1091 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128))
1073 .WillOnce(Return(false)) 1092 .WillOnce(Return(false))
1074 .RetiresOnSaturation(); 1093 .RetiresOnSaturation();
1075 TexStorage2DEXT cmd; 1094 TexStorage2DEXT cmd;
1076 cmd.Init(GL_TEXTURE_2D, 1, GL_RGBA8, 8, 4); 1095 cmd.Init(GL_TEXTURE_2D, 1, GL_RGBA8, 8, 4);
1077 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1096 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1078 EXPECT_EQ(0u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); 1097 EXPECT_EQ(0u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged));
1079 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); 1098 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError());
1080 } 1099 }
1081 1100
1082 TEST_F(GLES2DecoderManualInitTest, MemoryTrackerCopyTexImage2D) { 1101 TEST_P(GLES2DecoderManualInitTest, MemoryTrackerCopyTexImage2D) {
1083 GLenum target = GL_TEXTURE_2D; 1102 GLenum target = GL_TEXTURE_2D;
1084 GLint level = 0; 1103 GLint level = 0;
1085 GLenum internal_format = GL_RGBA; 1104 GLenum internal_format = GL_RGBA;
1086 GLsizei width = 4; 1105 GLsizei width = 4;
1087 GLsizei height = 8; 1106 GLsizei height = 8;
1088 GLint border = 0; 1107 GLint border = 0;
1089 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = 1108 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker =
1090 new SizeOnlyMemoryTracker(); 1109 new SizeOnlyMemoryTracker();
1091 set_memory_tracker(memory_tracker.get()); 1110 set_memory_tracker(memory_tracker.get());
1092 InitState init; 1111 InitState init;
(...skipping 22 matching lines...) Expand all
1115 EXPECT_EQ(GL_NO_ERROR, GetGLError()); 1134 EXPECT_EQ(GL_NO_ERROR, GetGLError());
1116 // Check we get out of memory and no call to glCopyTexImage2D if Ensure fails. 1135 // Check we get out of memory and no call to glCopyTexImage2D if Ensure fails.
1117 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128)) 1136 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128))
1118 .WillOnce(Return(false)) 1137 .WillOnce(Return(false))
1119 .RetiresOnSaturation(); 1138 .RetiresOnSaturation();
1120 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1139 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1121 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); 1140 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError());
1122 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); 1141 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged));
1123 } 1142 }
1124 1143
1125 TEST_F(GLES2DecoderManualInitTest, MemoryTrackerRenderbufferStorage) { 1144 TEST_P(GLES2DecoderManualInitTest, MemoryTrackerRenderbufferStorage) {
1126 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = 1145 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker =
1127 new SizeOnlyMemoryTracker(); 1146 new SizeOnlyMemoryTracker();
1128 set_memory_tracker(memory_tracker.get()); 1147 set_memory_tracker(memory_tracker.get());
1129 InitState init; 1148 InitState init;
1130 init.gl_version = "3.0"; 1149 init.gl_version = "3.0";
1131 init.bind_generates_resource = true; 1150 init.bind_generates_resource = true;
1132 InitDecoder(init); 1151 InitDecoder(init);
1133 DoBindRenderbuffer( 1152 DoBindRenderbuffer(
1134 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId); 1153 GL_RENDERBUFFER, client_renderbuffer_id_, kServiceRenderbufferId);
1135 EXPECT_CALL(*gl_, GetError()) 1154 EXPECT_CALL(*gl_, GetError())
(...skipping 14 matching lines...) Expand all
1150 // Check we get out of memory and no call to glRenderbufferStorage if Ensure 1169 // Check we get out of memory and no call to glRenderbufferStorage if Ensure
1151 // fails. 1170 // fails.
1152 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128)) 1171 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128))
1153 .WillOnce(Return(false)) 1172 .WillOnce(Return(false))
1154 .RetiresOnSaturation(); 1173 .RetiresOnSaturation();
1155 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1174 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1156 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); 1175 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError());
1157 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged)); 1176 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kUnmanaged));
1158 } 1177 }
1159 1178
1160 TEST_F(GLES2DecoderManualInitTest, MemoryTrackerBufferData) { 1179 TEST_P(GLES2DecoderManualInitTest, MemoryTrackerBufferData) {
1161 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker = 1180 scoped_refptr<SizeOnlyMemoryTracker> memory_tracker =
1162 new SizeOnlyMemoryTracker(); 1181 new SizeOnlyMemoryTracker();
1163 set_memory_tracker(memory_tracker.get()); 1182 set_memory_tracker(memory_tracker.get());
1164 InitState init; 1183 InitState init;
1165 init.gl_version = "3.0"; 1184 init.gl_version = "3.0";
1166 init.bind_generates_resource = true; 1185 init.bind_generates_resource = true;
1167 InitDecoder(init); 1186 InitDecoder(init);
1168 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId); 1187 DoBindBuffer(GL_ARRAY_BUFFER, client_buffer_id_, kServiceBufferId);
1169 EXPECT_CALL(*gl_, GetError()) 1188 EXPECT_CALL(*gl_, GetError())
1170 .WillOnce(Return(GL_NO_ERROR)) 1189 .WillOnce(Return(GL_NO_ERROR))
(...skipping 13 matching lines...) Expand all
1184 // Check we get out of memory and no call to glBufferData if Ensure 1203 // Check we get out of memory and no call to glBufferData if Ensure
1185 // fails. 1204 // fails.
1186 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128)) 1205 EXPECT_CALL(*memory_tracker.get(), EnsureGPUMemoryAvailable(128))
1187 .WillOnce(Return(false)) 1206 .WillOnce(Return(false))
1188 .RetiresOnSaturation(); 1207 .RetiresOnSaturation();
1189 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); 1208 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
1190 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError()); 1209 EXPECT_EQ(GL_OUT_OF_MEMORY, GetGLError());
1191 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kManaged)); 1210 EXPECT_EQ(128u, memory_tracker->GetPoolSize(MemoryTracker::kManaged));
1192 } 1211 }
1193 1212
1213 INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderTest, ::testing::Bool());
1214
1215 INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderWithShaderTest, ::testing::Bool());
1216
1217 INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderManualInitTest, ::testing::Bool());
1218
1219 INSTANTIATE_TEST_CASE_P(Service,
1220 GLES2DecoderRGBBackbufferTest,
1221 ::testing::Bool());
1222
1194 } // namespace gles2 1223 } // namespace gles2
1195 } // namespace gpu 1224 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/gles2_cmd_decoder_unittest.h ('k') | gpu/command_buffer/service/gles2_cmd_decoder_unittest_1.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698