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 |