Chromium Code Reviews| 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/shader_manager.h" | 5 #include "gpu/command_buffer/service/shader_manager.h" |
| 6 | 6 |
| 7 #include "gpu/command_buffer/service/gpu_service_test.h" | 7 #include "gpu/command_buffer/service/gpu_service_test.h" |
| 8 #include "gpu/command_buffer/service/mocks.h" | 8 #include "gpu/command_buffer/service/mocks.h" |
| 9 #include "gpu/command_buffer/service/test_helper.h" | 9 #include "gpu/command_buffer/service/test_helper.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 189 VaryingMap varying_map; | 189 VaryingMap varying_map; |
| 190 varying_map[kVarying1Name] = TestHelper::ConstructVarying( | 190 varying_map[kVarying1Name] = TestHelper::ConstructVarying( |
| 191 kVarying1Type, kVarying1Size, kVarying1Precision, | 191 kVarying1Type, kVarying1Size, kVarying1Precision, |
| 192 kVarying1StaticUse, kVarying1Name); | 192 kVarying1StaticUse, kVarying1Name); |
| 193 OutputVariableList output_variable_list; | 193 OutputVariableList output_variable_list; |
| 194 output_variable_list.push_back(TestHelper::ConstructOutputVariable( | 194 output_variable_list.push_back(TestHelper::ConstructOutputVariable( |
| 195 kOutputVariable1Type, kOutputVariable1Size, kOutputVariable1Precision, | 195 kOutputVariable1Type, kOutputVariable1Size, kOutputVariable1Precision, |
| 196 kOutputVariable1StaticUse, kOutputVariable1Name)); | 196 kOutputVariable1StaticUse, kOutputVariable1Name)); |
| 197 TestHelper::SetShaderStates( | 197 TestHelper::SetShaderStates( |
| 198 gl_.get(), shader1, true, &kLog, &kTranslatedSource, nullptr, &attrib_map, | 198 gl_.get(), shader1, true, &kLog, &kTranslatedSource, nullptr, &attrib_map, |
| 199 &uniform_map, &varying_map, nullptr, &output_variable_list, nullptr); | 199 &uniform_map, &varying_map, nullptr, &output_variable_list); |
| 200 EXPECT_TRUE(shader1->valid()); | 200 EXPECT_TRUE(shader1->valid()); |
| 201 // When compilation succeeds, no log is recorded. | 201 // When compilation succeeds, no log is recorded. |
| 202 EXPECT_STREQ("", shader1->log_info().c_str()); | 202 EXPECT_STREQ("", shader1->log_info().c_str()); |
| 203 EXPECT_STREQ(kClient1Source, shader1->last_compiled_source().c_str()); | 203 EXPECT_STREQ(kClient1Source, shader1->last_compiled_source().c_str()); |
| 204 EXPECT_STREQ(kTranslatedSource.c_str(), shader1->translated_source().c_str()); | 204 EXPECT_STREQ(kTranslatedSource.c_str(), shader1->translated_source().c_str()); |
| 205 | 205 |
| 206 // Check varying infos got copied. | 206 // Check varying infos got copied. |
| 207 EXPECT_EQ(attrib_map.size(), shader1->attrib_map().size()); | 207 EXPECT_EQ(attrib_map.size(), shader1->attrib_map().size()); |
| 208 for (AttributeMap::const_iterator it = attrib_map.begin(); | 208 for (AttributeMap::const_iterator it = attrib_map.begin(); |
| 209 it != attrib_map.end(); ++it) { | 209 it != attrib_map.end(); ++it) { |
| 210 const sh::Attribute* variable_info = shader1->GetAttribInfo(it->first); | 210 const sh::Attribute* variable_info = shader1->GetAttribInfo(it->first); |
| 211 ASSERT_TRUE(variable_info != NULL); | 211 ASSERT_TRUE(variable_info != NULL); |
| 212 EXPECT_EQ(it->second.type, variable_info->type); | 212 EXPECT_EQ(it->second.type, variable_info->type); |
| 213 EXPECT_EQ(it->second.arraySize, variable_info->arraySize); | 213 EXPECT_EQ(it->second.arraySize, variable_info->arraySize); |
| 214 EXPECT_EQ(it->second.precision, variable_info->precision); | 214 EXPECT_EQ(it->second.precision, variable_info->precision); |
| 215 EXPECT_EQ(it->second.staticUse, variable_info->staticUse); | 215 EXPECT_EQ(it->second.staticUse, variable_info->staticUse); |
| 216 EXPECT_STREQ(it->second.name.c_str(), variable_info->name.c_str()); | 216 EXPECT_STREQ(it->second.name.c_str(), variable_info->name.c_str()); |
| 217 EXPECT_STREQ(it->second.name.c_str(), | |
| 218 shader1->GetOriginalNameFromHashedName(it->first)->c_str()); | |
| 217 } | 219 } |
| 218 // Check uniform infos got copied. | 220 // Check uniform infos got copied. |
| 219 EXPECT_EQ(uniform_map.size(), shader1->uniform_map().size()); | 221 EXPECT_EQ(uniform_map.size(), shader1->uniform_map().size()); |
| 220 for (UniformMap::const_iterator it = uniform_map.begin(); | 222 for (UniformMap::const_iterator it = uniform_map.begin(); |
| 221 it != uniform_map.end(); ++it) { | 223 it != uniform_map.end(); ++it) { |
| 222 const sh::Uniform* variable_info = shader1->GetUniformInfo(it->first); | 224 const sh::Uniform* variable_info = shader1->GetUniformInfo(it->first); |
| 223 ASSERT_TRUE(variable_info != NULL); | 225 ASSERT_TRUE(variable_info != NULL); |
| 224 EXPECT_EQ(it->second.type, variable_info->type); | 226 EXPECT_EQ(it->second.type, variable_info->type); |
| 225 EXPECT_EQ(it->second.arraySize, variable_info->arraySize); | 227 EXPECT_EQ(it->second.arraySize, variable_info->arraySize); |
| 226 EXPECT_EQ(it->second.precision, variable_info->precision); | 228 EXPECT_EQ(it->second.precision, variable_info->precision); |
| 227 EXPECT_EQ(it->second.staticUse, variable_info->staticUse); | 229 EXPECT_EQ(it->second.staticUse, variable_info->staticUse); |
| 228 EXPECT_STREQ(it->second.name.c_str(), variable_info->name.c_str()); | 230 EXPECT_STREQ(it->second.name.c_str(), variable_info->name.c_str()); |
| 231 EXPECT_STREQ(it->second.name.c_str(), | |
| 232 shader1->GetOriginalNameFromHashedName(it->first)->c_str()); | |
| 229 } | 233 } |
| 230 // Check varying infos got copied. | 234 // Check varying infos got copied. |
| 231 EXPECT_EQ(varying_map.size(), shader1->varying_map().size()); | 235 EXPECT_EQ(varying_map.size(), shader1->varying_map().size()); |
| 232 for (VaryingMap::const_iterator it = varying_map.begin(); | 236 for (VaryingMap::const_iterator it = varying_map.begin(); |
| 233 it != varying_map.end(); ++it) { | 237 it != varying_map.end(); ++it) { |
| 234 const sh::Varying* variable_info = shader1->GetVaryingInfo(it->first); | 238 const sh::Varying* variable_info = shader1->GetVaryingInfo(it->first); |
| 235 ASSERT_TRUE(variable_info != NULL); | 239 ASSERT_TRUE(variable_info != NULL); |
| 236 EXPECT_EQ(it->second.type, variable_info->type); | 240 EXPECT_EQ(it->second.type, variable_info->type); |
| 237 EXPECT_EQ(it->second.arraySize, variable_info->arraySize); | 241 EXPECT_EQ(it->second.arraySize, variable_info->arraySize); |
| 238 EXPECT_EQ(it->second.precision, variable_info->precision); | 242 EXPECT_EQ(it->second.precision, variable_info->precision); |
| 239 EXPECT_EQ(it->second.staticUse, variable_info->staticUse); | 243 EXPECT_EQ(it->second.staticUse, variable_info->staticUse); |
| 240 EXPECT_STREQ(it->second.name.c_str(), variable_info->name.c_str()); | 244 EXPECT_STREQ(it->second.name.c_str(), variable_info->name.c_str()); |
| 245 EXPECT_STREQ(it->second.name.c_str(), | |
| 246 shader1->GetOriginalNameFromHashedName(it->first)->c_str()); | |
| 241 } | 247 } |
| 248 // TODO(kainino): Check interface block infos got copied. | |
|
Ken Russell (switch to Gerrit)
2017/05/03 22:52:48
What's the plan to address this TODO?
Kai Ninomiya
2017/05/03 23:02:34
I didn't have much of a plan except "not now becau
Ken Russell (switch to Gerrit)
2017/05/03 23:10:02
Could you please do this in a follow-on CL? It wil
| |
| 242 // Check output variable infos got copied. | 249 // Check output variable infos got copied. |
| 243 EXPECT_EQ(output_variable_list.size(), | 250 EXPECT_EQ(output_variable_list.size(), |
| 244 shader1->output_variable_list().size()); | 251 shader1->output_variable_list().size()); |
| 245 for (auto it = output_variable_list.begin(); it != output_variable_list.end(); | 252 for (auto it = output_variable_list.begin(); it != output_variable_list.end(); |
| 246 ++it) { | 253 ++it) { |
| 247 const sh::OutputVariable* variable_info = | 254 const sh::OutputVariable* variable_info = |
| 248 shader1->GetOutputVariableInfo(it->mappedName); | 255 shader1->GetOutputVariableInfo(it->mappedName); |
| 249 ASSERT_TRUE(variable_info != nullptr); | 256 ASSERT_TRUE(variable_info != nullptr); |
| 250 EXPECT_EQ(it->type, variable_info->type); | 257 EXPECT_EQ(it->type, variable_info->type); |
| 251 EXPECT_EQ(it->arraySize, variable_info->arraySize); | 258 EXPECT_EQ(it->arraySize, variable_info->arraySize); |
| 252 EXPECT_EQ(it->precision, variable_info->precision); | 259 EXPECT_EQ(it->precision, variable_info->precision); |
| 253 EXPECT_EQ(it->staticUse, variable_info->staticUse); | 260 EXPECT_EQ(it->staticUse, variable_info->staticUse); |
| 254 EXPECT_STREQ(it->name.c_str(), variable_info->name.c_str()); | 261 EXPECT_STREQ(it->name.c_str(), variable_info->name.c_str()); |
| 262 EXPECT_STREQ( | |
| 263 it->name.c_str(), | |
| 264 shader1->GetOriginalNameFromHashedName(it->mappedName)->c_str()); | |
| 255 } | 265 } |
| 256 | 266 |
| 257 // Compile failure case. | 267 // Compile failure case. |
| 258 TestHelper::SetShaderStates(gl_.get(), shader1, false, &kLog, | 268 TestHelper::SetShaderStates( |
| 259 &kTranslatedSource, nullptr, &attrib_map, | 269 gl_.get(), shader1, false, &kLog, &kTranslatedSource, nullptr, |
| 260 &uniform_map, &varying_map, nullptr, | 270 &attrib_map, &uniform_map, &varying_map, nullptr, &output_variable_list); |
| 261 &output_variable_list, nullptr); | |
| 262 EXPECT_FALSE(shader1->valid()); | 271 EXPECT_FALSE(shader1->valid()); |
| 263 EXPECT_STREQ(kLog.c_str(), shader1->log_info().c_str()); | 272 EXPECT_STREQ(kLog.c_str(), shader1->log_info().c_str()); |
| 264 EXPECT_STREQ("", shader1->translated_source().c_str()); | 273 EXPECT_STREQ("", shader1->translated_source().c_str()); |
| 265 EXPECT_TRUE(shader1->attrib_map().empty()); | 274 EXPECT_TRUE(shader1->attrib_map().empty()); |
| 266 EXPECT_TRUE(shader1->uniform_map().empty()); | 275 EXPECT_TRUE(shader1->uniform_map().empty()); |
| 267 EXPECT_TRUE(shader1->varying_map().empty()); | 276 EXPECT_TRUE(shader1->varying_map().empty()); |
| 268 EXPECT_TRUE(shader1->output_variable_list().empty()); | 277 EXPECT_TRUE(shader1->output_variable_list().empty()); |
| 269 } | 278 } |
| 270 | 279 |
| 271 TEST_F(ShaderManagerTest, ShaderInfoUseCount) { | 280 TEST_F(ShaderManagerTest, ShaderInfoUseCount) { |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 312 EXPECT_CALL(*gl_, DeleteShader(kService1Id)) | 321 EXPECT_CALL(*gl_, DeleteShader(kService1Id)) |
| 313 .Times(1) | 322 .Times(1) |
| 314 .RetiresOnSaturation(); | 323 .RetiresOnSaturation(); |
| 315 manager_.Delete(shader1); // this should delete the shader. | 324 manager_.Delete(shader1); // this should delete the shader. |
| 316 shader2 = manager_.GetShader(kClient1Id); | 325 shader2 = manager_.GetShader(kClient1Id); |
| 317 EXPECT_TRUE(shader2 == NULL); | 326 EXPECT_TRUE(shader2 == NULL); |
| 318 } | 327 } |
| 319 | 328 |
| 320 } // namespace gles2 | 329 } // namespace gles2 |
| 321 } // namespace gpu | 330 } // namespace gpu |
| OLD | NEW |