summaryrefslogtreecommitdiffstats
path: root/gpu/command_buffer/service/shader_manager_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gpu/command_buffer/service/shader_manager_unittest.cc')
-rw-r--r--gpu/command_buffer/service/shader_manager_unittest.cc36
1 files changed, 30 insertions, 6 deletions
diff --git a/gpu/command_buffer/service/shader_manager_unittest.cc b/gpu/command_buffer/service/shader_manager_unittest.cc
index c125cfe..93471ec 100644
--- a/gpu/command_buffer/service/shader_manager_unittest.cc
+++ b/gpu/command_buffer/service/shader_manager_unittest.cc
@@ -126,6 +126,11 @@ TEST_F(ShaderManagerTest, DoCompile) {
const GLenum kVarying1Precision = GL_HIGH_FLOAT;
const bool kVarying1StaticUse = false;
const char* kVarying1Name = "varying1";
+ const GLenum kOutputVariable1Type = GL_FLOAT_VEC4;
+ const GLint kOutputVariable1Size = 4;
+ const GLenum kOutputVariable1Precision = GL_MEDIUM_FLOAT;
+ const char* kOutputVariable1Name = "gl_FragColor";
+ const bool kOutputVariable1StaticUse = true;
// Check we can create shader.
Shader* shader1 = manager_.CreateShader(
@@ -187,10 +192,13 @@ TEST_F(ShaderManagerTest, DoCompile) {
varying_map[kVarying1Name] = TestHelper::ConstructVarying(
kVarying1Type, kVarying1Size, kVarying1Precision,
kVarying1StaticUse, kVarying1Name);
-
+ OutputVariableList output_variable_list;
+ output_variable_list.push_back(TestHelper::ConstructOutputVariable(
+ kOutputVariable1Type, kOutputVariable1Size, kOutputVariable1Precision,
+ kOutputVariable1StaticUse, kOutputVariable1Name));
TestHelper::SetShaderStates(
- gl_.get(), shader1, true, &kLog, &kTranslatedSource, NULL,
- &attrib_map, &uniform_map, &varying_map, NULL, NULL);
+ gl_.get(), shader1, true, &kLog, &kTranslatedSource, nullptr, &attrib_map,
+ &uniform_map, &varying_map, nullptr, &output_variable_list, nullptr);
EXPECT_TRUE(shader1->valid());
// When compilation succeeds, no log is recorded.
EXPECT_STREQ("", shader1->log_info().c_str());
@@ -233,17 +241,33 @@ TEST_F(ShaderManagerTest, DoCompile) {
EXPECT_EQ(it->second.staticUse, variable_info->staticUse);
EXPECT_STREQ(it->second.name.c_str(), variable_info->name.c_str());
}
+ // Check output variable infos got copied.
+ EXPECT_EQ(output_variable_list.size(),
+ shader1->output_variable_list().size());
+ for (auto it = output_variable_list.begin(); it != output_variable_list.end();
+ ++it) {
+ const sh::OutputVariable* variable_info =
+ shader1->GetOutputVariableInfo(it->mappedName);
+ ASSERT_TRUE(variable_info != nullptr);
+ EXPECT_EQ(it->type, variable_info->type);
+ EXPECT_EQ(it->arraySize, variable_info->arraySize);
+ EXPECT_EQ(it->precision, variable_info->precision);
+ EXPECT_EQ(it->staticUse, variable_info->staticUse);
+ EXPECT_STREQ(it->name.c_str(), variable_info->name.c_str());
+ }
// Compile failure case.
- TestHelper::SetShaderStates(
- gl_.get(), shader1, false, &kLog, &kTranslatedSource, NULL,
- &attrib_map, &uniform_map, &varying_map, NULL, NULL);
+ TestHelper::SetShaderStates(gl_.get(), shader1, false, &kLog,
+ &kTranslatedSource, nullptr, &attrib_map,
+ &uniform_map, &varying_map, nullptr,
+ &output_variable_list, nullptr);
EXPECT_FALSE(shader1->valid());
EXPECT_STREQ(kLog.c_str(), shader1->log_info().c_str());
EXPECT_STREQ("", shader1->translated_source().c_str());
EXPECT_TRUE(shader1->attrib_map().empty());
EXPECT_TRUE(shader1->uniform_map().empty());
EXPECT_TRUE(shader1->varying_map().empty());
+ EXPECT_TRUE(shader1->output_variable_list().empty());
}
TEST_F(ShaderManagerTest, ShaderInfoUseCount) {