Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(940)

Side by Side Diff: gpu/command_buffer/service/program_manager_unittest.cc

Issue 331293005: Revert of gpu: Add base class for gpu service tests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/program_manager.h" 5 #include "gpu/command_buffer/service/program_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
11 #include "base/strings/string_util.h" 11 #include "base/strings/string_util.h"
12 #include "gpu/command_buffer/common/gles2_cmd_format.h" 12 #include "gpu/command_buffer/common/gles2_cmd_format.h"
13 #include "gpu/command_buffer/common/gles2_cmd_utils.h" 13 #include "gpu/command_buffer/common/gles2_cmd_utils.h"
14 #include "gpu/command_buffer/service/common_decoder.h" 14 #include "gpu/command_buffer/service/common_decoder.h"
15 #include "gpu/command_buffer/service/feature_info.h" 15 #include "gpu/command_buffer/service/feature_info.h"
16 #include "gpu/command_buffer/service/gpu_service_test.h"
17 #include "gpu/command_buffer/service/mocks.h" 16 #include "gpu/command_buffer/service/mocks.h"
18 #include "gpu/command_buffer/service/shader_manager.h" 17 #include "gpu/command_buffer/service/shader_manager.h"
19 #include "gpu/command_buffer/service/test_helper.h" 18 #include "gpu/command_buffer/service/test_helper.h"
20 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
21 #include "ui/gl/gl_mock.h" 20 #include "ui/gl/gl_mock.h"
22 21
22 using ::gfx::MockGLInterface;
23 using ::testing::_; 23 using ::testing::_;
24 using ::testing::DoAll; 24 using ::testing::DoAll;
25 using ::testing::InSequence; 25 using ::testing::InSequence;
26 using ::testing::MatcherCast; 26 using ::testing::MatcherCast;
27 using ::testing::Pointee; 27 using ::testing::Pointee;
28 using ::testing::Return; 28 using ::testing::Return;
29 using ::testing::ReturnRef; 29 using ::testing::ReturnRef;
30 using ::testing::SetArrayArgument; 30 using ::testing::SetArrayArgument;
31 using ::testing::SetArgumentPointee; 31 using ::testing::SetArgumentPointee;
32 using ::testing::StrEq; 32 using ::testing::StrEq;
33 using ::testing::StrictMock;
33 34
34 namespace gpu { 35 namespace gpu {
35 namespace gles2 { 36 namespace gles2 {
36 37
37 namespace { 38 namespace {
38 const uint32 kMaxVaryingVectors = 8; 39 const uint32 kMaxVaryingVectors = 8;
39 40
40 void ShaderCacheCb(const std::string& key, const std::string& shader) {} 41 void ShaderCacheCb(const std::string& key, const std::string& shader) {}
41 } // namespace anonymous 42 } // namespace anonymous
42 43
43 class ProgramManagerTest : public GpuServiceTest { 44 class ProgramManagerTest : public testing::Test {
44 public: 45 public:
45 ProgramManagerTest() : manager_(NULL, kMaxVaryingVectors) { } 46 ProgramManagerTest() : manager_(NULL, kMaxVaryingVectors) { }
46 virtual ~ProgramManagerTest() { 47 virtual ~ProgramManagerTest() {
47 manager_.Destroy(false); 48 manager_.Destroy(false);
48 } 49 }
49 50
50 protected: 51 protected:
52 virtual void SetUp() {
53 gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>());
54 ::gfx::MockGLInterface::SetGLInterface(gl_.get());
55 }
56
57 virtual void TearDown() {
58 ::gfx::MockGLInterface::SetGLInterface(NULL);
59 gl_.reset();
60 }
61
62 // Use StrictMock to make 100% sure we know how GL will be called.
63 scoped_ptr< ::testing::StrictMock< ::gfx::MockGLInterface> > gl_;
51 ProgramManager manager_; 64 ProgramManager manager_;
52 }; 65 };
53 66
54 TEST_F(ProgramManagerTest, Basic) { 67 TEST_F(ProgramManagerTest, Basic) {
55 const GLuint kClient1Id = 1; 68 const GLuint kClient1Id = 1;
56 const GLuint kService1Id = 11; 69 const GLuint kService1Id = 11;
57 const GLuint kClient2Id = 2; 70 const GLuint kClient2Id = 2;
58 // Check we can create program. 71 // Check we can create program.
59 manager_.CreateProgram(kClient1Id, kService1Id); 72 manager_.CreateProgram(kClient1Id, kService1Id);
60 // Check program got created. 73 // Check program got created.
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 kClient1Id, kService1Id); 131 kClient1Id, kService1Id);
119 ASSERT_TRUE(program1); 132 ASSERT_TRUE(program1);
120 EXPECT_EQ(kService1Id, program1->service_id()); 133 EXPECT_EQ(kService1Id, program1->service_id());
121 EXPECT_FALSE(program1->InUse()); 134 EXPECT_FALSE(program1->InUse());
122 EXPECT_FALSE(program1->IsValid()); 135 EXPECT_FALSE(program1->IsValid());
123 EXPECT_FALSE(program1->IsDeleted()); 136 EXPECT_FALSE(program1->IsDeleted());
124 EXPECT_FALSE(program1->CanLink()); 137 EXPECT_FALSE(program1->CanLink());
125 EXPECT_TRUE(program1->log_info() == NULL); 138 EXPECT_TRUE(program1->log_info() == NULL);
126 } 139 }
127 140
128 class ProgramManagerWithShaderTest : public GpuServiceTest { 141 class ProgramManagerWithShaderTest : public testing::Test {
129 public: 142 public:
130 ProgramManagerWithShaderTest() 143 ProgramManagerWithShaderTest()
131 : manager_(NULL, kMaxVaryingVectors), program_(NULL) { 144 : manager_(NULL, kMaxVaryingVectors), program_(NULL) {
132 } 145 }
133 146
134 virtual ~ProgramManagerWithShaderTest() { 147 virtual ~ProgramManagerWithShaderTest() {
135 manager_.Destroy(false); 148 manager_.Destroy(false);
136 shader_manager_.Destroy(false); 149 shader_manager_.Destroy(false);
137 } 150 }
138 151
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 typedef struct { 221 typedef struct {
209 int type; 222 int type;
210 int size; 223 int size;
211 int precision; 224 int precision;
212 int static_use; 225 int static_use;
213 std::string name; 226 std::string name;
214 VarCategory category; 227 VarCategory category;
215 } VarInfo; 228 } VarInfo;
216 229
217 virtual void SetUp() { 230 virtual void SetUp() {
218 GpuServiceTest::SetUp(); 231 gl_.reset(new StrictMock<gfx::MockGLInterface>());
232 ::gfx::MockGLInterface::SetGLInterface(gl_.get());
219 233
220 SetupDefaultShaderExpectations(); 234 SetupDefaultShaderExpectations();
221 235
222 Shader* vertex_shader = shader_manager_.CreateShader( 236 Shader* vertex_shader = shader_manager_.CreateShader(
223 kVertexShaderClientId, kVertexShaderServiceId, GL_VERTEX_SHADER); 237 kVertexShaderClientId, kVertexShaderServiceId, GL_VERTEX_SHADER);
224 Shader* fragment_shader = 238 Shader* fragment_shader =
225 shader_manager_.CreateShader( 239 shader_manager_.CreateShader(
226 kFragmentShaderClientId, kFragmentShaderServiceId, 240 kFragmentShaderClientId, kFragmentShaderServiceId,
227 GL_FRAGMENT_SHADER); 241 GL_FRAGMENT_SHADER);
228 ASSERT_TRUE(vertex_shader != NULL); 242 ASSERT_TRUE(vertex_shader != NULL);
(...skipping 22 matching lines...) Expand all
251 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, 265 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms,
252 kServiceProgramId); 266 kServiceProgramId);
253 } 267 }
254 268
255 void SetupExpectationsForClearingUniforms( 269 void SetupExpectationsForClearingUniforms(
256 UniformInfo* uniforms, size_t num_uniforms) { 270 UniformInfo* uniforms, size_t num_uniforms) {
257 TestHelper::SetupExpectationsForClearingUniforms( 271 TestHelper::SetupExpectationsForClearingUniforms(
258 gl_.get(), uniforms, num_uniforms); 272 gl_.get(), uniforms, num_uniforms);
259 } 273 }
260 274
275 virtual void TearDown() {
276 ::gfx::MockGLInterface::SetGLInterface(NULL);
277 }
278
261 // Return true if link status matches expected_link_status 279 // Return true if link status matches expected_link_status
262 bool LinkAsExpected(Program* program, 280 bool LinkAsExpected(Program* program,
263 bool expected_link_status) { 281 bool expected_link_status) {
264 GLuint service_id = program->service_id(); 282 GLuint service_id = program->service_id();
265 if (expected_link_status) { 283 if (expected_link_status) {
266 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, 284 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms,
267 service_id); 285 service_id);
268 } 286 }
269 program->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, 287 program->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed,
270 base::Bind(&ShaderCacheCb)); 288 base::Bind(&ShaderCacheCb));
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 manager_.CreateProgram(kClientProgramId, kServiceProgramId); 391 manager_.CreateProgram(kClientProgramId, kServiceProgramId);
374 EXPECT_TRUE(program != NULL); 392 EXPECT_TRUE(program != NULL);
375 EXPECT_TRUE(program->AttachShader(&shader_manager_, vshader)); 393 EXPECT_TRUE(program->AttachShader(&shader_manager_, vshader));
376 EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); 394 EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader));
377 return program; 395 return program;
378 } 396 }
379 397
380 static AttribInfo kAttribs[]; 398 static AttribInfo kAttribs[];
381 static UniformInfo kUniforms[]; 399 static UniformInfo kUniforms[];
382 400
401 scoped_ptr<StrictMock<gfx::MockGLInterface> > gl_;
402
383 ProgramManager manager_; 403 ProgramManager manager_;
384 Program* program_; 404 Program* program_;
385 ShaderManager shader_manager_; 405 ShaderManager shader_manager_;
386 }; 406 };
387 407
388 ProgramManagerWithShaderTest::AttribInfo 408 ProgramManagerWithShaderTest::AttribInfo
389 ProgramManagerWithShaderTest::kAttribs[] = { 409 ProgramManagerWithShaderTest::kAttribs[] = {
390 { kAttrib1Name, kAttrib1Size, kAttrib1Type, kAttrib1Location, }, 410 { kAttrib1Name, kAttrib1Size, kAttrib1Type, kAttrib1Location, },
391 { kAttrib2Name, kAttrib2Size, kAttrib2Type, kAttrib2Location, }, 411 { kAttrib2Name, kAttrib2Size, kAttrib2Type, kAttrib2Location, },
392 { kAttrib3Name, kAttrib3Size, kAttrib3Type, kAttrib3Location, }, 412 { kAttrib3Name, kAttrib3Size, kAttrib3Type, kAttrib3Location, },
(...skipping 1149 matching lines...) Expand 10 before | Expand all | Expand 10 after
1542 base::Bind(&ShaderCacheCb)); 1562 base::Bind(&ShaderCacheCb));
1543 1563
1544 EXPECT_EQ(kUniform1DesiredLocation, 1564 EXPECT_EQ(kUniform1DesiredLocation,
1545 program->GetUniformFakeLocation(kUniform1Name)); 1565 program->GetUniformFakeLocation(kUniform1Name));
1546 EXPECT_EQ(kUniform3DesiredLocation, 1566 EXPECT_EQ(kUniform3DesiredLocation,
1547 program->GetUniformFakeLocation(kUniform3BadName)); 1567 program->GetUniformFakeLocation(kUniform3BadName));
1548 EXPECT_EQ(kUniform3DesiredLocation, 1568 EXPECT_EQ(kUniform3DesiredLocation,
1549 program->GetUniformFakeLocation(kUniform3GoodName)); 1569 program->GetUniformFakeLocation(kUniform3GoodName));
1550 } 1570 }
1551 1571
1552 class ProgramManagerWithCacheTest : public GpuServiceTest { 1572 class ProgramManagerWithCacheTest : public testing::Test {
1553 public: 1573 public:
1554 static const GLuint kClientProgramId = 1; 1574 static const GLuint kClientProgramId = 1;
1555 static const GLuint kServiceProgramId = 10; 1575 static const GLuint kServiceProgramId = 10;
1556 static const GLuint kVertexShaderClientId = 2; 1576 static const GLuint kVertexShaderClientId = 2;
1557 static const GLuint kFragmentShaderClientId = 20; 1577 static const GLuint kFragmentShaderClientId = 20;
1558 static const GLuint kVertexShaderServiceId = 3; 1578 static const GLuint kVertexShaderServiceId = 3;
1559 static const GLuint kFragmentShaderServiceId = 30; 1579 static const GLuint kFragmentShaderServiceId = 30;
1560 1580
1561 ProgramManagerWithCacheTest() 1581 ProgramManagerWithCacheTest()
1562 : cache_(new MockProgramCache()), 1582 : cache_(new MockProgramCache()),
1563 manager_(cache_.get(), kMaxVaryingVectors), 1583 manager_(cache_.get(), kMaxVaryingVectors),
1564 vertex_shader_(NULL), 1584 vertex_shader_(NULL),
1565 fragment_shader_(NULL), 1585 fragment_shader_(NULL),
1566 program_(NULL) { 1586 program_(NULL) {
1567 } 1587 }
1568 virtual ~ProgramManagerWithCacheTest() { 1588 virtual ~ProgramManagerWithCacheTest() {
1569 manager_.Destroy(false); 1589 manager_.Destroy(false);
1570 shader_manager_.Destroy(false); 1590 shader_manager_.Destroy(false);
1571 } 1591 }
1572 1592
1573 protected: 1593 protected:
1574 virtual void SetUp() { 1594 virtual void SetUp() {
1575 GpuServiceTest::SetUp(); 1595 gl_.reset(new StrictMock<gfx::MockGLInterface>());
1596 ::gfx::MockGLInterface::SetGLInterface(gl_.get());
1576 1597
1577 vertex_shader_ = shader_manager_.CreateShader( 1598 vertex_shader_ = shader_manager_.CreateShader(
1578 kVertexShaderClientId, kVertexShaderServiceId, GL_VERTEX_SHADER); 1599 kVertexShaderClientId, kVertexShaderServiceId, GL_VERTEX_SHADER);
1579 fragment_shader_ = shader_manager_.CreateShader( 1600 fragment_shader_ = shader_manager_.CreateShader(
1580 kFragmentShaderClientId, kFragmentShaderServiceId, GL_FRAGMENT_SHADER); 1601 kFragmentShaderClientId, kFragmentShaderServiceId, GL_FRAGMENT_SHADER);
1581 ASSERT_TRUE(vertex_shader_ != NULL); 1602 ASSERT_TRUE(vertex_shader_ != NULL);
1582 ASSERT_TRUE(fragment_shader_ != NULL); 1603 ASSERT_TRUE(fragment_shader_ != NULL);
1583 vertex_shader_->UpdateSource("lka asjf bjajsdfj"); 1604 vertex_shader_->UpdateSource("lka asjf bjajsdfj");
1584 fragment_shader_->UpdateSource("lka asjf a fasgag 3rdsf3 bjajsdfj"); 1605 fragment_shader_->UpdateSource("lka asjf a fasgag 3rdsf3 bjajsdfj");
1585 1606
1586 program_ = manager_.CreateProgram( 1607 program_ = manager_.CreateProgram(
1587 kClientProgramId, kServiceProgramId); 1608 kClientProgramId, kServiceProgramId);
1588 ASSERT_TRUE(program_ != NULL); 1609 ASSERT_TRUE(program_ != NULL);
1589 1610
1590 program_->AttachShader(&shader_manager_, vertex_shader_); 1611 program_->AttachShader(&shader_manager_, vertex_shader_);
1591 program_->AttachShader(&shader_manager_, fragment_shader_); 1612 program_->AttachShader(&shader_manager_, fragment_shader_);
1592 } 1613 }
1593 1614
1615 virtual void TearDown() {
1616 ::gfx::MockGLInterface::SetGLInterface(NULL);
1617 }
1618
1594 void SetShadersCompiled() { 1619 void SetShadersCompiled() {
1595 vertex_shader_->SetStatus(true, NULL, NULL); 1620 vertex_shader_->SetStatus(true, NULL, NULL);
1596 fragment_shader_->SetStatus(true, NULL, NULL); 1621 fragment_shader_->SetStatus(true, NULL, NULL);
1597 } 1622 }
1598 1623
1599 void SetProgramCached() { 1624 void SetProgramCached() {
1600 cache_->LinkedProgramCacheSuccess( 1625 cache_->LinkedProgramCacheSuccess(
1601 vertex_shader_->source()->c_str(), 1626 vertex_shader_->source()->c_str(),
1602 NULL, 1627 NULL,
1603 fragment_shader_->source()->c_str(), 1628 fragment_shader_->source()->c_str(),
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
1725 ShaderSource(shader_id, 1, Pointee(src), NULL)).Times(1); 1750 ShaderSource(shader_id, 1, Pointee(src), NULL)).Times(1);
1726 EXPECT_CALL(*gl_.get(), CompileShader(shader_id)).Times(1); 1751 EXPECT_CALL(*gl_.get(), CompileShader(shader_id)).Times(1);
1727 EXPECT_CALL(*gl_.get(), GetShaderiv(shader_id, GL_COMPILE_STATUS, _)) 1752 EXPECT_CALL(*gl_.get(), GetShaderiv(shader_id, GL_COMPILE_STATUS, _))
1728 .WillOnce(SetArgumentPointee<2>(GL_FALSE)); 1753 .WillOnce(SetArgumentPointee<2>(GL_FALSE));
1729 EXPECT_CALL(*gl_.get(), GetShaderiv(shader_id, GL_INFO_LOG_LENGTH, _)) 1754 EXPECT_CALL(*gl_.get(), GetShaderiv(shader_id, GL_INFO_LOG_LENGTH, _))
1730 .WillOnce(SetArgumentPointee<2>(0)); 1755 .WillOnce(SetArgumentPointee<2>(0));
1731 EXPECT_CALL(*gl_.get(), GetShaderInfoLog(shader_id, 0, _, _)) 1756 EXPECT_CALL(*gl_.get(), GetShaderInfoLog(shader_id, 0, _, _))
1732 .Times(1); 1757 .Times(1);
1733 } 1758 }
1734 1759
1760 scoped_ptr<StrictMock<gfx::MockGLInterface> > gl_;
1761
1735 scoped_ptr<MockProgramCache> cache_; 1762 scoped_ptr<MockProgramCache> cache_;
1736 ProgramManager manager_; 1763 ProgramManager manager_;
1737 1764
1738 Shader* vertex_shader_; 1765 Shader* vertex_shader_;
1739 Shader* fragment_shader_; 1766 Shader* fragment_shader_;
1740 Program* program_; 1767 Program* program_;
1741 ShaderManager shader_manager_; 1768 ShaderManager shader_manager_;
1742 }; 1769 };
1743 1770
1744 // GCC requires these declarations, but MSVC requires they not be present 1771 // GCC requires these declarations, but MSVC requires they not be present
(...skipping 23 matching lines...) Expand all
1768 SetExpectationsForProgramLoad(ProgramCache::PROGRAM_LOAD_SUCCESS); 1795 SetExpectationsForProgramLoad(ProgramCache::PROGRAM_LOAD_SUCCESS);
1769 SetExpectationsForNotCachingProgram(); 1796 SetExpectationsForNotCachingProgram();
1770 SetExpectationsForProgramLoadSuccess(); 1797 SetExpectationsForProgramLoadSuccess();
1771 1798
1772 EXPECT_TRUE(program_->Link(NULL, NULL, NULL, 1799 EXPECT_TRUE(program_->Link(NULL, NULL, NULL,
1773 Program::kCountOnlyStaticallyUsed, base::Bind(&ShaderCacheCb))); 1800 Program::kCountOnlyStaticallyUsed, base::Bind(&ShaderCacheCb)));
1774 } 1801 }
1775 1802
1776 } // namespace gles2 1803 } // namespace gles2
1777 } // namespace gpu 1804 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/memory_program_cache_unittest.cc ('k') | gpu/command_buffer/service/query_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698