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/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" |
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 ASSERT_TRUE(fragment_shader != NULL); | 243 ASSERT_TRUE(fragment_shader != NULL); |
244 vertex_shader->SetStatus(true, NULL, NULL); | 244 vertex_shader->SetStatus(true, NULL, NULL); |
245 fragment_shader->SetStatus(true, NULL, NULL); | 245 fragment_shader->SetStatus(true, NULL, NULL); |
246 | 246 |
247 program_ = manager_.CreateProgram( | 247 program_ = manager_.CreateProgram( |
248 kClientProgramId, kServiceProgramId); | 248 kClientProgramId, kServiceProgramId); |
249 ASSERT_TRUE(program_ != NULL); | 249 ASSERT_TRUE(program_ != NULL); |
250 | 250 |
251 program_->AttachShader(&shader_manager_, vertex_shader); | 251 program_->AttachShader(&shader_manager_, vertex_shader); |
252 program_->AttachShader(&shader_manager_, fragment_shader); | 252 program_->AttachShader(&shader_manager_, fragment_shader); |
253 program_->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, | 253 program_->Link(NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); |
254 base::Bind(&ShaderCacheCb)); | |
255 } | 254 } |
256 | 255 |
257 void SetupShader(AttribInfo* attribs, size_t num_attribs, | 256 void SetupShader(AttribInfo* attribs, size_t num_attribs, |
258 UniformInfo* uniforms, size_t num_uniforms, | 257 UniformInfo* uniforms, size_t num_uniforms, |
259 GLuint service_id) { | 258 GLuint service_id) { |
260 TestHelper::SetupShader( | 259 TestHelper::SetupShader( |
261 gl_.get(), attribs, num_attribs, uniforms, num_uniforms, service_id); | 260 gl_.get(), attribs, num_attribs, uniforms, num_uniforms, service_id); |
262 } | 261 } |
263 | 262 |
264 void SetupDefaultShaderExpectations() { | 263 void SetupDefaultShaderExpectations() { |
(...skipping 12 matching lines...) Expand all Loading... |
277 } | 276 } |
278 | 277 |
279 // Return true if link status matches expected_link_status | 278 // Return true if link status matches expected_link_status |
280 bool LinkAsExpected(Program* program, | 279 bool LinkAsExpected(Program* program, |
281 bool expected_link_status) { | 280 bool expected_link_status) { |
282 GLuint service_id = program->service_id(); | 281 GLuint service_id = program->service_id(); |
283 if (expected_link_status) { | 282 if (expected_link_status) { |
284 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, | 283 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, |
285 service_id); | 284 service_id); |
286 } | 285 } |
287 program->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, | 286 program->Link(NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); |
288 base::Bind(&ShaderCacheCb)); | |
289 GLint link_status; | 287 GLint link_status; |
290 program->GetProgramiv(GL_LINK_STATUS, &link_status); | 288 program->GetProgramiv(GL_LINK_STATUS, &link_status); |
291 return (static_cast<bool>(link_status) == expected_link_status); | 289 return (static_cast<bool>(link_status) == expected_link_status); |
292 } | 290 } |
293 | 291 |
294 Program* SetupShaderVariableTest(const VarInfo* vertex_variables, | 292 Program* SetupShaderVariableTest(const VarInfo* vertex_variables, |
295 size_t vertex_variable_size, | 293 size_t vertex_variable_size, |
296 const VarInfo* fragment_variables, | 294 const VarInfo* fragment_variables, |
297 size_t fragment_variable_size) { | 295 size_t fragment_variable_size) { |
298 // Set up shader | 296 // Set up shader |
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
715 vshader->SetStatus(true, "", NULL); | 713 vshader->SetStatus(true, "", NULL); |
716 Shader* fshader = shader_manager_.CreateShader( | 714 Shader* fshader = shader_manager_.CreateShader( |
717 kFShaderClientId, kFShaderServiceId, GL_FRAGMENT_SHADER); | 715 kFShaderClientId, kFShaderServiceId, GL_FRAGMENT_SHADER); |
718 ASSERT_TRUE(fshader != NULL); | 716 ASSERT_TRUE(fshader != NULL); |
719 fshader->SetStatus(true, "", NULL); | 717 fshader->SetStatus(true, "", NULL); |
720 Program* program = | 718 Program* program = |
721 manager_.CreateProgram(kClientProgramId, kServiceProgramId); | 719 manager_.CreateProgram(kClientProgramId, kServiceProgramId); |
722 ASSERT_TRUE(program != NULL); | 720 ASSERT_TRUE(program != NULL); |
723 EXPECT_TRUE(program->AttachShader(&shader_manager_, vshader)); | 721 EXPECT_TRUE(program->AttachShader(&shader_manager_, vshader)); |
724 EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); | 722 EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); |
725 program->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, | 723 program->Link(NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); |
726 base::Bind(&ShaderCacheCb)); | |
727 GLint value = 0; | 724 GLint value = 0; |
728 program->GetProgramiv(GL_ACTIVE_ATTRIBUTES, &value); | 725 program->GetProgramiv(GL_ACTIVE_ATTRIBUTES, &value); |
729 EXPECT_EQ(3, value); | 726 EXPECT_EQ(3, value); |
730 // Check that we skipped the "gl_" uniform. | 727 // Check that we skipped the "gl_" uniform. |
731 program->GetProgramiv(GL_ACTIVE_UNIFORMS, &value); | 728 program->GetProgramiv(GL_ACTIVE_UNIFORMS, &value); |
732 EXPECT_EQ(2, value); | 729 EXPECT_EQ(2, value); |
733 // Check that our max length adds room for the array spec and is not as long | 730 // Check that our max length adds room for the array spec and is not as long |
734 // as the "gl_" uniform we skipped. | 731 // as the "gl_" uniform we skipped. |
735 // +4u is to account for "gl_" and NULL terminator. | 732 // +4u is to account for "gl_" and NULL terminator. |
736 program->GetProgramiv(GL_ACTIVE_UNIFORM_MAX_LENGTH, &value); | 733 program->GetProgramiv(GL_ACTIVE_UNIFORM_MAX_LENGTH, &value); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
784 vshader->SetStatus(true, "", NULL); | 781 vshader->SetStatus(true, "", NULL); |
785 Shader* fshader = shader_manager_.CreateShader( | 782 Shader* fshader = shader_manager_.CreateShader( |
786 kFShaderClientId, kFShaderServiceId, GL_FRAGMENT_SHADER); | 783 kFShaderClientId, kFShaderServiceId, GL_FRAGMENT_SHADER); |
787 ASSERT_TRUE(fshader != NULL); | 784 ASSERT_TRUE(fshader != NULL); |
788 fshader->SetStatus(true, "", NULL); | 785 fshader->SetStatus(true, "", NULL); |
789 Program* program = | 786 Program* program = |
790 manager_.CreateProgram(kClientProgramId, kServiceProgramId); | 787 manager_.CreateProgram(kClientProgramId, kServiceProgramId); |
791 ASSERT_TRUE(program != NULL); | 788 ASSERT_TRUE(program != NULL); |
792 EXPECT_TRUE(program->AttachShader(&shader_manager_, vshader)); | 789 EXPECT_TRUE(program->AttachShader(&shader_manager_, vshader)); |
793 EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); | 790 EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); |
794 program->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, | 791 program->Link(NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); |
795 base::Bind(&ShaderCacheCb)); | |
796 | 792 |
797 // Check that we get the correct locations. | 793 // Check that we get the correct locations. |
798 EXPECT_EQ(kUniform2FakeLocation, | 794 EXPECT_EQ(kUniform2FakeLocation, |
799 program->GetUniformFakeLocation(kUniform2Name)); | 795 program->GetUniformFakeLocation(kUniform2Name)); |
800 EXPECT_EQ(kUniform3FakeLocation, | 796 EXPECT_EQ(kUniform3FakeLocation, |
801 program->GetUniformFakeLocation(kUniform3Name)); | 797 program->GetUniformFakeLocation(kUniform3Name)); |
802 } | 798 } |
803 | 799 |
804 // Some GL drivers incorrectly return the wrong type. For example they return | 800 // Some GL drivers incorrectly return the wrong type. For example they return |
805 // GL_FLOAT_VEC2 when they should return GL_FLOAT_MAT2. Check we handle this. | 801 // GL_FLOAT_VEC2 when they should return GL_FLOAT_MAT2. Check we handle this. |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
886 const size_t kNumUniforms = arraysize(kUniforms); | 882 const size_t kNumUniforms = arraysize(kUniforms); |
887 static const GLuint kClientProgramId = 1234; | 883 static const GLuint kClientProgramId = 1234; |
888 static const GLuint kServiceProgramId = 5679; | 884 static const GLuint kServiceProgramId = 5679; |
889 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, | 885 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, |
890 kServiceProgramId); | 886 kServiceProgramId); |
891 Program* program = manager_.CreateProgram( | 887 Program* program = manager_.CreateProgram( |
892 kClientProgramId, kServiceProgramId); | 888 kClientProgramId, kServiceProgramId); |
893 ASSERT_TRUE(program!= NULL); | 889 ASSERT_TRUE(program!= NULL); |
894 EXPECT_TRUE(program->AttachShader(&shader_manager_, vshader)); | 890 EXPECT_TRUE(program->AttachShader(&shader_manager_, vshader)); |
895 EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); | 891 EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); |
896 program->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, | 892 program->Link(NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); |
897 base::Bind(&ShaderCacheCb)); | |
898 // Check that we got the good type, not the bad. | 893 // Check that we got the good type, not the bad. |
899 // Check Attribs | 894 // Check Attribs |
900 for (unsigned index = 0; index < kNumAttribs; ++index) { | 895 for (unsigned index = 0; index < kNumAttribs; ++index) { |
901 const Program::VertexAttrib* attrib_info = | 896 const Program::VertexAttrib* attrib_info = |
902 program->GetAttribInfo(index); | 897 program->GetAttribInfo(index); |
903 ASSERT_TRUE(attrib_info != NULL); | 898 ASSERT_TRUE(attrib_info != NULL); |
904 ShaderTranslator::VariableMap::const_iterator it = attrib_map.find( | 899 ShaderTranslator::VariableMap::const_iterator it = attrib_map.find( |
905 attrib_info->name); | 900 attrib_info->name); |
906 ASSERT_TRUE(it != attrib_map.end()); | 901 ASSERT_TRUE(it != attrib_map.end()); |
907 EXPECT_EQ(it->first, attrib_info->name); | 902 EXPECT_EQ(it->first, attrib_info->name); |
(...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1352 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, | 1347 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, |
1353 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } | 1348 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
1354 }; | 1349 }; |
1355 const VarInfo kFragmentVaryings[] = { | 1350 const VarInfo kFragmentVaryings[] = { |
1356 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, | 1351 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, |
1357 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } | 1352 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
1358 }; | 1353 }; |
1359 Program* program = SetupShaderVariableTest( | 1354 Program* program = SetupShaderVariableTest( |
1360 kVertexVaryings, 2, kFragmentVaryings, 2); | 1355 kVertexVaryings, 2, kFragmentVaryings, 2); |
1361 | 1356 |
1362 EXPECT_FALSE( | 1357 EXPECT_FALSE(program->CheckVaryingsPacking()); |
1363 program->CheckVaryingsPacking(Program::kCountOnlyStaticallyUsed)); | |
1364 EXPECT_TRUE(LinkAsExpected(program, false)); | 1358 EXPECT_TRUE(LinkAsExpected(program, false)); |
1365 } | 1359 } |
1366 | 1360 |
1367 // Varyings go over 8 rows but some are inactive | 1361 // Varyings go over 8 rows but some are inactive |
1368 TEST_F(ProgramManagerWithShaderTest, TooManyInactiveVaryings) { | 1362 TEST_F(ProgramManagerWithShaderTest, TooManyInactiveVaryings) { |
1369 const VarInfo kVertexVaryings[] = { | 1363 const VarInfo kVertexVaryings[] = { |
1370 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, | 1364 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, |
1371 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } | 1365 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
1372 }; | 1366 }; |
1373 const VarInfo kFragmentVaryings[] = { | 1367 const VarInfo kFragmentVaryings[] = { |
1374 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 0, "a", kVarVarying }, | 1368 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 0, "a", kVarVarying }, |
1375 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } | 1369 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
1376 }; | 1370 }; |
1377 Program* program = SetupShaderVariableTest( | 1371 Program* program = SetupShaderVariableTest( |
1378 kVertexVaryings, 2, kFragmentVaryings, 2); | 1372 kVertexVaryings, 2, kFragmentVaryings, 2); |
1379 | 1373 |
1380 EXPECT_TRUE( | 1374 EXPECT_TRUE(program->CheckVaryingsPacking()); |
1381 program->CheckVaryingsPacking(Program::kCountOnlyStaticallyUsed)); | |
1382 EXPECT_TRUE(LinkAsExpected(program, true)); | 1375 EXPECT_TRUE(LinkAsExpected(program, true)); |
1383 } | 1376 } |
1384 | 1377 |
1385 // Varyings go over 8 rows but some are inactive. | |
1386 // However, we still fail the check if kCountAll option is used. | |
1387 TEST_F(ProgramManagerWithShaderTest, CountAllVaryingsInPacking) { | |
1388 const VarInfo kVertexVaryings[] = { | |
1389 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, | |
1390 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } | |
1391 }; | |
1392 const VarInfo kFragmentVaryings[] = { | |
1393 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 0, "a", kVarVarying }, | |
1394 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } | |
1395 }; | |
1396 Program* program = SetupShaderVariableTest( | |
1397 kVertexVaryings, 2, kFragmentVaryings, 2); | |
1398 | |
1399 EXPECT_FALSE(program->CheckVaryingsPacking(Program::kCountAll)); | |
1400 } | |
1401 | |
1402 TEST_F(ProgramManagerWithShaderTest, ClearWithSamplerTypes) { | 1378 TEST_F(ProgramManagerWithShaderTest, ClearWithSamplerTypes) { |
1403 const GLuint kVShaderClientId = 2001; | 1379 const GLuint kVShaderClientId = 2001; |
1404 const GLuint kFShaderClientId = 2002; | 1380 const GLuint kFShaderClientId = 2002; |
1405 const GLuint kVShaderServiceId = 3001; | 1381 const GLuint kVShaderServiceId = 3001; |
1406 const GLuint kFShaderServiceId = 3002; | 1382 const GLuint kFShaderServiceId = 3002; |
1407 Shader* vshader = shader_manager_.CreateShader( | 1383 Shader* vshader = shader_manager_.CreateShader( |
1408 kVShaderClientId, kVShaderServiceId, GL_VERTEX_SHADER); | 1384 kVShaderClientId, kVShaderServiceId, GL_VERTEX_SHADER); |
1409 ASSERT_TRUE(vshader != NULL); | 1385 ASSERT_TRUE(vshader != NULL); |
1410 vshader->SetStatus(true, NULL, NULL); | 1386 vshader->SetStatus(true, NULL, NULL); |
1411 Shader* fshader = shader_manager_.CreateShader( | 1387 Shader* fshader = shader_manager_.CreateShader( |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1457 kUniform3FakeLocation, | 1433 kUniform3FakeLocation, |
1458 kUniform3RealLocation, | 1434 kUniform3RealLocation, |
1459 kUniform3DesiredLocation, | 1435 kUniform3DesiredLocation, |
1460 kUniform3GoodName, | 1436 kUniform3GoodName, |
1461 }, | 1437 }, |
1462 }; | 1438 }; |
1463 const size_t kNumAttribs = arraysize(kAttribs); | 1439 const size_t kNumAttribs = arraysize(kAttribs); |
1464 const size_t kNumUniforms = arraysize(kUniforms); | 1440 const size_t kNumUniforms = arraysize(kUniforms); |
1465 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, | 1441 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, |
1466 kServiceProgramId); | 1442 kServiceProgramId); |
1467 program->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, | 1443 program->Link(NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); |
1468 base::Bind(&ShaderCacheCb)); | |
1469 SetupExpectationsForClearingUniforms(kUniforms, kNumUniforms); | 1444 SetupExpectationsForClearingUniforms(kUniforms, kNumUniforms); |
1470 manager_.ClearUniforms(program); | 1445 manager_.ClearUniforms(program); |
1471 } | 1446 } |
1472 } | 1447 } |
1473 | 1448 |
1474 TEST_F(ProgramManagerWithShaderTest, BindUniformLocation) { | 1449 TEST_F(ProgramManagerWithShaderTest, BindUniformLocation) { |
1475 const GLuint kVShaderClientId = 2001; | 1450 const GLuint kVShaderClientId = 2001; |
1476 const GLuint kFShaderClientId = 2002; | 1451 const GLuint kFShaderClientId = 2002; |
1477 const GLuint kVShaderServiceId = 3001; | 1452 const GLuint kVShaderServiceId = 3001; |
1478 const GLuint kFShaderServiceId = 3002; | 1453 const GLuint kFShaderServiceId = 3002; |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1530 kUniform3RealLocation, | 1505 kUniform3RealLocation, |
1531 kUniform3DesiredLocation, | 1506 kUniform3DesiredLocation, |
1532 kUniform3GoodName, | 1507 kUniform3GoodName, |
1533 }, | 1508 }, |
1534 }; | 1509 }; |
1535 | 1510 |
1536 const size_t kNumAttribs = arraysize(kAttribs); | 1511 const size_t kNumAttribs = arraysize(kAttribs); |
1537 const size_t kNumUniforms = arraysize(kUniforms); | 1512 const size_t kNumUniforms = arraysize(kUniforms); |
1538 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, | 1513 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, |
1539 kServiceProgramId); | 1514 kServiceProgramId); |
1540 program->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, | 1515 program->Link(NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); |
1541 base::Bind(&ShaderCacheCb)); | |
1542 | 1516 |
1543 EXPECT_EQ(kUniform1DesiredLocation, | 1517 EXPECT_EQ(kUniform1DesiredLocation, |
1544 program->GetUniformFakeLocation(kUniform1Name)); | 1518 program->GetUniformFakeLocation(kUniform1Name)); |
1545 EXPECT_EQ(kUniform3DesiredLocation, | 1519 EXPECT_EQ(kUniform3DesiredLocation, |
1546 program->GetUniformFakeLocation(kUniform3BadName)); | 1520 program->GetUniformFakeLocation(kUniform3BadName)); |
1547 EXPECT_EQ(kUniform3DesiredLocation, | 1521 EXPECT_EQ(kUniform3DesiredLocation, |
1548 program->GetUniformFakeLocation(kUniform3GoodName)); | 1522 program->GetUniformFakeLocation(kUniform3GoodName)); |
1549 } | 1523 } |
1550 | 1524 |
1551 class ProgramManagerWithCacheTest : public testing::Test { | 1525 class ProgramManagerWithCacheTest : public testing::Test { |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1755 const GLuint ProgramManagerWithCacheTest::kFragmentShaderClientId; | 1729 const GLuint ProgramManagerWithCacheTest::kFragmentShaderClientId; |
1756 const GLuint ProgramManagerWithCacheTest::kVertexShaderServiceId; | 1730 const GLuint ProgramManagerWithCacheTest::kVertexShaderServiceId; |
1757 const GLuint ProgramManagerWithCacheTest::kFragmentShaderServiceId; | 1731 const GLuint ProgramManagerWithCacheTest::kFragmentShaderServiceId; |
1758 #endif | 1732 #endif |
1759 | 1733 |
1760 TEST_F(ProgramManagerWithCacheTest, CacheProgramOnSuccessfulLink) { | 1734 TEST_F(ProgramManagerWithCacheTest, CacheProgramOnSuccessfulLink) { |
1761 SetShadersCompiled(); | 1735 SetShadersCompiled(); |
1762 SetExpectationsForProgramLink(); | 1736 SetExpectationsForProgramLink(); |
1763 SetExpectationsForProgramCached(); | 1737 SetExpectationsForProgramCached(); |
1764 EXPECT_TRUE(program_->Link(NULL, NULL, NULL, | 1738 EXPECT_TRUE(program_->Link(NULL, NULL, NULL, |
1765 Program::kCountOnlyStaticallyUsed, base::Bind(&ShaderCacheCb))); | 1739 base::Bind(&ShaderCacheCb))); |
1766 } | 1740 } |
1767 | 1741 |
1768 TEST_F(ProgramManagerWithCacheTest, LoadProgramOnProgramCacheHit) { | 1742 TEST_F(ProgramManagerWithCacheTest, LoadProgramOnProgramCacheHit) { |
1769 SetShadersCompiled(); | 1743 SetShadersCompiled(); |
1770 SetProgramCached(); | 1744 SetProgramCached(); |
1771 | 1745 |
1772 SetExpectationsForNoCompile(vertex_shader_); | 1746 SetExpectationsForNoCompile(vertex_shader_); |
1773 SetExpectationsForNoCompile(fragment_shader_); | 1747 SetExpectationsForNoCompile(fragment_shader_); |
1774 SetExpectationsForProgramLoad(ProgramCache::PROGRAM_LOAD_SUCCESS); | 1748 SetExpectationsForProgramLoad(ProgramCache::PROGRAM_LOAD_SUCCESS); |
1775 SetExpectationsForNotCachingProgram(); | 1749 SetExpectationsForNotCachingProgram(); |
1776 SetExpectationsForProgramLoadSuccess(); | 1750 SetExpectationsForProgramLoadSuccess(); |
1777 | 1751 |
1778 EXPECT_TRUE(program_->Link(NULL, NULL, NULL, | 1752 EXPECT_TRUE(program_->Link(NULL, NULL, NULL, |
1779 Program::kCountOnlyStaticallyUsed, base::Bind(&ShaderCacheCb))); | 1753 base::Bind(&ShaderCacheCb))); |
1780 } | 1754 } |
1781 | 1755 |
1782 } // namespace gles2 | 1756 } // namespace gles2 |
1783 } // namespace gpu | 1757 } // namespace gpu |
OLD | NEW |