OLD | NEW |
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 26 matching lines...) Expand all Loading... |
37 using ::testing::AtLeast; | 37 using ::testing::AtLeast; |
38 using ::testing::DoAll; | 38 using ::testing::DoAll; |
39 using ::testing::InSequence; | 39 using ::testing::InSequence; |
40 using ::testing::Invoke; | 40 using ::testing::Invoke; |
41 using ::testing::MatcherCast; | 41 using ::testing::MatcherCast; |
42 using ::testing::Mock; | 42 using ::testing::Mock; |
43 using ::testing::Pointee; | 43 using ::testing::Pointee; |
44 using ::testing::Return; | 44 using ::testing::Return; |
45 using ::testing::SaveArg; | 45 using ::testing::SaveArg; |
46 using ::testing::SetArrayArgument; | 46 using ::testing::SetArrayArgument; |
47 using ::testing::SetArgumentPointee; | |
48 using ::testing::SetArgPointee; | 47 using ::testing::SetArgPointee; |
49 using ::testing::StrEq; | 48 using ::testing::StrEq; |
50 using ::testing::StrictMock; | 49 using ::testing::StrictMock; |
51 | 50 |
52 namespace gpu { | 51 namespace gpu { |
53 namespace gles2 { | 52 namespace gles2 { |
54 | 53 |
55 using namespace cmds; | 54 using namespace cmds; |
56 | 55 |
57 void GLES2DecoderRGBBackbufferTest::SetUp() { | 56 void GLES2DecoderRGBBackbufferTest::SetUp() { |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
275 } | 274 } |
276 | 275 |
277 TEST_P(GLES2DecoderTest, IsTexture) { | 276 TEST_P(GLES2DecoderTest, IsTexture) { |
278 EXPECT_FALSE(DoIsTexture(client_texture_id_)); | 277 EXPECT_FALSE(DoIsTexture(client_texture_id_)); |
279 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 278 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
280 EXPECT_TRUE(DoIsTexture(client_texture_id_)); | 279 EXPECT_TRUE(DoIsTexture(client_texture_id_)); |
281 DoDeleteTexture(client_texture_id_, kServiceTextureId); | 280 DoDeleteTexture(client_texture_id_, kServiceTextureId); |
282 EXPECT_FALSE(DoIsTexture(client_texture_id_)); | 281 EXPECT_FALSE(DoIsTexture(client_texture_id_)); |
283 } | 282 } |
284 | 283 |
285 TEST_P(GLES2DecoderTest, ClientWaitSyncValid) { | 284 TEST_P(GLES3DecoderTest, GetInternalformativValidArgsSamples) { |
| 285 const GLint kNumSampleCounts = 8; |
| 286 typedef cmds::GetInternalformativ::Result Result; |
| 287 Result* result = static_cast<Result*>(shared_memory_address_); |
| 288 EXPECT_CALL(*gl_, GetInternalformativ(GL_RENDERBUFFER, GL_RGBA8, |
| 289 GL_NUM_SAMPLE_COUNTS, 1, _)) |
| 290 .WillOnce(SetArgPointee<4>(kNumSampleCounts)) |
| 291 .RetiresOnSaturation(); |
| 292 EXPECT_CALL(*gl_, GetInternalformativ(GL_RENDERBUFFER, GL_RGBA8, |
| 293 GL_SAMPLES, kNumSampleCounts, |
| 294 result->GetData())) |
| 295 .Times(1) |
| 296 .RetiresOnSaturation(); |
| 297 result->size = 0; |
| 298 cmds::GetInternalformativ cmd; |
| 299 cmd.Init(GL_RENDERBUFFER, GL_RGBA8, GL_SAMPLES, |
| 300 shared_memory_id_, shared_memory_offset_); |
| 301 decoder_->set_unsafe_es3_apis_enabled(true); |
| 302 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 303 EXPECT_EQ(kNumSampleCounts, result->GetNumResults()); |
| 304 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 305 decoder_->set_unsafe_es3_apis_enabled(false); |
| 306 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
| 307 } |
| 308 |
| 309 TEST_P(GLES3DecoderTest, GetInternalformativValidArgsNumSampleCounts) { |
| 310 const GLint kNumSampleCounts = 8; |
| 311 typedef cmds::GetInternalformativ::Result Result; |
| 312 Result* result = static_cast<Result*>(shared_memory_address_); |
| 313 EXPECT_CALL(*gl_, GetInternalformativ(GL_RENDERBUFFER, GL_RGBA8, |
| 314 GL_NUM_SAMPLE_COUNTS, 1, _)) |
| 315 .WillOnce(SetArgPointee<4>(kNumSampleCounts)) |
| 316 .RetiresOnSaturation(); |
| 317 result->size = 0; |
| 318 cmds::GetInternalformativ cmd; |
| 319 cmd.Init(GL_RENDERBUFFER, GL_RGBA8, GL_NUM_SAMPLE_COUNTS, |
| 320 shared_memory_id_, shared_memory_offset_); |
| 321 decoder_->set_unsafe_es3_apis_enabled(true); |
| 322 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
| 323 EXPECT_EQ(1, result->GetNumResults()); |
| 324 EXPECT_EQ(kNumSampleCounts, result->GetData()[0]); |
| 325 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
| 326 decoder_->set_unsafe_es3_apis_enabled(false); |
| 327 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
| 328 } |
| 329 |
| 330 TEST_P(GLES3DecoderTest, ClientWaitSyncValid) { |
286 typedef cmds::ClientWaitSync::Result Result; | 331 typedef cmds::ClientWaitSync::Result Result; |
287 Result* result = static_cast<Result*>(shared_memory_address_); | 332 Result* result = static_cast<Result*>(shared_memory_address_); |
288 cmds::ClientWaitSync cmd; | 333 cmds::ClientWaitSync cmd; |
289 uint32_t v32_0 = 0, v32_1 = 0; | 334 uint32_t v32_0 = 0, v32_1 = 0; |
290 GLES2Util::MapUint64ToTwoUint32(0, &v32_0, &v32_1); | 335 GLES2Util::MapUint64ToTwoUint32(0, &v32_0, &v32_1); |
291 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, v32_0, v32_1, | 336 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, v32_0, v32_1, |
292 shared_memory_id_, shared_memory_offset_); | 337 shared_memory_id_, shared_memory_offset_); |
293 EXPECT_CALL(*gl_, | 338 EXPECT_CALL(*gl_, |
294 ClientWaitSync(reinterpret_cast<GLsync>(kServiceSyncId), | 339 ClientWaitSync(reinterpret_cast<GLsync>(kServiceSyncId), |
295 GL_SYNC_FLUSH_COMMANDS_BIT, 0)) | 340 GL_SYNC_FLUSH_COMMANDS_BIT, 0)) |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
454 // Test id = 0 fails. | 499 // Test id = 0 fails. |
455 begin_cmd.Init( | 500 begin_cmd.Init( |
456 GL_ANY_SAMPLES_PASSED_EXT, 0, kSharedMemoryId, kSharedMemoryOffset); | 501 GL_ANY_SAMPLES_PASSED_EXT, 0, kSharedMemoryId, kSharedMemoryOffset); |
457 EXPECT_EQ(error::kNoError, ExecuteCmd(begin_cmd)); | 502 EXPECT_EQ(error::kNoError, ExecuteCmd(begin_cmd)); |
458 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); | 503 EXPECT_EQ(GL_INVALID_OPERATION, GetGLError()); |
459 | 504 |
460 GenHelper<GenQueriesEXTImmediate>(kNewClientId); | 505 GenHelper<GenQueriesEXTImmediate>(kNewClientId); |
461 | 506 |
462 // Test valid parameters work. | 507 // Test valid parameters work. |
463 EXPECT_CALL(*gl_, GenQueries(1, _)) | 508 EXPECT_CALL(*gl_, GenQueries(1, _)) |
464 .WillOnce(SetArgumentPointee<1>(kNewServiceId)) | 509 .WillOnce(SetArgPointee<1>(kNewServiceId)) |
465 .RetiresOnSaturation(); | 510 .RetiresOnSaturation(); |
466 EXPECT_CALL(*gl_, BeginQuery(GL_ANY_SAMPLES_PASSED_EXT, kNewServiceId)) | 511 EXPECT_CALL(*gl_, BeginQuery(GL_ANY_SAMPLES_PASSED_EXT, kNewServiceId)) |
467 .Times(1) | 512 .Times(1) |
468 .RetiresOnSaturation(); | 513 .RetiresOnSaturation(); |
469 | 514 |
470 // Query object should not be created untill BeginQueriesEXT. | 515 // Query object should not be created untill BeginQueriesEXT. |
471 QueryManager* query_manager = decoder_->GetQueryManager(); | 516 QueryManager* query_manager = decoder_->GetQueryManager(); |
472 ASSERT_TRUE(query_manager != NULL); | 517 ASSERT_TRUE(query_manager != NULL); |
473 QueryManager::Query* query = query_manager->GetQuery(kNewClientId); | 518 QueryManager::Query* query = query_manager->GetQuery(kNewClientId); |
474 EXPECT_TRUE(query == NULL); | 519 EXPECT_TRUE(query == NULL); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
545 init.bind_generates_resource = true; | 590 init.bind_generates_resource = true; |
546 test->InitDecoder(init); | 591 test->InitDecoder(init); |
547 ::testing::StrictMock< ::gfx::MockGLInterface>* gl = test->GetGLMock(); | 592 ::testing::StrictMock< ::gfx::MockGLInterface>* gl = test->GetGLMock(); |
548 | 593 |
549 BeginQueryEXT begin_cmd; | 594 BeginQueryEXT begin_cmd; |
550 | 595 |
551 test->GenHelper<GenQueriesEXTImmediate>(client_id); | 596 test->GenHelper<GenQueriesEXTImmediate>(client_id); |
552 | 597 |
553 if (query_type.is_gl) { | 598 if (query_type.is_gl) { |
554 EXPECT_CALL(*gl, GenQueries(1, _)) | 599 EXPECT_CALL(*gl, GenQueries(1, _)) |
555 .WillOnce(SetArgumentPointee<1>(service_id)) | 600 .WillOnce(SetArgPointee<1>(service_id)) |
556 .RetiresOnSaturation(); | 601 .RetiresOnSaturation(); |
557 EXPECT_CALL(*gl, BeginQuery(query_type.type, service_id)) | 602 EXPECT_CALL(*gl, BeginQuery(query_type.type, service_id)) |
558 .Times(1) | 603 .Times(1) |
559 .RetiresOnSaturation(); | 604 .RetiresOnSaturation(); |
560 } | 605 } |
561 | 606 |
562 // Test bad shared memory fails | 607 // Test bad shared memory fails |
563 begin_cmd.Init(query_type.type, client_id, shm_id, shm_offset); | 608 begin_cmd.Init(query_type.type, client_id, shm_id, shm_offset); |
564 error::Error error1 = test->ExecuteCmd(begin_cmd); | 609 error::Error error1 = test->ExecuteCmd(begin_cmd); |
565 | 610 |
(...skipping 20 matching lines...) Expand all Loading... |
586 #endif | 631 #endif |
587 } | 632 } |
588 | 633 |
589 EndQueryEXT end_cmd; | 634 EndQueryEXT end_cmd; |
590 end_cmd.Init(query_type.type, 1); | 635 end_cmd.Init(query_type.type, 1); |
591 error::Error error2 = test->ExecuteCmd(end_cmd); | 636 error::Error error2 = test->ExecuteCmd(end_cmd); |
592 | 637 |
593 if (query_type.is_gl) { | 638 if (query_type.is_gl) { |
594 EXPECT_CALL( | 639 EXPECT_CALL( |
595 *gl, GetQueryObjectuiv(service_id, GL_QUERY_RESULT_AVAILABLE_EXT, _)) | 640 *gl, GetQueryObjectuiv(service_id, GL_QUERY_RESULT_AVAILABLE_EXT, _)) |
596 .WillOnce(SetArgumentPointee<2>(1)) | 641 .WillOnce(SetArgPointee<2>(1)) |
597 .RetiresOnSaturation(); | 642 .RetiresOnSaturation(); |
598 EXPECT_CALL(*gl, GetQueryObjectuiv(service_id, GL_QUERY_RESULT_EXT, _)) | 643 EXPECT_CALL(*gl, GetQueryObjectuiv(service_id, GL_QUERY_RESULT_EXT, _)) |
599 .WillOnce(SetArgumentPointee<2>(1)) | 644 .WillOnce(SetArgPointee<2>(1)) |
600 .RetiresOnSaturation(); | 645 .RetiresOnSaturation(); |
601 } | 646 } |
602 if (query_type.type == GL_COMMANDS_COMPLETED_CHROMIUM) { | 647 if (query_type.type == GL_COMMANDS_COMPLETED_CHROMIUM) { |
603 #if DCHECK_IS_ON() | 648 #if DCHECK_IS_ON() |
604 EXPECT_CALL(*gl, IsSync(kGlSync)) | 649 EXPECT_CALL(*gl, IsSync(kGlSync)) |
605 .WillOnce(Return(GL_TRUE)) | 650 .WillOnce(Return(GL_TRUE)) |
606 .RetiresOnSaturation(); | 651 .RetiresOnSaturation(); |
607 #endif | 652 #endif |
608 EXPECT_CALL(*gl, ClientWaitSync(kGlSync, _, _)) | 653 EXPECT_CALL(*gl, ClientWaitSync(kGlSync, _, _)) |
609 .WillOnce(Return(GL_ALREADY_SIGNALED)) | 654 .WillOnce(Return(GL_ALREADY_SIGNALED)) |
(...skipping 679 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1289 INSTANTIATE_TEST_CASE_P(Service, | 1334 INSTANTIATE_TEST_CASE_P(Service, |
1290 GLES2DecoderRGBBackbufferTest, | 1335 GLES2DecoderRGBBackbufferTest, |
1291 ::testing::Bool()); | 1336 ::testing::Bool()); |
1292 | 1337 |
1293 INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderDoCommandsTest, ::testing::Bool()); | 1338 INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderDoCommandsTest, ::testing::Bool()); |
1294 | 1339 |
1295 INSTANTIATE_TEST_CASE_P(Service, GLES3DecoderTest, ::testing::Bool()); | 1340 INSTANTIATE_TEST_CASE_P(Service, GLES3DecoderTest, ::testing::Bool()); |
1296 | 1341 |
1297 } // namespace gles2 | 1342 } // namespace gles2 |
1298 } // namespace gpu | 1343 } // namespace gpu |
OLD | NEW |