Index: gpu/command_buffer/service/program_manager_unittest.cc |
=================================================================== |
--- gpu/command_buffer/service/program_manager_unittest.cc (revision 250202) |
+++ gpu/command_buffer/service/program_manager_unittest.cc (working copy) |
@@ -250,7 +250,8 @@ |
program_->AttachShader(&shader_manager_, vertex_shader); |
program_->AttachShader(&shader_manager_, fragment_shader); |
- program_->Link(NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); |
+ program_->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, |
+ base::Bind(&ShaderCacheCb)); |
} |
void SetupShader(AttribInfo* attribs, size_t num_attribs, |
@@ -283,7 +284,8 @@ |
SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, |
service_id); |
} |
- program->Link(NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); |
+ program->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, |
+ base::Bind(&ShaderCacheCb)); |
GLint link_status; |
program->GetProgramiv(GL_LINK_STATUS, &link_status); |
return (static_cast<bool>(link_status) == expected_link_status); |
@@ -720,7 +722,8 @@ |
ASSERT_TRUE(program != NULL); |
EXPECT_TRUE(program->AttachShader(&shader_manager_, vshader)); |
EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); |
- program->Link(NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); |
+ program->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, |
+ base::Bind(&ShaderCacheCb)); |
GLint value = 0; |
program->GetProgramiv(GL_ACTIVE_ATTRIBUTES, &value); |
EXPECT_EQ(3, value); |
@@ -788,7 +791,8 @@ |
ASSERT_TRUE(program != NULL); |
EXPECT_TRUE(program->AttachShader(&shader_manager_, vshader)); |
EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); |
- program->Link(NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); |
+ program->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, |
+ base::Bind(&ShaderCacheCb)); |
// Check that we get the correct locations. |
EXPECT_EQ(kUniform2FakeLocation, |
@@ -889,7 +893,8 @@ |
ASSERT_TRUE(program!= NULL); |
EXPECT_TRUE(program->AttachShader(&shader_manager_, vshader)); |
EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); |
- program->Link(NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); |
+ program->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, |
+ base::Bind(&ShaderCacheCb)); |
// Check that we got the good type, not the bad. |
// Check Attribs |
for (unsigned index = 0; index < kNumAttribs; ++index) { |
@@ -1354,7 +1359,8 @@ |
Program* program = SetupShaderVariableTest( |
kVertexVaryings, 2, kFragmentVaryings, 2); |
- EXPECT_FALSE(program->CheckVaryingsPacking()); |
+ EXPECT_FALSE( |
+ program->CheckVaryingsPacking(Program::kCountOnlyStaticallyUsed)); |
EXPECT_TRUE(LinkAsExpected(program, false)); |
} |
@@ -1371,10 +1377,28 @@ |
Program* program = SetupShaderVariableTest( |
kVertexVaryings, 2, kFragmentVaryings, 2); |
- EXPECT_TRUE(program->CheckVaryingsPacking()); |
+ EXPECT_TRUE( |
+ program->CheckVaryingsPacking(Program::kCountOnlyStaticallyUsed)); |
EXPECT_TRUE(LinkAsExpected(program, true)); |
} |
+// Varyings go over 8 rows but some are inactive. |
+// However, we still fail the check if kCountAll option is used. |
+TEST_F(ProgramManagerWithShaderTest, CountAllVaryingsInPacking) { |
+ const VarInfo kVertexVaryings[] = { |
+ { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, |
+ { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
+ }; |
+ const VarInfo kFragmentVaryings[] = { |
+ { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 0, "a", kVarVarying }, |
+ { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
+ }; |
+ Program* program = SetupShaderVariableTest( |
+ kVertexVaryings, 2, kFragmentVaryings, 2); |
+ |
+ EXPECT_FALSE(program->CheckVaryingsPacking(Program::kCountAll)); |
+} |
+ |
TEST_F(ProgramManagerWithShaderTest, ClearWithSamplerTypes) { |
const GLuint kVShaderClientId = 2001; |
const GLuint kFShaderClientId = 2002; |
@@ -1440,7 +1464,8 @@ |
const size_t kNumUniforms = arraysize(kUniforms); |
SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, |
kServiceProgramId); |
- program->Link(NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); |
+ program->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, |
+ base::Bind(&ShaderCacheCb)); |
SetupExpectationsForClearingUniforms(kUniforms, kNumUniforms); |
manager_.ClearUniforms(program); |
} |
@@ -1512,7 +1537,8 @@ |
const size_t kNumUniforms = arraysize(kUniforms); |
SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, |
kServiceProgramId); |
- program->Link(NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); |
+ program->Link(NULL, NULL, NULL, Program::kCountOnlyStaticallyUsed, |
+ base::Bind(&ShaderCacheCb)); |
EXPECT_EQ(kUniform1DesiredLocation, |
program->GetUniformFakeLocation(kUniform1Name)); |
@@ -1736,7 +1762,7 @@ |
SetExpectationsForProgramLink(); |
SetExpectationsForProgramCached(); |
EXPECT_TRUE(program_->Link(NULL, NULL, NULL, |
- base::Bind(&ShaderCacheCb))); |
+ Program::kCountOnlyStaticallyUsed, base::Bind(&ShaderCacheCb))); |
} |
TEST_F(ProgramManagerWithCacheTest, LoadProgramOnProgramCacheHit) { |
@@ -1750,7 +1776,7 @@ |
SetExpectationsForProgramLoadSuccess(); |
EXPECT_TRUE(program_->Link(NULL, NULL, NULL, |
- base::Bind(&ShaderCacheCb))); |
+ Program::kCountOnlyStaticallyUsed, base::Bind(&ShaderCacheCb))); |
} |
} // namespace gles2 |