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