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 1357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1368 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, | 1368 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, |
1369 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } | 1369 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
1370 }; | 1370 }; |
1371 const VarInfo kFragmentVaryings[] = { | 1371 const VarInfo kFragmentVaryings[] = { |
1372 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, | 1372 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, |
1373 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } | 1373 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
1374 }; | 1374 }; |
1375 Program* program = SetupShaderVariableTest( | 1375 Program* program = SetupShaderVariableTest( |
1376 kVertexVaryings, 2, kFragmentVaryings, 2); | 1376 kVertexVaryings, 2, kFragmentVaryings, 2); |
1377 | 1377 |
1378 EXPECT_FALSE(program->CheckVaryingsPacking()); | 1378 EXPECT_FALSE( |
| 1379 program->CheckVaryingsPacking(Program::kCountOnlyStaticallyUsed)); |
1379 EXPECT_TRUE(LinkAsExpected(program, false)); | 1380 EXPECT_TRUE(LinkAsExpected(program, false)); |
1380 } | 1381 } |
1381 | 1382 |
1382 // Varyings go over 8 rows but some are inactive | 1383 // Varyings go over 8 rows but some are inactive |
1383 TEST_F(ProgramManagerWithShaderTest, TooManyInactiveVaryings) { | 1384 TEST_F(ProgramManagerWithShaderTest, TooManyInactiveVaryings) { |
1384 const VarInfo kVertexVaryings[] = { | 1385 const VarInfo kVertexVaryings[] = { |
1385 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, | 1386 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, |
1386 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } | 1387 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
1387 }; | 1388 }; |
1388 const VarInfo kFragmentVaryings[] = { | 1389 const VarInfo kFragmentVaryings[] = { |
1389 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 0, "a", kVarVarying }, | 1390 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 0, "a", kVarVarying }, |
1390 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } | 1391 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
1391 }; | 1392 }; |
1392 Program* program = SetupShaderVariableTest( | 1393 Program* program = SetupShaderVariableTest( |
1393 kVertexVaryings, 2, kFragmentVaryings, 2); | 1394 kVertexVaryings, 2, kFragmentVaryings, 2); |
1394 | 1395 |
1395 EXPECT_TRUE(program->CheckVaryingsPacking()); | 1396 EXPECT_TRUE( |
| 1397 program->CheckVaryingsPacking(Program::kCountOnlyStaticallyUsed)); |
1396 EXPECT_TRUE(LinkAsExpected(program, true)); | 1398 EXPECT_TRUE(LinkAsExpected(program, true)); |
1397 } | 1399 } |
1398 | 1400 |
| 1401 // Varyings go over 8 rows but some are inactive. |
| 1402 // However, we still fail the check if kCountAll option is used. |
| 1403 TEST_F(ProgramManagerWithShaderTest, CountAllVaryingsInPacking) { |
| 1404 const VarInfo kVertexVaryings[] = { |
| 1405 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, |
| 1406 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
| 1407 }; |
| 1408 const VarInfo kFragmentVaryings[] = { |
| 1409 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 0, "a", kVarVarying }, |
| 1410 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
| 1411 }; |
| 1412 Program* program = SetupShaderVariableTest( |
| 1413 kVertexVaryings, 2, kFragmentVaryings, 2); |
| 1414 |
| 1415 EXPECT_FALSE(program->CheckVaryingsPacking(Program::kCountAll)); |
| 1416 } |
| 1417 |
1399 TEST_F(ProgramManagerWithShaderTest, ClearWithSamplerTypes) { | 1418 TEST_F(ProgramManagerWithShaderTest, ClearWithSamplerTypes) { |
1400 const GLuint kVShaderClientId = 2001; | 1419 const GLuint kVShaderClientId = 2001; |
1401 const GLuint kFShaderClientId = 2002; | 1420 const GLuint kFShaderClientId = 2002; |
1402 const GLuint kVShaderServiceId = 3001; | 1421 const GLuint kVShaderServiceId = 3001; |
1403 const GLuint kFShaderServiceId = 3002; | 1422 const GLuint kFShaderServiceId = 3002; |
1404 Shader* vshader = shader_manager_.CreateShader( | 1423 Shader* vshader = shader_manager_.CreateShader( |
1405 kVShaderClientId, kVShaderServiceId, GL_VERTEX_SHADER); | 1424 kVShaderClientId, kVShaderServiceId, GL_VERTEX_SHADER); |
1406 ASSERT_TRUE(vshader != NULL); | 1425 ASSERT_TRUE(vshader != NULL); |
1407 vshader->SetStatus(true, NULL, NULL); | 1426 vshader->SetStatus(true, NULL, NULL); |
1408 Shader* fshader = shader_manager_.CreateShader( | 1427 Shader* fshader = shader_manager_.CreateShader( |
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1769 SetExpectationsForProgramLoad(ProgramCache::PROGRAM_LOAD_SUCCESS); | 1788 SetExpectationsForProgramLoad(ProgramCache::PROGRAM_LOAD_SUCCESS); |
1770 SetExpectationsForNotCachingProgram(); | 1789 SetExpectationsForNotCachingProgram(); |
1771 SetExpectationsForProgramLoadSuccess(); | 1790 SetExpectationsForProgramLoadSuccess(); |
1772 | 1791 |
1773 EXPECT_TRUE(program_->Link(NULL, NULL, NULL, NULL, | 1792 EXPECT_TRUE(program_->Link(NULL, NULL, NULL, NULL, |
1774 base::Bind(&ShaderCacheCb))); | 1793 base::Bind(&ShaderCacheCb))); |
1775 } | 1794 } |
1776 | 1795 |
1777 } // namespace gles2 | 1796 } // namespace gles2 |
1778 } // namespace gpu | 1797 } // namespace gpu |
OLD | NEW |