| 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 // Tests for GLES2Implementation. | 5 // Tests for GLES2Implementation. |
| 6 | 6 |
| 7 #include "gpu/command_buffer/client/gles2_implementation.h" | 7 #include "gpu/command_buffer/client/gles2_implementation.h" |
| 8 | 8 |
| 9 #include <GLES2/gl2ext.h> | 9 #include <GLES2/gl2ext.h> |
| 10 #include <GLES2/gl2extchromium.h> | 10 #include <GLES2/gl2extchromium.h> |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 | 241 |
| 242 void* MockTransferBuffer::GetResultBuffer() { | 242 void* MockTransferBuffer::GetResultBuffer() { |
| 243 return actual_buffer() + actual_buffer_index_ * alignment_; | 243 return actual_buffer() + actual_buffer_index_ * alignment_; |
| 244 } | 244 } |
| 245 | 245 |
| 246 int MockTransferBuffer::GetResultOffset() { | 246 int MockTransferBuffer::GetResultOffset() { |
| 247 return actual_buffer_index_ * alignment_; | 247 return actual_buffer_index_ * alignment_; |
| 248 } | 248 } |
| 249 | 249 |
| 250 void MockTransferBuffer::Free() { | 250 void MockTransferBuffer::Free() { |
| 251 GPU_NOTREACHED(); |
| 251 } | 252 } |
| 252 | 253 |
| 253 bool MockTransferBuffer::HaveBuffer() const { | 254 bool MockTransferBuffer::HaveBuffer() const { |
| 254 return true; | 255 return true; |
| 255 } | 256 } |
| 256 | 257 |
| 257 void* MockTransferBuffer::AllocUpTo( | 258 void* MockTransferBuffer::AllocUpTo( |
| 258 unsigned int size, unsigned int* size_allocated) { | 259 unsigned int size, unsigned int* size_allocated) { |
| 259 EXPECT_TRUE(size_allocated != NULL); | 260 EXPECT_TRUE(size_allocated != NULL); |
| 260 EXPECT_TRUE(last_alloc_ == NULL); | 261 EXPECT_TRUE(last_alloc_ == NULL); |
| (...skipping 1187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1448 struct Cmds { | 1449 struct Cmds { |
| 1449 BufferSubData buf; | 1450 BufferSubData buf; |
| 1450 cmd::SetToken set_token; | 1451 cmd::SetToken set_token; |
| 1451 }; | 1452 }; |
| 1452 const GLenum kTarget = GL_ELEMENT_ARRAY_BUFFER; | 1453 const GLenum kTarget = GL_ELEMENT_ARRAY_BUFFER; |
| 1453 const GLintptr kOffset = 15; | 1454 const GLintptr kOffset = 15; |
| 1454 const GLsizeiptr kSize = 16; | 1455 const GLsizeiptr kSize = 16; |
| 1455 | 1456 |
| 1456 uint32 offset = 0; | 1457 uint32 offset = 0; |
| 1457 Cmds expected; | 1458 Cmds expected; |
| 1458 int32 shm_id = command_buffer()->GetNextFreeTransferBufferId(); | 1459 expected.buf.Init( |
| 1459 expected.buf.Init(kTarget, kOffset, kSize, shm_id, offset); | 1460 kTarget, kOffset, kSize, |
| 1461 command_buffer()->GetNextFreeTransferBufferId(), offset); |
| 1460 expected.set_token.Init(GetNextToken()); | 1462 expected.set_token.Init(GetNextToken()); |
| 1461 | 1463 |
| 1462 void* mem = gl_->MapBufferSubDataCHROMIUM( | 1464 void* mem = gl_->MapBufferSubDataCHROMIUM( |
| 1463 kTarget, kOffset, kSize, GL_WRITE_ONLY); | 1465 kTarget, kOffset, kSize, GL_WRITE_ONLY); |
| 1464 ASSERT_TRUE(mem != NULL); | 1466 ASSERT_TRUE(mem != NULL); |
| 1465 gl_->UnmapBufferSubDataCHROMIUM(mem); | 1467 gl_->UnmapBufferSubDataCHROMIUM(mem); |
| 1466 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); | 1468 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); |
| 1467 | |
| 1468 EXPECT_CALL(*command_buffer(), DestroyTransferBuffer(shm_id)) | |
| 1469 .Times(1) | |
| 1470 .RetiresOnSaturation(); | |
| 1471 gl_->FreeUnusedSharedMemory(); | |
| 1472 } | 1469 } |
| 1473 | 1470 |
| 1474 TEST_F(GLES2ImplementationTest, MapUnmapBufferSubDataCHROMIUMBadArgs) { | 1471 TEST_F(GLES2ImplementationTest, MapUnmapBufferSubDataCHROMIUMBadArgs) { |
| 1475 const GLenum kTarget = GL_ELEMENT_ARRAY_BUFFER; | 1472 const GLenum kTarget = GL_ELEMENT_ARRAY_BUFFER; |
| 1476 const GLintptr kOffset = 15; | 1473 const GLintptr kOffset = 15; |
| 1477 const GLsizeiptr kSize = 16; | 1474 const GLsizeiptr kSize = 16; |
| 1478 | 1475 |
| 1479 ExpectedMemoryInfo result1 = | 1476 ExpectedMemoryInfo result1 = |
| 1480 GetExpectedResultMemory(sizeof(GetError::Result)); | 1477 GetExpectedResultMemory(sizeof(GetError::Result)); |
| 1481 ExpectedMemoryInfo result2 = | 1478 ExpectedMemoryInfo result2 = |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1516 const GLint kLevel = 1; | 1513 const GLint kLevel = 1; |
| 1517 const GLint kXOffset = 2; | 1514 const GLint kXOffset = 2; |
| 1518 const GLint kYOffset = 3; | 1515 const GLint kYOffset = 3; |
| 1519 const GLint kWidth = 4; | 1516 const GLint kWidth = 4; |
| 1520 const GLint kHeight = 5; | 1517 const GLint kHeight = 5; |
| 1521 const GLenum kFormat = GL_RGBA; | 1518 const GLenum kFormat = GL_RGBA; |
| 1522 const GLenum kType = GL_UNSIGNED_BYTE; | 1519 const GLenum kType = GL_UNSIGNED_BYTE; |
| 1523 | 1520 |
| 1524 uint32 offset = 0; | 1521 uint32 offset = 0; |
| 1525 Cmds expected; | 1522 Cmds expected; |
| 1526 int32 shm_id = command_buffer()->GetNextFreeTransferBufferId(); | |
| 1527 expected.tex.Init( | 1523 expected.tex.Init( |
| 1528 GL_TEXTURE_2D, kLevel, kXOffset, kYOffset, kWidth, kHeight, kFormat, | 1524 GL_TEXTURE_2D, kLevel, kXOffset, kYOffset, kWidth, kHeight, kFormat, |
| 1529 kType, shm_id, offset, GL_FALSE); | 1525 kType, |
| 1526 command_buffer()->GetNextFreeTransferBufferId(), offset, GL_FALSE); |
| 1530 expected.set_token.Init(GetNextToken()); | 1527 expected.set_token.Init(GetNextToken()); |
| 1531 | 1528 |
| 1532 void* mem = gl_->MapTexSubImage2DCHROMIUM( | 1529 void* mem = gl_->MapTexSubImage2DCHROMIUM( |
| 1533 GL_TEXTURE_2D, | 1530 GL_TEXTURE_2D, |
| 1534 kLevel, | 1531 kLevel, |
| 1535 kXOffset, | 1532 kXOffset, |
| 1536 kYOffset, | 1533 kYOffset, |
| 1537 kWidth, | 1534 kWidth, |
| 1538 kHeight, | 1535 kHeight, |
| 1539 kFormat, | 1536 kFormat, |
| 1540 kType, | 1537 kType, |
| 1541 GL_WRITE_ONLY); | 1538 GL_WRITE_ONLY); |
| 1542 ASSERT_TRUE(mem != NULL); | 1539 ASSERT_TRUE(mem != NULL); |
| 1543 gl_->UnmapTexSubImage2DCHROMIUM(mem); | 1540 gl_->UnmapTexSubImage2DCHROMIUM(mem); |
| 1544 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); | 1541 EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); |
| 1545 | |
| 1546 EXPECT_CALL(*command_buffer(), DestroyTransferBuffer(shm_id)) | |
| 1547 .Times(1) | |
| 1548 .RetiresOnSaturation(); | |
| 1549 gl_->FreeUnusedSharedMemory(); | |
| 1550 } | 1542 } |
| 1551 | 1543 |
| 1552 TEST_F(GLES2ImplementationTest, MapUnmapTexSubImage2DCHROMIUMBadArgs) { | 1544 TEST_F(GLES2ImplementationTest, MapUnmapTexSubImage2DCHROMIUMBadArgs) { |
| 1553 const GLint kLevel = 1; | 1545 const GLint kLevel = 1; |
| 1554 const GLint kXOffset = 2; | 1546 const GLint kXOffset = 2; |
| 1555 const GLint kYOffset = 3; | 1547 const GLint kYOffset = 3; |
| 1556 const GLint kWidth = 4; | 1548 const GLint kWidth = 4; |
| 1557 const GLint kHeight = 5; | 1549 const GLint kHeight = 5; |
| 1558 const GLenum kFormat = GL_RGBA; | 1550 const GLenum kFormat = GL_RGBA; |
| 1559 const GLenum kType = GL_UNSIGNED_BYTE; | 1551 const GLenum kType = GL_UNSIGNED_BYTE; |
| (...skipping 1130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2690 gl_->GetQueryObjectuivEXT(4567, GL_QUERY_RESULT_AVAILABLE_EXT, &available); | 2682 gl_->GetQueryObjectuivEXT(4567, GL_QUERY_RESULT_AVAILABLE_EXT, &available); |
| 2691 EXPECT_TRUE(NoCommandsWritten()); | 2683 EXPECT_TRUE(NoCommandsWritten()); |
| 2692 EXPECT_EQ(0xBDu, available); | 2684 EXPECT_EQ(0xBDu, available); |
| 2693 EXPECT_EQ(GL_INVALID_OPERATION, CheckError()); | 2685 EXPECT_EQ(GL_INVALID_OPERATION, CheckError()); |
| 2694 | 2686 |
| 2695 // Test GetQueryObjectuivEXT CheckResultsAvailable | 2687 // Test GetQueryObjectuivEXT CheckResultsAvailable |
| 2696 ClearCommands(); | 2688 ClearCommands(); |
| 2697 gl_->GetQueryObjectuivEXT(id1, GL_QUERY_RESULT_AVAILABLE_EXT, &available); | 2689 gl_->GetQueryObjectuivEXT(id1, GL_QUERY_RESULT_AVAILABLE_EXT, &available); |
| 2698 EXPECT_TRUE(NoCommandsWritten()); | 2690 EXPECT_TRUE(NoCommandsWritten()); |
| 2699 EXPECT_EQ(0u, available); | 2691 EXPECT_EQ(0u, available); |
| 2700 | |
| 2701 EXPECT_CALL(*command_buffer(), DestroyTransferBuffer(_)) | |
| 2702 .Times(1) | |
| 2703 .RetiresOnSaturation(); | |
| 2704 } | 2692 } |
| 2705 | 2693 |
| 2706 TEST_F(GLES2ImplementationTest, ErrorQuery) { | 2694 TEST_F(GLES2ImplementationTest, ErrorQuery) { |
| 2707 GLuint id = 0; | 2695 GLuint id = 0; |
| 2708 gl_->GenQueriesEXT(1, &id); | 2696 gl_->GenQueriesEXT(1, &id); |
| 2709 ClearCommands(); | 2697 ClearCommands(); |
| 2710 | 2698 |
| 2711 // Test BeginQueryEXT does NOT insert commands. | 2699 // Test BeginQueryEXT does NOT insert commands. |
| 2712 gl_->BeginQueryEXT(GL_GET_ERROR_QUERY_CHROMIUM, id); | 2700 gl_->BeginQueryEXT(GL_GET_ERROR_QUERY_CHROMIUM, id); |
| 2713 EXPECT_TRUE(NoCommandsWritten()); | 2701 EXPECT_TRUE(NoCommandsWritten()); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2748 // Check result is available. | 2736 // Check result is available. |
| 2749 gl_->GetQueryObjectuivEXT(id, GL_QUERY_RESULT_AVAILABLE_EXT, &available); | 2737 gl_->GetQueryObjectuivEXT(id, GL_QUERY_RESULT_AVAILABLE_EXT, &available); |
| 2750 EXPECT_TRUE(NoCommandsWritten()); | 2738 EXPECT_TRUE(NoCommandsWritten()); |
| 2751 EXPECT_NE(0u, available); | 2739 EXPECT_NE(0u, available); |
| 2752 | 2740 |
| 2753 // Check result. | 2741 // Check result. |
| 2754 GLuint result = 0xBDu; | 2742 GLuint result = 0xBDu; |
| 2755 gl_->GetQueryObjectuivEXT(id, GL_QUERY_RESULT_EXT, &result); | 2743 gl_->GetQueryObjectuivEXT(id, GL_QUERY_RESULT_EXT, &result); |
| 2756 EXPECT_TRUE(NoCommandsWritten()); | 2744 EXPECT_TRUE(NoCommandsWritten()); |
| 2757 EXPECT_EQ(static_cast<GLuint>(GL_INVALID_ENUM), result); | 2745 EXPECT_EQ(static_cast<GLuint>(GL_INVALID_ENUM), result); |
| 2758 | |
| 2759 EXPECT_CALL(*command_buffer(), DestroyTransferBuffer(_)) | |
| 2760 .Times(1) | |
| 2761 .RetiresOnSaturation(); | |
| 2762 } | 2746 } |
| 2763 | 2747 |
| 2764 #if !defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS) | 2748 #if !defined(GLES2_SUPPORT_CLIENT_SIDE_ARRAYS) |
| 2765 TEST_F(GLES2ImplementationTest, VertexArrays) { | 2749 TEST_F(GLES2ImplementationTest, VertexArrays) { |
| 2766 const GLuint kAttribIndex1 = 1; | 2750 const GLuint kAttribIndex1 = 1; |
| 2767 const GLint kNumComponents1 = 3; | 2751 const GLint kNumComponents1 = 3; |
| 2768 const GLsizei kClientStride = 12; | 2752 const GLsizei kClientStride = 12; |
| 2769 | 2753 |
| 2770 GLuint id = 0; | 2754 GLuint id = 0; |
| 2771 gl_->GenVertexArraysOES(1, &id); | 2755 gl_->GenVertexArraysOES(1, &id); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2817 gl_->Enable(GL_BLEND); | 2801 gl_->Enable(GL_BLEND); |
| 2818 EXPECT_TRUE(NoCommandsWritten()); | 2802 EXPECT_TRUE(NoCommandsWritten()); |
| 2819 } | 2803 } |
| 2820 | 2804 |
| 2821 | 2805 |
| 2822 #include "gpu/command_buffer/client/gles2_implementation_unittest_autogen.h" | 2806 #include "gpu/command_buffer/client/gles2_implementation_unittest_autogen.h" |
| 2823 | 2807 |
| 2824 } // namespace gles2 | 2808 } // namespace gles2 |
| 2825 } // namespace gpu | 2809 } // namespace gpu |
| 2826 | 2810 |
| OLD | NEW |