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 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 EXPECT_EQ(kNumSampleCounts, result->GetData()[0]); | 323 EXPECT_EQ(kNumSampleCounts, result->GetData()[0]); |
324 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 324 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
325 decoder_->set_unsafe_es3_apis_enabled(false); | 325 decoder_->set_unsafe_es3_apis_enabled(false); |
326 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | 326 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
327 } | 327 } |
328 | 328 |
329 TEST_P(GLES3DecoderTest, ClientWaitSyncValid) { | 329 TEST_P(GLES3DecoderTest, ClientWaitSyncValid) { |
330 typedef cmds::ClientWaitSync::Result Result; | 330 typedef cmds::ClientWaitSync::Result Result; |
331 Result* result = static_cast<Result*>(shared_memory_address_); | 331 Result* result = static_cast<Result*>(shared_memory_address_); |
332 cmds::ClientWaitSync cmd; | 332 cmds::ClientWaitSync cmd; |
333 uint32_t v32_0 = 0, v32_1 = 0; | 333 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, 0, |
334 GLES2Util::MapUint64ToTwoUint32(0, &v32_0, &v32_1); | |
335 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, v32_0, v32_1, | |
336 shared_memory_id_, shared_memory_offset_); | 334 shared_memory_id_, shared_memory_offset_); |
337 EXPECT_CALL(*gl_, | 335 EXPECT_CALL(*gl_, |
338 ClientWaitSync(reinterpret_cast<GLsync>(kServiceSyncId), | 336 ClientWaitSync(reinterpret_cast<GLsync>(kServiceSyncId), |
339 GL_SYNC_FLUSH_COMMANDS_BIT, 0)) | 337 GL_SYNC_FLUSH_COMMANDS_BIT, 0)) |
340 .WillOnce(Return(GL_CONDITION_SATISFIED)) | 338 .WillOnce(Return(GL_CONDITION_SATISFIED)) |
341 .RetiresOnSaturation(); | 339 .RetiresOnSaturation(); |
342 *result = GL_WAIT_FAILED; | 340 *result = GL_WAIT_FAILED; |
343 decoder_->set_unsafe_es3_apis_enabled(true); | 341 decoder_->set_unsafe_es3_apis_enabled(true); |
344 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 342 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
345 EXPECT_EQ(static_cast<GLenum>(GL_CONDITION_SATISFIED), *result); | 343 EXPECT_EQ(static_cast<GLenum>(GL_CONDITION_SATISFIED), *result); |
346 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 344 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
347 decoder_->set_unsafe_es3_apis_enabled(false); | 345 decoder_->set_unsafe_es3_apis_enabled(false); |
348 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | 346 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
349 } | 347 } |
350 | 348 |
351 TEST_P(GLES2DecoderTest, ClientWaitSyncNonZeroTimeoutValid) { | 349 TEST_P(GLES2DecoderTest, ClientWaitSyncNonZeroTimeoutValid) { |
352 typedef cmds::ClientWaitSync::Result Result; | 350 typedef cmds::ClientWaitSync::Result Result; |
353 Result* result = static_cast<Result*>(shared_memory_address_); | 351 Result* result = static_cast<Result*>(shared_memory_address_); |
354 cmds::ClientWaitSync cmd; | 352 cmds::ClientWaitSync cmd; |
355 const GLuint64 kTimeout = 0xABCDEF0123456789; | 353 const GLuint64 kTimeout = 0xABCDEF0123456789; |
356 uint32_t v32_0 = 0, v32_1 = 0; | 354 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, kTimeout, |
357 GLES2Util::MapUint64ToTwoUint32(kTimeout, &v32_0, &v32_1); | |
358 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, v32_0, v32_1, | |
359 shared_memory_id_, shared_memory_offset_); | 355 shared_memory_id_, shared_memory_offset_); |
360 EXPECT_CALL(*gl_, | 356 EXPECT_CALL(*gl_, |
361 ClientWaitSync(reinterpret_cast<GLsync>(kServiceSyncId), | 357 ClientWaitSync(reinterpret_cast<GLsync>(kServiceSyncId), |
362 GL_SYNC_FLUSH_COMMANDS_BIT, kTimeout)) | 358 GL_SYNC_FLUSH_COMMANDS_BIT, kTimeout)) |
363 .WillOnce(Return(GL_CONDITION_SATISFIED)) | 359 .WillOnce(Return(GL_CONDITION_SATISFIED)) |
364 .RetiresOnSaturation(); | 360 .RetiresOnSaturation(); |
365 *result = GL_WAIT_FAILED; | 361 *result = GL_WAIT_FAILED; |
366 decoder_->set_unsafe_es3_apis_enabled(true); | 362 decoder_->set_unsafe_es3_apis_enabled(true); |
367 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 363 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
368 EXPECT_EQ(static_cast<GLenum>(GL_CONDITION_SATISFIED), *result); | 364 EXPECT_EQ(static_cast<GLenum>(GL_CONDITION_SATISFIED), *result); |
369 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 365 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
370 decoder_->set_unsafe_es3_apis_enabled(false); | 366 decoder_->set_unsafe_es3_apis_enabled(false); |
371 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | 367 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
372 } | 368 } |
373 | 369 |
374 TEST_P(GLES2DecoderTest, ClientWaitSyncInvalidSyncFails) { | 370 TEST_P(GLES2DecoderTest, ClientWaitSyncInvalidSyncFails) { |
375 typedef cmds::ClientWaitSync::Result Result; | 371 typedef cmds::ClientWaitSync::Result Result; |
376 Result* result = static_cast<Result*>(shared_memory_address_); | 372 Result* result = static_cast<Result*>(shared_memory_address_); |
377 cmds::ClientWaitSync cmd; | 373 cmds::ClientWaitSync cmd; |
378 uint32_t v32_0 = 0, v32_1 = 0; | |
379 GLES2Util::MapUint64ToTwoUint32(0, &v32_0, &v32_1); | |
380 decoder_->set_unsafe_es3_apis_enabled(true); | 374 decoder_->set_unsafe_es3_apis_enabled(true); |
381 cmd.Init(kInvalidClientId, GL_SYNC_FLUSH_COMMANDS_BIT, v32_0, v32_1, | 375 cmd.Init(kInvalidClientId, GL_SYNC_FLUSH_COMMANDS_BIT, 0, |
382 shared_memory_id_, shared_memory_offset_); | 376 shared_memory_id_, shared_memory_offset_); |
383 *result = GL_WAIT_FAILED; | 377 *result = GL_WAIT_FAILED; |
384 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 378 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
385 EXPECT_EQ(static_cast<GLenum>(GL_WAIT_FAILED), *result); | 379 EXPECT_EQ(static_cast<GLenum>(GL_WAIT_FAILED), *result); |
386 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); | 380 EXPECT_EQ(GL_INVALID_VALUE, GetGLError()); |
387 } | 381 } |
388 | 382 |
389 TEST_P(GLES2DecoderTest, ClientWaitSyncResultNotInitFails) { | 383 TEST_P(GLES2DecoderTest, ClientWaitSyncResultNotInitFails) { |
390 typedef cmds::ClientWaitSync::Result Result; | 384 typedef cmds::ClientWaitSync::Result Result; |
391 Result* result = static_cast<Result*>(shared_memory_address_); | 385 Result* result = static_cast<Result*>(shared_memory_address_); |
392 cmds::ClientWaitSync cmd; | 386 cmds::ClientWaitSync cmd; |
393 uint32_t v32_0 = 0, v32_1 = 0; | |
394 GLES2Util::MapUint64ToTwoUint32(0, &v32_0, &v32_1); | |
395 decoder_->set_unsafe_es3_apis_enabled(true); | 387 decoder_->set_unsafe_es3_apis_enabled(true); |
396 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, v32_0, v32_1, | 388 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, 0, |
397 shared_memory_id_, shared_memory_offset_); | 389 shared_memory_id_, shared_memory_offset_); |
398 *result = 1; // Any value other than GL_WAIT_FAILED | 390 *result = 1; // Any value other than GL_WAIT_FAILED |
399 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 391 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
400 } | 392 } |
401 | 393 |
402 TEST_P(GLES2DecoderTest, ClientWaitSyncBadSharedMemoryFails) { | 394 TEST_P(GLES2DecoderTest, ClientWaitSyncBadSharedMemoryFails) { |
403 typedef cmds::ClientWaitSync::Result Result; | 395 typedef cmds::ClientWaitSync::Result Result; |
404 Result* result = static_cast<Result*>(shared_memory_address_); | 396 Result* result = static_cast<Result*>(shared_memory_address_); |
405 cmds::ClientWaitSync cmd; | 397 cmds::ClientWaitSync cmd; |
406 uint32_t v32_0 = 0, v32_1 = 0; | |
407 GLES2Util::MapUint64ToTwoUint32(0, &v32_0, &v32_1); | |
408 decoder_->set_unsafe_es3_apis_enabled(true); | 398 decoder_->set_unsafe_es3_apis_enabled(true); |
409 *result = GL_WAIT_FAILED; | 399 *result = GL_WAIT_FAILED; |
410 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, v32_0, v32_1, | 400 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, 0, |
411 kInvalidSharedMemoryId, shared_memory_offset_); | 401 kInvalidSharedMemoryId, shared_memory_offset_); |
412 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 402 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
413 | 403 |
414 *result = GL_WAIT_FAILED; | 404 *result = GL_WAIT_FAILED; |
415 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, v32_0, v32_1, | 405 cmd.Init(client_sync_id_, GL_SYNC_FLUSH_COMMANDS_BIT, 0, |
416 shared_memory_id_, kInvalidSharedMemoryOffset); | 406 shared_memory_id_, kInvalidSharedMemoryOffset); |
417 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); | 407 EXPECT_NE(error::kNoError, ExecuteCmd(cmd)); |
418 } | 408 } |
419 | 409 |
420 TEST_P(GLES2DecoderTest, WaitSyncValidArgs) { | 410 TEST_P(GLES2DecoderTest, WaitSyncValidArgs) { |
421 const GLuint64 kTimeout = GL_TIMEOUT_IGNORED; | 411 const GLuint64 kTimeout = GL_TIMEOUT_IGNORED; |
422 EXPECT_CALL(*gl_, WaitSync(reinterpret_cast<GLsync>(kServiceSyncId), | 412 EXPECT_CALL(*gl_, WaitSync(reinterpret_cast<GLsync>(kServiceSyncId), |
423 0, kTimeout)) | 413 0, kTimeout)) |
424 .Times(1) | 414 .Times(1) |
425 .RetiresOnSaturation(); | 415 .RetiresOnSaturation(); |
426 | 416 |
427 uint32_t v32_0 = 0, v32_1 = 0; | |
428 GLES2Util::MapUint64ToTwoUint32(kTimeout, &v32_0, &v32_1); | |
429 cmds::WaitSync cmd; | 417 cmds::WaitSync cmd; |
430 cmd.Init(client_sync_id_, 0, v32_0, v32_1); | 418 cmd.Init(client_sync_id_, 0, kTimeout); |
431 decoder_->set_unsafe_es3_apis_enabled(true); | 419 decoder_->set_unsafe_es3_apis_enabled(true); |
432 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 420 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
433 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 421 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
434 decoder_->set_unsafe_es3_apis_enabled(false); | 422 decoder_->set_unsafe_es3_apis_enabled(false); |
435 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); | 423 EXPECT_EQ(error::kUnknownCommand, ExecuteCmd(cmd)); |
436 } | 424 } |
437 | 425 |
438 TEST_P(GLES2DecoderManualInitTest, BindGeneratesResourceFalse) { | 426 TEST_P(GLES2DecoderManualInitTest, BindGeneratesResourceFalse) { |
439 InitState init; | 427 InitState init; |
440 InitDecoder(init); | 428 InitDecoder(init); |
(...skipping 1116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1557 INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderDoCommandsTest, ::testing::Bool()); | 1545 INSTANTIATE_TEST_CASE_P(Service, GLES2DecoderDoCommandsTest, ::testing::Bool()); |
1558 | 1546 |
1559 INSTANTIATE_TEST_CASE_P(Service, GLES3DecoderTest, ::testing::Bool()); | 1547 INSTANTIATE_TEST_CASE_P(Service, GLES3DecoderTest, ::testing::Bool()); |
1560 | 1548 |
1561 INSTANTIATE_TEST_CASE_P(Service, | 1549 INSTANTIATE_TEST_CASE_P(Service, |
1562 GLES3DecoderWithESSL3ShaderTest, | 1550 GLES3DecoderWithESSL3ShaderTest, |
1563 ::testing::Bool()); | 1551 ::testing::Bool()); |
1564 | 1552 |
1565 } // namespace gles2 | 1553 } // namespace gles2 |
1566 } // namespace gpu | 1554 } // namespace gpu |
OLD | NEW |