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, base::Bind(&ShaderCacheCb)); | 253 program_->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, |
| 254 base::Bind(&ShaderCacheCb)); |
254 } | 255 } |
255 | 256 |
256 void SetupShader(AttribInfo* attribs, size_t num_attribs, | 257 void SetupShader(AttribInfo* attribs, size_t num_attribs, |
257 UniformInfo* uniforms, size_t num_uniforms, | 258 UniformInfo* uniforms, size_t num_uniforms, |
258 GLuint service_id) { | 259 GLuint service_id) { |
259 TestHelper::SetupShader( | 260 TestHelper::SetupShader( |
260 gl_.get(), attribs, num_attribs, uniforms, num_uniforms, service_id); | 261 gl_.get(), attribs, num_attribs, uniforms, num_uniforms, service_id); |
261 } | 262 } |
262 | 263 |
263 void SetupDefaultShaderExpectations() { | 264 void SetupDefaultShaderExpectations() { |
(...skipping 12 matching lines...) Expand all Loading... |
276 } | 277 } |
277 | 278 |
278 // Return true if link status matches expected_link_status | 279 // Return true if link status matches expected_link_status |
279 bool LinkAsExpected(Program* program, | 280 bool LinkAsExpected(Program* program, |
280 bool expected_link_status) { | 281 bool expected_link_status) { |
281 GLuint service_id = program->service_id(); | 282 GLuint service_id = program->service_id(); |
282 if (expected_link_status) { | 283 if (expected_link_status) { |
283 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, | 284 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, |
284 service_id); | 285 service_id); |
285 } | 286 } |
286 program->Link(NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); | 287 program->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, |
| 288 base::Bind(&ShaderCacheCb)); |
287 GLint link_status; | 289 GLint link_status; |
288 program->GetProgramiv(GL_LINK_STATUS, &link_status); | 290 program->GetProgramiv(GL_LINK_STATUS, &link_status); |
289 return (static_cast<bool>(link_status) == expected_link_status); | 291 return (static_cast<bool>(link_status) == expected_link_status); |
290 } | 292 } |
291 | 293 |
292 Program* SetupShaderVariableTest(const VarInfo* vertex_variables, | 294 Program* SetupShaderVariableTest(const VarInfo* vertex_variables, |
293 size_t vertex_variable_size, | 295 size_t vertex_variable_size, |
294 const VarInfo* fragment_variables, | 296 const VarInfo* fragment_variables, |
295 size_t fragment_variable_size) { | 297 size_t fragment_variable_size) { |
296 // Set up shader | 298 // Set up shader |
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
713 vshader->SetStatus(true, "", NULL); | 715 vshader->SetStatus(true, "", NULL); |
714 Shader* fshader = shader_manager_.CreateShader( | 716 Shader* fshader = shader_manager_.CreateShader( |
715 kFShaderClientId, kFShaderServiceId, GL_FRAGMENT_SHADER); | 717 kFShaderClientId, kFShaderServiceId, GL_FRAGMENT_SHADER); |
716 ASSERT_TRUE(fshader != NULL); | 718 ASSERT_TRUE(fshader != NULL); |
717 fshader->SetStatus(true, "", NULL); | 719 fshader->SetStatus(true, "", NULL); |
718 Program* program = | 720 Program* program = |
719 manager_.CreateProgram(kClientProgramId, kServiceProgramId); | 721 manager_.CreateProgram(kClientProgramId, kServiceProgramId); |
720 ASSERT_TRUE(program != NULL); | 722 ASSERT_TRUE(program != NULL); |
721 EXPECT_TRUE(program->AttachShader(&shader_manager_, vshader)); | 723 EXPECT_TRUE(program->AttachShader(&shader_manager_, vshader)); |
722 EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); | 724 EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); |
723 program->Link(NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); | 725 program->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, |
| 726 base::Bind(&ShaderCacheCb)); |
724 GLint value = 0; | 727 GLint value = 0; |
725 program->GetProgramiv(GL_ACTIVE_ATTRIBUTES, &value); | 728 program->GetProgramiv(GL_ACTIVE_ATTRIBUTES, &value); |
726 EXPECT_EQ(3, value); | 729 EXPECT_EQ(3, value); |
727 // Check that we skipped the "gl_" uniform. | 730 // Check that we skipped the "gl_" uniform. |
728 program->GetProgramiv(GL_ACTIVE_UNIFORMS, &value); | 731 program->GetProgramiv(GL_ACTIVE_UNIFORMS, &value); |
729 EXPECT_EQ(2, value); | 732 EXPECT_EQ(2, value); |
730 // Check that our max length adds room for the array spec and is not as long | 733 // Check that our max length adds room for the array spec and is not as long |
731 // as the "gl_" uniform we skipped. | 734 // as the "gl_" uniform we skipped. |
732 // +4u is to account for "gl_" and NULL terminator. | 735 // +4u is to account for "gl_" and NULL terminator. |
733 program->GetProgramiv(GL_ACTIVE_UNIFORM_MAX_LENGTH, &value); | 736 program->GetProgramiv(GL_ACTIVE_UNIFORM_MAX_LENGTH, &value); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
781 vshader->SetStatus(true, "", NULL); | 784 vshader->SetStatus(true, "", NULL); |
782 Shader* fshader = shader_manager_.CreateShader( | 785 Shader* fshader = shader_manager_.CreateShader( |
783 kFShaderClientId, kFShaderServiceId, GL_FRAGMENT_SHADER); | 786 kFShaderClientId, kFShaderServiceId, GL_FRAGMENT_SHADER); |
784 ASSERT_TRUE(fshader != NULL); | 787 ASSERT_TRUE(fshader != NULL); |
785 fshader->SetStatus(true, "", NULL); | 788 fshader->SetStatus(true, "", NULL); |
786 Program* program = | 789 Program* program = |
787 manager_.CreateProgram(kClientProgramId, kServiceProgramId); | 790 manager_.CreateProgram(kClientProgramId, kServiceProgramId); |
788 ASSERT_TRUE(program != NULL); | 791 ASSERT_TRUE(program != NULL); |
789 EXPECT_TRUE(program->AttachShader(&shader_manager_, vshader)); | 792 EXPECT_TRUE(program->AttachShader(&shader_manager_, vshader)); |
790 EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); | 793 EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); |
791 program->Link(NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); | 794 program->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, |
| 795 base::Bind(&ShaderCacheCb)); |
792 | 796 |
793 // Check that we get the correct locations. | 797 // Check that we get the correct locations. |
794 EXPECT_EQ(kUniform2FakeLocation, | 798 EXPECT_EQ(kUniform2FakeLocation, |
795 program->GetUniformFakeLocation(kUniform2Name)); | 799 program->GetUniformFakeLocation(kUniform2Name)); |
796 EXPECT_EQ(kUniform3FakeLocation, | 800 EXPECT_EQ(kUniform3FakeLocation, |
797 program->GetUniformFakeLocation(kUniform3Name)); | 801 program->GetUniformFakeLocation(kUniform3Name)); |
798 } | 802 } |
799 | 803 |
800 // Some GL drivers incorrectly return the wrong type. For example they return | 804 // Some GL drivers incorrectly return the wrong type. For example they return |
801 // GL_FLOAT_VEC2 when they should return GL_FLOAT_MAT2. Check we handle this. | 805 // 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... |
882 const size_t kNumUniforms = arraysize(kUniforms); | 886 const size_t kNumUniforms = arraysize(kUniforms); |
883 static const GLuint kClientProgramId = 1234; | 887 static const GLuint kClientProgramId = 1234; |
884 static const GLuint kServiceProgramId = 5679; | 888 static const GLuint kServiceProgramId = 5679; |
885 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, | 889 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, |
886 kServiceProgramId); | 890 kServiceProgramId); |
887 Program* program = manager_.CreateProgram( | 891 Program* program = manager_.CreateProgram( |
888 kClientProgramId, kServiceProgramId); | 892 kClientProgramId, kServiceProgramId); |
889 ASSERT_TRUE(program!= NULL); | 893 ASSERT_TRUE(program!= NULL); |
890 EXPECT_TRUE(program->AttachShader(&shader_manager_, vshader)); | 894 EXPECT_TRUE(program->AttachShader(&shader_manager_, vshader)); |
891 EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); | 895 EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); |
892 program->Link(NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); | 896 program->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, |
| 897 base::Bind(&ShaderCacheCb)); |
893 // Check that we got the good type, not the bad. | 898 // Check that we got the good type, not the bad. |
894 // Check Attribs | 899 // Check Attribs |
895 for (unsigned index = 0; index < kNumAttribs; ++index) { | 900 for (unsigned index = 0; index < kNumAttribs; ++index) { |
896 const Program::VertexAttrib* attrib_info = | 901 const Program::VertexAttrib* attrib_info = |
897 program->GetAttribInfo(index); | 902 program->GetAttribInfo(index); |
898 ASSERT_TRUE(attrib_info != NULL); | 903 ASSERT_TRUE(attrib_info != NULL); |
899 ShaderTranslator::VariableMap::const_iterator it = attrib_map.find( | 904 ShaderTranslator::VariableMap::const_iterator it = attrib_map.find( |
900 attrib_info->name); | 905 attrib_info->name); |
901 ASSERT_TRUE(it != attrib_map.end()); | 906 ASSERT_TRUE(it != attrib_map.end()); |
902 EXPECT_EQ(it->first, attrib_info->name); | 907 EXPECT_EQ(it->first, attrib_info->name); |
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1368 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, | 1373 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, |
1369 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } | 1374 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
1370 }; | 1375 }; |
1371 const VarInfo kFragmentVaryings[] = { | 1376 const VarInfo kFragmentVaryings[] = { |
1372 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, | 1377 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, |
1373 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } | 1378 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
1374 }; | 1379 }; |
1375 Program* program = SetupShaderVariableTest( | 1380 Program* program = SetupShaderVariableTest( |
1376 kVertexVaryings, 2, kFragmentVaryings, 2); | 1381 kVertexVaryings, 2, kFragmentVaryings, 2); |
1377 | 1382 |
1378 EXPECT_FALSE(program->CheckVaryingsPacking()); | 1383 EXPECT_FALSE( |
| 1384 program->CheckVaryingsPacking(Program::kCountOnlyStaticallyUsed)); |
1379 EXPECT_TRUE(LinkAsExpected(program, false)); | 1385 EXPECT_TRUE(LinkAsExpected(program, false)); |
1380 } | 1386 } |
1381 | 1387 |
1382 // Varyings go over 8 rows but some are inactive | 1388 // Varyings go over 8 rows but some are inactive |
1383 TEST_F(ProgramManagerWithShaderTest, TooManyInactiveVaryings) { | 1389 TEST_F(ProgramManagerWithShaderTest, TooManyInactiveVaryings) { |
1384 const VarInfo kVertexVaryings[] = { | 1390 const VarInfo kVertexVaryings[] = { |
1385 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, | 1391 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, |
1386 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } | 1392 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
1387 }; | 1393 }; |
1388 const VarInfo kFragmentVaryings[] = { | 1394 const VarInfo kFragmentVaryings[] = { |
1389 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 0, "a", kVarVarying }, | 1395 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 0, "a", kVarVarying }, |
1390 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } | 1396 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
1391 }; | 1397 }; |
1392 Program* program = SetupShaderVariableTest( | 1398 Program* program = SetupShaderVariableTest( |
1393 kVertexVaryings, 2, kFragmentVaryings, 2); | 1399 kVertexVaryings, 2, kFragmentVaryings, 2); |
1394 | 1400 |
1395 EXPECT_TRUE(program->CheckVaryingsPacking()); | 1401 EXPECT_TRUE( |
| 1402 program->CheckVaryingsPacking(Program::kCountOnlyStaticallyUsed)); |
1396 EXPECT_TRUE(LinkAsExpected(program, true)); | 1403 EXPECT_TRUE(LinkAsExpected(program, true)); |
1397 } | 1404 } |
1398 | 1405 |
| 1406 // Varyings go over 8 rows but some are inactive. |
| 1407 // However, we still fail the check if kCountAll option is used. |
| 1408 TEST_F(ProgramManagerWithShaderTest, CountAllVaryingsInPacking) { |
| 1409 const VarInfo kVertexVaryings[] = { |
| 1410 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, |
| 1411 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
| 1412 }; |
| 1413 const VarInfo kFragmentVaryings[] = { |
| 1414 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 0, "a", kVarVarying }, |
| 1415 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
| 1416 }; |
| 1417 Program* program = SetupShaderVariableTest( |
| 1418 kVertexVaryings, 2, kFragmentVaryings, 2); |
| 1419 |
| 1420 EXPECT_FALSE(program->CheckVaryingsPacking(Program::kCountAll)); |
| 1421 } |
| 1422 |
1399 TEST_F(ProgramManagerWithShaderTest, ClearWithSamplerTypes) { | 1423 TEST_F(ProgramManagerWithShaderTest, ClearWithSamplerTypes) { |
1400 const GLuint kVShaderClientId = 2001; | 1424 const GLuint kVShaderClientId = 2001; |
1401 const GLuint kFShaderClientId = 2002; | 1425 const GLuint kFShaderClientId = 2002; |
1402 const GLuint kVShaderServiceId = 3001; | 1426 const GLuint kVShaderServiceId = 3001; |
1403 const GLuint kFShaderServiceId = 3002; | 1427 const GLuint kFShaderServiceId = 3002; |
1404 Shader* vshader = shader_manager_.CreateShader( | 1428 Shader* vshader = shader_manager_.CreateShader( |
1405 kVShaderClientId, kVShaderServiceId, GL_VERTEX_SHADER); | 1429 kVShaderClientId, kVShaderServiceId, GL_VERTEX_SHADER); |
1406 ASSERT_TRUE(vshader != NULL); | 1430 ASSERT_TRUE(vshader != NULL); |
1407 vshader->SetStatus(true, NULL, NULL); | 1431 vshader->SetStatus(true, NULL, NULL); |
1408 Shader* fshader = shader_manager_.CreateShader( | 1432 Shader* fshader = shader_manager_.CreateShader( |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1454 kUniform3FakeLocation, | 1478 kUniform3FakeLocation, |
1455 kUniform3RealLocation, | 1479 kUniform3RealLocation, |
1456 kUniform3DesiredLocation, | 1480 kUniform3DesiredLocation, |
1457 kUniform3GoodName, | 1481 kUniform3GoodName, |
1458 }, | 1482 }, |
1459 }; | 1483 }; |
1460 const size_t kNumAttribs = arraysize(kAttribs); | 1484 const size_t kNumAttribs = arraysize(kAttribs); |
1461 const size_t kNumUniforms = arraysize(kUniforms); | 1485 const size_t kNumUniforms = arraysize(kUniforms); |
1462 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, | 1486 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, |
1463 kServiceProgramId); | 1487 kServiceProgramId); |
1464 program->Link(NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); | 1488 program->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, |
| 1489 base::Bind(&ShaderCacheCb)); |
1465 SetupExpectationsForClearingUniforms(kUniforms, kNumUniforms); | 1490 SetupExpectationsForClearingUniforms(kUniforms, kNumUniforms); |
1466 manager_.ClearUniforms(program); | 1491 manager_.ClearUniforms(program); |
1467 } | 1492 } |
1468 } | 1493 } |
1469 | 1494 |
1470 TEST_F(ProgramManagerWithShaderTest, BindUniformLocation) { | 1495 TEST_F(ProgramManagerWithShaderTest, BindUniformLocation) { |
1471 const GLuint kVShaderClientId = 2001; | 1496 const GLuint kVShaderClientId = 2001; |
1472 const GLuint kFShaderClientId = 2002; | 1497 const GLuint kFShaderClientId = 2002; |
1473 const GLuint kVShaderServiceId = 3001; | 1498 const GLuint kVShaderServiceId = 3001; |
1474 const GLuint kFShaderServiceId = 3002; | 1499 const GLuint kFShaderServiceId = 3002; |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1526 kUniform3RealLocation, | 1551 kUniform3RealLocation, |
1527 kUniform3DesiredLocation, | 1552 kUniform3DesiredLocation, |
1528 kUniform3GoodName, | 1553 kUniform3GoodName, |
1529 }, | 1554 }, |
1530 }; | 1555 }; |
1531 | 1556 |
1532 const size_t kNumAttribs = arraysize(kAttribs); | 1557 const size_t kNumAttribs = arraysize(kAttribs); |
1533 const size_t kNumUniforms = arraysize(kUniforms); | 1558 const size_t kNumUniforms = arraysize(kUniforms); |
1534 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, | 1559 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, |
1535 kServiceProgramId); | 1560 kServiceProgramId); |
1536 program->Link(NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); | 1561 program->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, |
| 1562 base::Bind(&ShaderCacheCb)); |
1537 | 1563 |
1538 EXPECT_EQ(kUniform1DesiredLocation, | 1564 EXPECT_EQ(kUniform1DesiredLocation, |
1539 program->GetUniformFakeLocation(kUniform1Name)); | 1565 program->GetUniformFakeLocation(kUniform1Name)); |
1540 EXPECT_EQ(kUniform3DesiredLocation, | 1566 EXPECT_EQ(kUniform3DesiredLocation, |
1541 program->GetUniformFakeLocation(kUniform3BadName)); | 1567 program->GetUniformFakeLocation(kUniform3BadName)); |
1542 EXPECT_EQ(kUniform3DesiredLocation, | 1568 EXPECT_EQ(kUniform3DesiredLocation, |
1543 program->GetUniformFakeLocation(kUniform3GoodName)); | 1569 program->GetUniformFakeLocation(kUniform3GoodName)); |
1544 } | 1570 } |
1545 | 1571 |
1546 class ProgramManagerWithCacheTest : public testing::Test { | 1572 class ProgramManagerWithCacheTest : public testing::Test { |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1750 const GLuint ProgramManagerWithCacheTest::kFragmentShaderClientId; | 1776 const GLuint ProgramManagerWithCacheTest::kFragmentShaderClientId; |
1751 const GLuint ProgramManagerWithCacheTest::kVertexShaderServiceId; | 1777 const GLuint ProgramManagerWithCacheTest::kVertexShaderServiceId; |
1752 const GLuint ProgramManagerWithCacheTest::kFragmentShaderServiceId; | 1778 const GLuint ProgramManagerWithCacheTest::kFragmentShaderServiceId; |
1753 #endif | 1779 #endif |
1754 | 1780 |
1755 TEST_F(ProgramManagerWithCacheTest, CacheProgramOnSuccessfulLink) { | 1781 TEST_F(ProgramManagerWithCacheTest, CacheProgramOnSuccessfulLink) { |
1756 SetShadersCompiled(); | 1782 SetShadersCompiled(); |
1757 SetExpectationsForProgramLink(); | 1783 SetExpectationsForProgramLink(); |
1758 SetExpectationsForProgramCached(); | 1784 SetExpectationsForProgramCached(); |
1759 EXPECT_TRUE(program_->Link(NULL, NULL, NULL, | 1785 EXPECT_TRUE(program_->Link(NULL, NULL, NULL, |
1760 base::Bind(&ShaderCacheCb))); | 1786 Program::kCountOnlyStaticallyUsed, base::Bind(&ShaderCacheCb))); |
1761 } | 1787 } |
1762 | 1788 |
1763 TEST_F(ProgramManagerWithCacheTest, LoadProgramOnProgramCacheHit) { | 1789 TEST_F(ProgramManagerWithCacheTest, LoadProgramOnProgramCacheHit) { |
1764 SetShadersCompiled(); | 1790 SetShadersCompiled(); |
1765 SetProgramCached(); | 1791 SetProgramCached(); |
1766 | 1792 |
1767 SetExpectationsForNoCompile(vertex_shader_); | 1793 SetExpectationsForNoCompile(vertex_shader_); |
1768 SetExpectationsForNoCompile(fragment_shader_); | 1794 SetExpectationsForNoCompile(fragment_shader_); |
1769 SetExpectationsForProgramLoad(ProgramCache::PROGRAM_LOAD_SUCCESS); | 1795 SetExpectationsForProgramLoad(ProgramCache::PROGRAM_LOAD_SUCCESS); |
1770 SetExpectationsForNotCachingProgram(); | 1796 SetExpectationsForNotCachingProgram(); |
1771 SetExpectationsForProgramLoadSuccess(); | 1797 SetExpectationsForProgramLoadSuccess(); |
1772 | 1798 |
1773 EXPECT_TRUE(program_->Link(NULL, NULL, NULL, | 1799 EXPECT_TRUE(program_->Link(NULL, NULL, NULL, |
1774 base::Bind(&ShaderCacheCb))); | 1800 Program::kCountOnlyStaticallyUsed, base::Bind(&ShaderCacheCb))); |
1775 } | 1801 } |
1776 | 1802 |
1777 } // namespace gles2 | 1803 } // namespace gles2 |
1778 } // namespace gpu | 1804 } // namespace gpu |
OLD | NEW |