| 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 3cca2637e230933146ac5aa38eb88331270e356e..1386088f54cb3ecca009cd9db96c3f88156f7c61 100644
|
| --- a/gpu/command_buffer/service/program_manager_unittest.cc
|
| +++ b/gpu/command_buffer/service/program_manager_unittest.cc
|
| @@ -151,10 +151,10 @@ class ProgramManagerWithShaderTest : public GpuServiceTest {
|
| static const GLint kAttrib1Size = 1;
|
| static const GLint kAttrib2Size = 1;
|
| static const GLint kAttrib3Size = 1;
|
| - static const int kAttrib1Precision = SH_PRECISION_MEDIUMP;
|
| - static const int kAttrib2Precision = SH_PRECISION_HIGHP;
|
| - static const int kAttrib3Precision = SH_PRECISION_LOWP;
|
| - static const int kAttribStaticUse = 0;
|
| + static const GLenum kAttrib1Precision = GL_MEDIUM_FLOAT;
|
| + static const GLenum kAttrib2Precision = GL_HIGH_FLOAT;
|
| + static const GLenum kAttrib3Precision = GL_LOW_FLOAT;
|
| + static const bool kAttribStaticUse = false;
|
| static const GLint kAttrib1Location = 0;
|
| static const GLint kAttrib2Location = 1;
|
| static const GLint kAttrib3Location = 2;
|
| @@ -166,8 +166,9 @@ class ProgramManagerWithShaderTest : public GpuServiceTest {
|
|
|
| static const char* kUniform1Name;
|
| static const char* kUniform2Name;
|
| - static const char* kUniform3BadName;
|
| - static const char* kUniform3GoodName;
|
| + static const char* kUniform2NameWithArrayIndex;
|
| + static const char* kUniform3Name;
|
| + static const char* kUniform3NameWithArrayIndex;
|
| static const GLint kUniform1Size = 1;
|
| static const GLint kUniform2Size = 3;
|
| static const GLint kUniform3Size = 2;
|
| @@ -206,10 +207,10 @@ class ProgramManagerWithShaderTest : public GpuServiceTest {
|
| } VarCategory;
|
|
|
| typedef struct {
|
| - int type;
|
| - int size;
|
| - int precision;
|
| - int static_use;
|
| + GLenum type;
|
| + GLint size;
|
| + GLenum precision;
|
| + bool static_use;
|
| std::string name;
|
| VarCategory category;
|
| } VarInfo;
|
| @@ -283,56 +284,78 @@ class ProgramManagerWithShaderTest : public GpuServiceTest {
|
| const GLuint kFShaderClientId = 2;
|
| const GLuint kFShaderServiceId = 12;
|
|
|
| - ShaderTranslator::VariableMap vertex_attrib_map;
|
| - ShaderTranslator::VariableMap vertex_uniform_map;
|
| - ShaderTranslator::VariableMap vertex_varying_map;
|
| + AttributeMap vertex_attrib_map;
|
| + UniformMap vertex_uniform_map;
|
| + VaryingMap vertex_varying_map;
|
| for (size_t ii = 0; ii < vertex_variable_size; ++ii) {
|
| - ShaderTranslator::VariableMap* map = NULL;
|
| switch (vertex_variables[ii].category) {
|
| case kVarAttribute:
|
| - map = &vertex_attrib_map;
|
| + vertex_attrib_map[vertex_variables[ii].name] =
|
| + TestHelper::ConstructAttribute(
|
| + vertex_variables[ii].type,
|
| + vertex_variables[ii].size,
|
| + vertex_variables[ii].precision,
|
| + vertex_variables[ii].static_use,
|
| + vertex_variables[ii].name);
|
| break;
|
| case kVarUniform:
|
| - map = &vertex_uniform_map;
|
| + vertex_uniform_map[vertex_variables[ii].name] =
|
| + TestHelper::ConstructUniform(
|
| + vertex_variables[ii].type,
|
| + vertex_variables[ii].size,
|
| + vertex_variables[ii].precision,
|
| + vertex_variables[ii].static_use,
|
| + vertex_variables[ii].name);
|
| break;
|
| case kVarVarying:
|
| - map = &vertex_varying_map;
|
| + vertex_varying_map[vertex_variables[ii].name] =
|
| + TestHelper::ConstructVarying(
|
| + vertex_variables[ii].type,
|
| + vertex_variables[ii].size,
|
| + vertex_variables[ii].precision,
|
| + vertex_variables[ii].static_use,
|
| + vertex_variables[ii].name);
|
| break;
|
| default:
|
| NOTREACHED();
|
| }
|
| - (*map)[vertex_variables[ii].name] =
|
| - ShaderTranslator::VariableInfo(vertex_variables[ii].type,
|
| - vertex_variables[ii].size,
|
| - vertex_variables[ii].precision,
|
| - vertex_variables[ii].static_use,
|
| - vertex_variables[ii].name);
|
| }
|
|
|
| - ShaderTranslator::VariableMap frag_attrib_map;
|
| - ShaderTranslator::VariableMap frag_uniform_map;
|
| - ShaderTranslator::VariableMap frag_varying_map;
|
| + AttributeMap frag_attrib_map;
|
| + UniformMap frag_uniform_map;
|
| + VaryingMap frag_varying_map;
|
| for (size_t ii = 0; ii < fragment_variable_size; ++ii) {
|
| - ShaderTranslator::VariableMap* map = NULL;
|
| switch (fragment_variables[ii].category) {
|
| case kVarAttribute:
|
| - map = &frag_attrib_map;
|
| + frag_attrib_map[fragment_variables[ii].name] =
|
| + TestHelper::ConstructAttribute(
|
| + fragment_variables[ii].type,
|
| + fragment_variables[ii].size,
|
| + fragment_variables[ii].precision,
|
| + fragment_variables[ii].static_use,
|
| + fragment_variables[ii].name);
|
| break;
|
| case kVarUniform:
|
| - map = &frag_uniform_map;
|
| + frag_uniform_map[fragment_variables[ii].name] =
|
| + TestHelper::ConstructUniform(
|
| + fragment_variables[ii].type,
|
| + fragment_variables[ii].size,
|
| + fragment_variables[ii].precision,
|
| + fragment_variables[ii].static_use,
|
| + fragment_variables[ii].name);
|
| break;
|
| case kVarVarying:
|
| - map = &frag_varying_map;
|
| + frag_varying_map[fragment_variables[ii].name] =
|
| + TestHelper::ConstructVarying(
|
| + fragment_variables[ii].type,
|
| + fragment_variables[ii].size,
|
| + fragment_variables[ii].precision,
|
| + fragment_variables[ii].static_use,
|
| + fragment_variables[ii].name);
|
| break;
|
| default:
|
| NOTREACHED();
|
| }
|
| - (*map)[fragment_variables[ii].name] =
|
| - ShaderTranslator::VariableInfo(fragment_variables[ii].type,
|
| - fragment_variables[ii].size,
|
| - fragment_variables[ii].precision,
|
| - fragment_variables[ii].static_use,
|
| - fragment_variables[ii].name);
|
| }
|
|
|
| // Check we can create shader.
|
| @@ -434,15 +457,15 @@ ProgramManagerWithShaderTest::UniformInfo
|
| kUniform2FakeLocation,
|
| kUniform2RealLocation,
|
| kUniform2DesiredLocation,
|
| - kUniform2Name,
|
| + kUniform2NameWithArrayIndex,
|
| },
|
| - { kUniform3BadName,
|
| + { kUniform3Name,
|
| kUniform3Size,
|
| kUniform3Type,
|
| kUniform3FakeLocation,
|
| kUniform3RealLocation,
|
| kUniform3DesiredLocation,
|
| - kUniform3GoodName,
|
| + kUniform3NameWithArrayIndex,
|
| },
|
| };
|
|
|
| @@ -453,11 +476,12 @@ const char* ProgramManagerWithShaderTest::kAttrib1Name = "attrib1";
|
| const char* ProgramManagerWithShaderTest::kAttrib2Name = "attrib2";
|
| const char* ProgramManagerWithShaderTest::kAttrib3Name = "attrib3";
|
| const char* ProgramManagerWithShaderTest::kUniform1Name = "uniform1";
|
| -// Correctly has array spec.
|
| -const char* ProgramManagerWithShaderTest::kUniform2Name = "uniform2[0]";
|
| -// Incorrectly missing array spec.
|
| -const char* ProgramManagerWithShaderTest::kUniform3BadName = "uniform3";
|
| -const char* ProgramManagerWithShaderTest::kUniform3GoodName = "uniform3[0]";
|
| +const char* ProgramManagerWithShaderTest::kUniform2Name = "uniform2";
|
| +const char* ProgramManagerWithShaderTest::kUniform2NameWithArrayIndex =
|
| + "uniform2[0]";
|
| +const char* ProgramManagerWithShaderTest::kUniform3Name = "uniform3";
|
| +const char* ProgramManagerWithShaderTest::kUniform3NameWithArrayIndex =
|
| + "uniform3[0]";
|
|
|
| TEST_F(ProgramManagerWithShaderTest, GetAttribInfos) {
|
| const Program* program = manager_.GetProgram(kClientProgramId);
|
| @@ -514,7 +538,7 @@ TEST_F(ProgramManagerWithShaderTest, GetUniformInfo) {
|
| EXPECT_EQ(kUniform2Size, info->size);
|
| EXPECT_EQ(kUniform2Type, info->type);
|
| EXPECT_EQ(kUniform2RealLocation, info->element_locations[0]);
|
| - EXPECT_STREQ(kUniform2Name, info->name.c_str());
|
| + EXPECT_STREQ(kUniform2NameWithArrayIndex, info->name.c_str());
|
| info = program->GetUniformInfo(2);
|
| // We emulate certain OpenGL drivers by supplying the name without
|
| // the array spec. Our implementation should correctly add the required spec.
|
| @@ -522,7 +546,7 @@ TEST_F(ProgramManagerWithShaderTest, GetUniformInfo) {
|
| EXPECT_EQ(kUniform3Size, info->size);
|
| EXPECT_EQ(kUniform3Type, info->type);
|
| EXPECT_EQ(kUniform3RealLocation, info->element_locations[0]);
|
| - EXPECT_STREQ(kUniform3GoodName, info->name.c_str());
|
| + EXPECT_STREQ(kUniform3NameWithArrayIndex, info->name.c_str());
|
| EXPECT_TRUE(program->GetUniformInfo(kInvalidIndex) == NULL);
|
| }
|
|
|
| @@ -586,7 +610,7 @@ TEST_F(ProgramManagerWithShaderTest, GetUniformFakeLocation) {
|
| EXPECT_EQ(kUniform2FakeLocation,
|
| program->GetUniformFakeLocation(kUniform2Name));
|
| EXPECT_EQ(kUniform3FakeLocation,
|
| - program->GetUniformFakeLocation(kUniform3BadName));
|
| + program->GetUniformFakeLocation(kUniform3Name));
|
| // Check we can get uniform2 as "uniform2" even though the name is
|
| // "uniform2[0]"
|
| EXPECT_EQ(kUniform2FakeLocation,
|
| @@ -594,7 +618,7 @@ TEST_F(ProgramManagerWithShaderTest, GetUniformFakeLocation) {
|
| // Check we can get uniform3 as "uniform3[0]" even though we simulated GL
|
| // returning "uniform3"
|
| EXPECT_EQ(kUniform3FakeLocation,
|
| - program->GetUniformFakeLocation(kUniform3GoodName));
|
| + program->GetUniformFakeLocation(kUniform3NameWithArrayIndex));
|
| // Check that we can get the locations of the array elements > 1
|
| EXPECT_EQ(ProgramManager::MakeFakeLocation(kUniform2FakeLocation, 1),
|
| program->GetUniformFakeLocation("uniform2[1]"));
|
| @@ -653,15 +677,15 @@ TEST_F(ProgramManagerWithShaderTest, GLDriverReturnsGLUnderscoreUniform) {
|
| kUniform2FakeLocation,
|
| kUniform2RealLocation,
|
| kUniform2DesiredLocation,
|
| - kUniform2Name,
|
| + kUniform2NameWithArrayIndex,
|
| },
|
| - { kUniform3BadName,
|
| + { kUniform3Name,
|
| kUniform3Size,
|
| kUniform3Type,
|
| kUniform3FakeLocation,
|
| kUniform3RealLocation,
|
| kUniform3DesiredLocation,
|
| - kUniform3GoodName,
|
| + kUniform3NameWithArrayIndex,
|
| },
|
| };
|
| const size_t kNumUniforms = arraysize(kUniforms);
|
| @@ -698,7 +722,7 @@ TEST_F(ProgramManagerWithShaderTest, GLDriverReturnsGLUnderscoreUniform) {
|
| // as the "gl_" uniform we skipped.
|
| // +4u is to account for "gl_" and NULL terminator.
|
| program->GetProgramiv(GL_ACTIVE_UNIFORM_MAX_LENGTH, &value);
|
| - EXPECT_EQ(strlen(kUniform3BadName) + 4u, static_cast<size_t>(value));
|
| + EXPECT_EQ(strlen(kUniform3Name) + 4u, static_cast<size_t>(value));
|
| }
|
|
|
| // Test the bug comparing similar array names is fixed.
|
| @@ -772,27 +796,27 @@ TEST_F(ProgramManagerWithShaderTest, GLDriverReturnsWrongTypeInfo) {
|
| static GLenum kAttrib2GoodType = GL_FLOAT_MAT2;
|
| static GLenum kUniform2BadType = GL_FLOAT_VEC3;
|
| static GLenum kUniform2GoodType = GL_FLOAT_MAT3;
|
| - ShaderTranslator::VariableMap attrib_map;
|
| - ShaderTranslator::VariableMap uniform_map;
|
| - ShaderTranslator::VariableMap varying_map;
|
| - attrib_map[kAttrib1Name] = ShaderTranslatorInterface::VariableInfo(
|
| + AttributeMap attrib_map;
|
| + UniformMap uniform_map;
|
| + VaryingMap varying_map;
|
| + attrib_map[kAttrib1Name] = TestHelper::ConstructAttribute(
|
| kAttrib1Type, kAttrib1Size, kAttrib1Precision,
|
| kAttribStaticUse, kAttrib1Name);
|
| - attrib_map[kAttrib2Name] = ShaderTranslatorInterface::VariableInfo(
|
| + attrib_map[kAttrib2Name] = TestHelper::ConstructAttribute(
|
| kAttrib2GoodType, kAttrib2Size, kAttrib2Precision,
|
| kAttribStaticUse, kAttrib2Name);
|
| - attrib_map[kAttrib3Name] = ShaderTranslatorInterface::VariableInfo(
|
| + attrib_map[kAttrib3Name] = TestHelper::ConstructAttribute(
|
| kAttrib3Type, kAttrib3Size, kAttrib3Precision,
|
| kAttribStaticUse, kAttrib3Name);
|
| - uniform_map[kUniform1Name] = ShaderTranslatorInterface::VariableInfo(
|
| + uniform_map[kUniform1Name] = TestHelper::ConstructUniform(
|
| kUniform1Type, kUniform1Size, kUniform1Precision,
|
| kUniform1StaticUse, kUniform1Name);
|
| - uniform_map[kUniform2Name] = ShaderTranslatorInterface::VariableInfo(
|
| + uniform_map[kUniform2Name] = TestHelper::ConstructUniform(
|
| kUniform2GoodType, kUniform2Size, kUniform2Precision,
|
| kUniform2StaticUse, kUniform2Name);
|
| - uniform_map[kUniform3GoodName] = ShaderTranslatorInterface::VariableInfo(
|
| + uniform_map[kUniform3Name] = TestHelper::ConstructUniform(
|
| kUniform3Type, kUniform3Size, kUniform3Precision,
|
| - kUniform3StaticUse, kUniform3GoodName);
|
| + kUniform3StaticUse, kUniform3Name);
|
| const GLuint kVShaderClientId = 2001;
|
| const GLuint kFShaderClientId = 2002;
|
| const GLuint kVShaderServiceId = 3001;
|
| @@ -829,15 +853,15 @@ TEST_F(ProgramManagerWithShaderTest, GLDriverReturnsWrongTypeInfo) {
|
| kUniform2FakeLocation,
|
| kUniform2RealLocation,
|
| kUniform2DesiredLocation,
|
| - kUniform2Name,
|
| + kUniform2NameWithArrayIndex,
|
| },
|
| - { kUniform3BadName,
|
| + { kUniform3Name,
|
| kUniform3Size,
|
| kUniform3Type,
|
| kUniform3FakeLocation,
|
| kUniform3RealLocation,
|
| kUniform3DesiredLocation,
|
| - kUniform3GoodName,
|
| + kUniform3NameWithArrayIndex,
|
| },
|
| };
|
| const size_t kNumAttribs= arraysize(kAttribs);
|
| @@ -859,26 +883,41 @@ TEST_F(ProgramManagerWithShaderTest, GLDriverReturnsWrongTypeInfo) {
|
| const Program::VertexAttrib* attrib_info =
|
| program->GetAttribInfo(index);
|
| ASSERT_TRUE(attrib_info != NULL);
|
| - ShaderTranslator::VariableMap::const_iterator it = attrib_map.find(
|
| - attrib_info->name);
|
| + size_t pos = attrib_info->name.find_first_of("[.");
|
| + std::string top_name;
|
| + if (pos == std::string::npos)
|
| + top_name = attrib_info->name;
|
| + else
|
| + top_name = attrib_info->name.substr(0, pos);
|
| + AttributeMap::const_iterator it = attrib_map.find(top_name);
|
| ASSERT_TRUE(it != attrib_map.end());
|
| - EXPECT_EQ(it->first, attrib_info->name);
|
| - EXPECT_EQ(static_cast<GLenum>(it->second.type), attrib_info->type);
|
| - EXPECT_EQ(it->second.size, attrib_info->size);
|
| - EXPECT_EQ(it->second.name, attrib_info->name);
|
| + const sh::ShaderVariable* info;
|
| + std::string original_name;
|
| + EXPECT_TRUE(it->second.findInfoByMappedName(
|
| + attrib_info->name, &info, &original_name));
|
| + EXPECT_EQ(info->type, attrib_info->type);
|
| + EXPECT_EQ(static_cast<GLint>(info->arraySize), attrib_info->size);
|
| + EXPECT_EQ(original_name, attrib_info->name);
|
| }
|
| // Check Uniforms
|
| for (unsigned index = 0; index < kNumUniforms; ++index) {
|
| - const Program::UniformInfo* uniform_info =
|
| - program->GetUniformInfo(index);
|
| + const Program::UniformInfo* uniform_info = program->GetUniformInfo(index);
|
| ASSERT_TRUE(uniform_info != NULL);
|
| - ShaderTranslator::VariableMap::const_iterator it = uniform_map.find(
|
| - uniform_info->name);
|
| + size_t pos = uniform_info->name.find_first_of("[.");
|
| + std::string top_name;
|
| + if (pos == std::string::npos)
|
| + top_name = uniform_info->name;
|
| + else
|
| + top_name = uniform_info->name.substr(0, pos);
|
| + UniformMap::const_iterator it = uniform_map.find(top_name);
|
| ASSERT_TRUE(it != uniform_map.end());
|
| - EXPECT_EQ(it->first, uniform_info->name);
|
| - EXPECT_EQ(static_cast<GLenum>(it->second.type), uniform_info->type);
|
| - EXPECT_EQ(it->second.size, uniform_info->size);
|
| - EXPECT_EQ(it->second.name, uniform_info->name);
|
| + const sh::ShaderVariable* info;
|
| + std::string original_name;
|
| + EXPECT_TRUE(it->second.findInfoByMappedName(
|
| + uniform_info->name, &info, &original_name));
|
| + EXPECT_EQ(info->type, uniform_info->type);
|
| + EXPECT_EQ(static_cast<GLint>(info->arraySize), uniform_info->size);
|
| + EXPECT_EQ(original_name, uniform_info->name);
|
| }
|
| }
|
|
|
| @@ -1086,9 +1125,9 @@ TEST_F(ProgramManagerWithShaderTest, BindAttribLocationConflicts) {
|
| const GLuint kVShaderServiceId = 11;
|
| const GLuint kFShaderClientId = 2;
|
| const GLuint kFShaderServiceId = 12;
|
| - ShaderTranslator::VariableMap attrib_map;
|
| + AttributeMap attrib_map;
|
| for (uint32 ii = 0; ii < kNumAttribs; ++ii) {
|
| - attrib_map[kAttribs[ii].name] = ShaderTranslatorInterface::VariableInfo(
|
| + attrib_map[kAttribs[ii].name] = TestHelper::ConstructAttribute(
|
| kAttribs[ii].type,
|
| kAttribs[ii].size,
|
| SH_PRECISION_MEDIUMP,
|
| @@ -1106,15 +1145,15 @@ TEST_F(ProgramManagerWithShaderTest, BindAttribLocationConflicts) {
|
| TestHelper::SetShaderStates(
|
| gl_.get(), vshader, true, NULL, NULL, &attrib_map, NULL, NULL, NULL);
|
| // Check attrib infos got copied.
|
| - for (ShaderTranslator::VariableMap::const_iterator it = attrib_map.begin();
|
| + for (AttributeMap::const_iterator it = attrib_map.begin();
|
| it != attrib_map.end(); ++it) {
|
| - const Shader::VariableInfo* variable_info =
|
| + const sh::Attribute* variable_info =
|
| vshader->GetAttribInfo(it->first);
|
| ASSERT_TRUE(variable_info != NULL);
|
| EXPECT_EQ(it->second.type, variable_info->type);
|
| - EXPECT_EQ(it->second.size, variable_info->size);
|
| + EXPECT_EQ(it->second.arraySize, variable_info->arraySize);
|
| EXPECT_EQ(it->second.precision, variable_info->precision);
|
| - EXPECT_EQ(it->second.static_use, variable_info->static_use);
|
| + EXPECT_EQ(it->second.staticUse, variable_info->staticUse);
|
| EXPECT_EQ(it->second.name, variable_info->name);
|
| }
|
| TestHelper::SetShaderStates(
|
| @@ -1156,12 +1195,12 @@ TEST_F(ProgramManagerWithShaderTest, UniformsPrecisionMismatch) {
|
| const GLuint kFShaderClientId = 2;
|
| const GLuint kFShaderServiceId = 12;
|
|
|
| - ShaderTranslator::VariableMap vertex_uniform_map;
|
| - vertex_uniform_map["a"] = ShaderTranslator::VariableInfo(
|
| - 1, 3, SH_PRECISION_MEDIUMP, 1, "a");
|
| - ShaderTranslator::VariableMap frag_uniform_map;
|
| - frag_uniform_map["a"] = ShaderTranslator::VariableInfo(
|
| - 1, 3, SH_PRECISION_LOWP, 1, "a");
|
| + UniformMap vertex_uniform_map;
|
| + vertex_uniform_map["a"] = TestHelper::ConstructUniform(
|
| + GL_FLOAT, 3, GL_MEDIUM_FLOAT, true, "a");
|
| + UniformMap frag_uniform_map;
|
| + frag_uniform_map["a"] = TestHelper::ConstructUniform(
|
| + GL_FLOAT, 3, GL_LOW_FLOAT, true, "a");
|
|
|
| // Check we can create shader.
|
| Shader* vshader = shader_manager_.CreateShader(
|
| @@ -1198,9 +1237,9 @@ TEST_F(ProgramManagerWithShaderTest, UniformsPrecisionMismatch) {
|
| // shader, linking should fail.
|
| TEST_F(ProgramManagerWithShaderTest, VaryingTypeMismatch) {
|
| const VarInfo kVertexVarying =
|
| - { GL_FLOAT_VEC3, 1, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying };
|
| + { GL_FLOAT_VEC3, 1, GL_MEDIUM_FLOAT, true, "a", kVarVarying };
|
| const VarInfo kFragmentVarying =
|
| - { GL_FLOAT_VEC4, 1, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying };
|
| + { GL_FLOAT_VEC4, 1, GL_MEDIUM_FLOAT, true, "a", kVarVarying };
|
| Program* program = SetupShaderVariableTest(
|
| &kVertexVarying, 1, &kFragmentVarying, 1);
|
|
|
| @@ -1215,9 +1254,9 @@ TEST_F(ProgramManagerWithShaderTest, VaryingTypeMismatch) {
|
| // shader, linking should fail.
|
| TEST_F(ProgramManagerWithShaderTest, VaryingArraySizeMismatch) {
|
| const VarInfo kVertexVarying =
|
| - { GL_FLOAT, 2, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying };
|
| + { GL_FLOAT, 2, GL_MEDIUM_FLOAT, true, "a", kVarVarying };
|
| const VarInfo kFragmentVarying =
|
| - { GL_FLOAT, 3, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying };
|
| + { GL_FLOAT, 3, GL_MEDIUM_FLOAT, true, "a", kVarVarying };
|
| Program* program = SetupShaderVariableTest(
|
| &kVertexVarying, 1, &kFragmentVarying, 1);
|
|
|
| @@ -1232,9 +1271,9 @@ TEST_F(ProgramManagerWithShaderTest, VaryingArraySizeMismatch) {
|
| // shader, linking should succeed.
|
| TEST_F(ProgramManagerWithShaderTest, VaryingPrecisionMismatch) {
|
| const VarInfo kVertexVarying =
|
| - { GL_FLOAT, 2, SH_PRECISION_HIGHP, 1, "a", kVarVarying };
|
| + { GL_FLOAT, 2, GL_HIGH_FLOAT, true, "a", kVarVarying };
|
| const VarInfo kFragmentVarying =
|
| - { GL_FLOAT, 2, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying };
|
| + { GL_FLOAT, 2, GL_MEDIUM_FLOAT, true, "a", kVarVarying };
|
| Program* program = SetupShaderVariableTest(
|
| &kVertexVarying, 1, &kFragmentVarying, 1);
|
|
|
| @@ -1249,7 +1288,7 @@ TEST_F(ProgramManagerWithShaderTest, VaryingPrecisionMismatch) {
|
| // declared in vertex shader, link should fail.
|
| TEST_F(ProgramManagerWithShaderTest, VaryingMissing) {
|
| const VarInfo kFragmentVarying =
|
| - { GL_FLOAT, 3, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying };
|
| + { GL_FLOAT, 3, GL_MEDIUM_FLOAT, true, "a", kVarVarying };
|
| Program* program = SetupShaderVariableTest(
|
| NULL, 0, &kFragmentVarying, 1);
|
|
|
| @@ -1265,7 +1304,7 @@ TEST_F(ProgramManagerWithShaderTest, VaryingMissing) {
|
| // succeed.
|
| TEST_F(ProgramManagerWithShaderTest, InactiveVarying) {
|
| const VarInfo kFragmentVarying =
|
| - { GL_FLOAT, 3, SH_PRECISION_MEDIUMP, 0, "a", kVarVarying };
|
| + { GL_FLOAT, 3, GL_MEDIUM_FLOAT, false, "a", kVarVarying };
|
| Program* program = SetupShaderVariableTest(
|
| NULL, 0, &kFragmentVarying, 1);
|
|
|
| @@ -1281,9 +1320,9 @@ TEST_F(ProgramManagerWithShaderTest, InactiveVarying) {
|
| // failure.
|
| TEST_F(ProgramManagerWithShaderTest, AttribUniformNameConflict) {
|
| const VarInfo kVertexAttribute =
|
| - { GL_FLOAT_VEC4, 1, SH_PRECISION_MEDIUMP, 1, "a", kVarAttribute };
|
| + { GL_FLOAT_VEC4, 1, GL_MEDIUM_FLOAT, true, "a", kVarAttribute };
|
| const VarInfo kFragmentUniform =
|
| - { GL_FLOAT_VEC4, 1, SH_PRECISION_MEDIUMP, 1, "a", kVarUniform };
|
| + { GL_FLOAT_VEC4, 1, GL_MEDIUM_FLOAT, true, "a", kVarUniform };
|
| Program* program = SetupShaderVariableTest(
|
| &kVertexAttribute, 1, &kFragmentUniform, 1);
|
|
|
| @@ -1297,12 +1336,12 @@ TEST_F(ProgramManagerWithShaderTest, AttribUniformNameConflict) {
|
| // Varyings go over 8 rows.
|
| TEST_F(ProgramManagerWithShaderTest, TooManyVaryings) {
|
| const VarInfo kVertexVaryings[] = {
|
| - { GL_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying },
|
| - { GL_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying }
|
| + { GL_FLOAT_VEC4, 4, GL_MEDIUM_FLOAT, true, "a", kVarVarying },
|
| + { GL_FLOAT_VEC4, 5, GL_MEDIUM_FLOAT, true, "b", kVarVarying }
|
| };
|
| const VarInfo kFragmentVaryings[] = {
|
| - { GL_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying },
|
| - { GL_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying }
|
| + { GL_FLOAT_VEC4, 4, GL_MEDIUM_FLOAT, true, "a", kVarVarying },
|
| + { GL_FLOAT_VEC4, 5, GL_MEDIUM_FLOAT, true, "b", kVarVarying }
|
| };
|
| Program* program = SetupShaderVariableTest(
|
| kVertexVaryings, 2, kFragmentVaryings, 2);
|
| @@ -1315,12 +1354,12 @@ TEST_F(ProgramManagerWithShaderTest, TooManyVaryings) {
|
| // Varyings go over 8 rows but some are inactive
|
| TEST_F(ProgramManagerWithShaderTest, TooManyInactiveVaryings) {
|
| const VarInfo kVertexVaryings[] = {
|
| - { GL_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying },
|
| - { GL_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying }
|
| + { GL_FLOAT_VEC4, 4, GL_MEDIUM_FLOAT, true, "a", kVarVarying },
|
| + { GL_FLOAT_VEC4, 5, GL_MEDIUM_FLOAT, true, "b", kVarVarying }
|
| };
|
| const VarInfo kFragmentVaryings[] = {
|
| - { GL_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 0, "a", kVarVarying },
|
| - { GL_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying }
|
| + { GL_FLOAT_VEC4, 4, GL_MEDIUM_FLOAT, false, "a", kVarVarying },
|
| + { GL_FLOAT_VEC4, 5, GL_MEDIUM_FLOAT, true, "b", kVarVarying }
|
| };
|
| Program* program = SetupShaderVariableTest(
|
| kVertexVaryings, 2, kFragmentVaryings, 2);
|
| @@ -1334,12 +1373,12 @@ TEST_F(ProgramManagerWithShaderTest, TooManyInactiveVaryings) {
|
| // However, we still fail the check if kCountAll option is used.
|
| TEST_F(ProgramManagerWithShaderTest, CountAllVaryingsInPacking) {
|
| const VarInfo kVertexVaryings[] = {
|
| - { GL_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying },
|
| - { GL_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying }
|
| + { GL_FLOAT_VEC4, 4, GL_MEDIUM_FLOAT, true, "a", kVarVarying },
|
| + { GL_FLOAT_VEC4, 5, GL_MEDIUM_FLOAT, true, "b", kVarVarying }
|
| };
|
| const VarInfo kFragmentVaryings[] = {
|
| - { GL_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 0, "a", kVarVarying },
|
| - { GL_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying }
|
| + { GL_FLOAT_VEC4, 4, GL_MEDIUM_FLOAT, false, "a", kVarVarying },
|
| + { GL_FLOAT_VEC4, 5, GL_MEDIUM_FLOAT, true, "b", kVarVarying }
|
| };
|
| Program* program = SetupShaderVariableTest(
|
| kVertexVaryings, 2, kFragmentVaryings, 2);
|
| @@ -1397,15 +1436,15 @@ TEST_F(ProgramManagerWithShaderTest, ClearWithSamplerTypes) {
|
| kUniform2FakeLocation,
|
| kUniform2RealLocation,
|
| kUniform2DesiredLocation,
|
| - kUniform2Name,
|
| + kUniform2NameWithArrayIndex,
|
| },
|
| - { kUniform3BadName,
|
| + { kUniform3Name,
|
| kUniform3Size,
|
| kUniform3Type,
|
| kUniform3FakeLocation,
|
| kUniform3RealLocation,
|
| kUniform3DesiredLocation,
|
| - kUniform3GoodName,
|
| + kUniform3NameWithArrayIndex,
|
| },
|
| };
|
| const size_t kNumAttribs = arraysize(kAttribs);
|
| @@ -1447,7 +1486,7 @@ TEST_F(ProgramManagerWithShaderTest, BindUniformLocation) {
|
| EXPECT_TRUE(program->SetUniformLocationBinding(
|
| kUniform1Name, kUniform1DesiredLocation));
|
| EXPECT_TRUE(program->SetUniformLocationBinding(
|
| - kUniform3BadName, kUniform3DesiredLocation));
|
| + kUniform3Name, kUniform3DesiredLocation));
|
|
|
| static ProgramManagerWithShaderTest::AttribInfo kAttribs[] = {
|
| { kAttrib1Name, kAttrib1Size, kAttrib1Type, kAttrib1Location, },
|
| @@ -1469,15 +1508,15 @@ TEST_F(ProgramManagerWithShaderTest, BindUniformLocation) {
|
| kUniform2FakeLocation,
|
| kUniform2RealLocation,
|
| kUniform2DesiredLocation,
|
| - kUniform2Name,
|
| + kUniform2NameWithArrayIndex,
|
| },
|
| - { kUniform3BadName,
|
| + { kUniform3Name,
|
| kUniform3Size,
|
| kUniform3Type,
|
| kUniform3FakeLocation,
|
| kUniform3RealLocation,
|
| kUniform3DesiredLocation,
|
| - kUniform3GoodName,
|
| + kUniform3NameWithArrayIndex,
|
| },
|
| };
|
|
|
| @@ -1491,9 +1530,9 @@ TEST_F(ProgramManagerWithShaderTest, BindUniformLocation) {
|
| EXPECT_EQ(kUniform1DesiredLocation,
|
| program->GetUniformFakeLocation(kUniform1Name));
|
| EXPECT_EQ(kUniform3DesiredLocation,
|
| - program->GetUniformFakeLocation(kUniform3BadName));
|
| + program->GetUniformFakeLocation(kUniform3Name));
|
| EXPECT_EQ(kUniform3DesiredLocation,
|
| - program->GetUniformFakeLocation(kUniform3GoodName));
|
| + program->GetUniformFakeLocation(kUniform3NameWithArrayIndex));
|
| }
|
|
|
| class ProgramManagerWithCacheTest : public GpuServiceTest {
|
|
|