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

Unified Diff: gpu/command_buffer/service/program_manager_unittest.cc

Issue 153173002: Add a gpu driver bug workaround to count in all varyings in packing check. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: build fix Created 6 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gpu/command_buffer/service/program_manager.cc ('k') | gpu/config/gpu_driver_bug_list_json.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gpu/command_buffer/service/program_manager_unittest.cc
diff --git a/gpu/command_buffer/service/program_manager_unittest.cc b/gpu/command_buffer/service/program_manager_unittest.cc
index b224179a033d3123127799266921ca6b9e0ddc64..686916aa5f36799399652284960c07fa349b4027 100644
--- a/gpu/command_buffer/service/program_manager_unittest.cc
+++ b/gpu/command_buffer/service/program_manager_unittest.cc
@@ -250,7 +250,8 @@ class ProgramManagerWithShaderTest : public testing::Test {
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 @@ class ProgramManagerWithShaderTest : public testing::Test {
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 @@ TEST_F(ProgramManagerWithShaderTest, GLDriverReturnsGLUnderscoreUniform) {
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 @@ TEST_F(ProgramManagerWithShaderTest, SimilarArrayNames) {
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 @@ TEST_F(ProgramManagerWithShaderTest, GLDriverReturnsWrongTypeInfo) {
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) {
@@ -1375,7 +1380,8 @@ TEST_F(ProgramManagerWithShaderTest, TooManyVaryings) {
Program* program = SetupShaderVariableTest(
kVertexVaryings, 2, kFragmentVaryings, 2);
- EXPECT_FALSE(program->CheckVaryingsPacking());
+ EXPECT_FALSE(
+ program->CheckVaryingsPacking(Program::kCountOnlyStaticallyUsed));
EXPECT_TRUE(LinkAsExpected(program, false));
}
@@ -1392,10 +1398,28 @@ TEST_F(ProgramManagerWithShaderTest, TooManyInactiveVaryings) {
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;
@@ -1461,7 +1485,8 @@ TEST_F(ProgramManagerWithShaderTest, ClearWithSamplerTypes) {
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);
}
@@ -1533,7 +1558,8 @@ TEST_F(ProgramManagerWithShaderTest, BindUniformLocation) {
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));
@@ -1757,7 +1783,7 @@ TEST_F(ProgramManagerWithCacheTest, CacheProgramOnSuccessfulLink) {
SetExpectationsForProgramLink();
SetExpectationsForProgramCached();
EXPECT_TRUE(program_->Link(NULL, NULL, NULL,
- base::Bind(&ShaderCacheCb)));
+ Program::kCountOnlyStaticallyUsed, base::Bind(&ShaderCacheCb)));
}
TEST_F(ProgramManagerWithCacheTest, LoadProgramOnProgramCacheHit) {
@@ -1771,7 +1797,7 @@ TEST_F(ProgramManagerWithCacheTest, LoadProgramOnProgramCacheHit) {
SetExpectationsForProgramLoadSuccess();
EXPECT_TRUE(program_->Link(NULL, NULL, NULL,
- base::Bind(&ShaderCacheCb)));
+ Program::kCountOnlyStaticallyUsed, base::Bind(&ShaderCacheCb)));
}
} // namespace gles2
« no previous file with comments | « gpu/command_buffer/service/program_manager.cc ('k') | gpu/config/gpu_driver_bug_list_json.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698