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/program_manager.h" | 5 #include "gpu/command_buffer/service/program_manager.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 204 static const GLenum kUniform3Type = GL_FLOAT_VEC3; | 204 static const GLenum kUniform3Type = GL_FLOAT_VEC3; |
| 205 static const GLint kInvalidUniformLocation = 30; | 205 static const GLint kInvalidUniformLocation = 30; |
| 206 static const GLint kBadUniformIndex = 1000; | 206 static const GLint kBadUniformIndex = 1000; |
| 207 | 207 |
| 208 static const size_t kNumAttribs; | 208 static const size_t kNumAttribs; |
| 209 static const size_t kNumUniforms; | 209 static const size_t kNumUniforms; |
| 210 | 210 |
| 211 protected: | 211 protected: |
| 212 typedef TestHelper::AttribInfo AttribInfo; | 212 typedef TestHelper::AttribInfo AttribInfo; |
| 213 typedef TestHelper::UniformInfo UniformInfo; | 213 typedef TestHelper::UniformInfo UniformInfo; |
| 214 | |
| 215 typedef enum { | |
| 216 kVarUniform, | |
| 217 kVarVarying, | |
| 218 kVarAttribute | |
| 219 } VarCategory; | |
| 220 | |
| 214 typedef struct { | 221 typedef struct { |
| 215 int type; | 222 int type; |
| 216 int size; | 223 int size; |
| 217 int precision; | 224 int precision; |
| 218 int static_use; | 225 int static_use; |
| 219 std::string name; | 226 std::string name; |
| 227 VarCategory category; | |
| 220 } VarInfo; | 228 } VarInfo; |
| 221 | 229 |
| 222 virtual void SetUp() { | 230 virtual void SetUp() { |
| 223 gl_.reset(new StrictMock<gfx::MockGLInterface>()); | 231 gl_.reset(new StrictMock<gfx::MockGLInterface>()); |
| 224 ::gfx::GLInterface::SetGLInterface(gl_.get()); | 232 ::gfx::GLInterface::SetGLInterface(gl_.get()); |
| 225 | 233 |
| 226 SetupDefaultShaderExpectations(); | 234 SetupDefaultShaderExpectations(); |
| 227 | 235 |
| 228 Shader* vertex_shader = shader_manager_.CreateShader( | 236 Shader* vertex_shader = shader_manager_.CreateShader( |
| 229 kVertexShaderClientId, kVertexShaderServiceId, GL_VERTEX_SHADER); | 237 kVertexShaderClientId, kVertexShaderServiceId, GL_VERTEX_SHADER); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 274 if (expected_link_status) { | 282 if (expected_link_status) { |
| 275 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, | 283 SetupShader(kAttribs, kNumAttribs, kUniforms, kNumUniforms, |
| 276 service_id); | 284 service_id); |
| 277 } | 285 } |
| 278 program->Link(NULL, NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); | 286 program->Link(NULL, NULL, NULL, NULL, base::Bind(&ShaderCacheCb)); |
| 279 GLint link_status; | 287 GLint link_status; |
| 280 program->GetProgramiv(GL_LINK_STATUS, &link_status); | 288 program->GetProgramiv(GL_LINK_STATUS, &link_status); |
| 281 return (static_cast<bool>(link_status) == expected_link_status); | 289 return (static_cast<bool>(link_status) == expected_link_status); |
| 282 } | 290 } |
| 283 | 291 |
| 284 Program* SetupVaryingsTest(const VarInfo* vertex_varyings, | 292 Program* SetupShaderVariableTest(const VarInfo* vertex_variables, |
|
Zhenyao Mo
2013/09/06 23:50:18
I could probably turn more tests to use this funct
| |
| 285 size_t vertex_varying_size, | 293 size_t vertex_variable_size, |
| 286 const VarInfo* fragment_varyings, | 294 const VarInfo* fragment_variables, |
| 287 size_t fragment_varying_size) { | 295 size_t fragment_variable_size) { |
| 288 // Set up shader | 296 // Set up shader |
| 289 const GLuint kVShaderClientId = 1; | 297 const GLuint kVShaderClientId = 1; |
| 290 const GLuint kVShaderServiceId = 11; | 298 const GLuint kVShaderServiceId = 11; |
| 291 const GLuint kFShaderClientId = 2; | 299 const GLuint kFShaderClientId = 2; |
| 292 const GLuint kFShaderServiceId = 12; | 300 const GLuint kFShaderServiceId = 12; |
| 293 | 301 |
| 294 MockShaderTranslator vertex_shader_translator; | 302 MockShaderTranslator vertex_shader_translator; |
| 295 ShaderTranslator::VariableMap vertex_attrib_map; | 303 ShaderTranslator::VariableMap vertex_attrib_map; |
| 296 ShaderTranslator::VariableMap vertex_uniform_map; | 304 ShaderTranslator::VariableMap vertex_uniform_map; |
| 297 ShaderTranslator::VariableMap vertex_varying_map; | 305 ShaderTranslator::VariableMap vertex_varying_map; |
| 298 for (size_t ii = 0; ii < vertex_varying_size; ++ii) { | 306 for (size_t ii = 0; ii < vertex_variable_size; ++ii) { |
| 299 vertex_varying_map[vertex_varyings[ii].name] = | 307 ShaderTranslator::VariableMap* map = NULL; |
| 300 ShaderTranslator::VariableInfo(vertex_varyings[ii].type, | 308 switch (vertex_variables[ii].category) { |
| 301 vertex_varyings[ii].size, | 309 case kVarAttribute: |
| 302 vertex_varyings[ii].precision, | 310 map = &vertex_attrib_map; |
| 303 vertex_varyings[ii].static_use, | 311 break; |
| 304 vertex_varyings[ii].name); | 312 case kVarUniform: |
| 313 map = &vertex_uniform_map; | |
| 314 break; | |
| 315 case kVarVarying: | |
| 316 map = &vertex_varying_map; | |
| 317 break; | |
| 318 default: | |
| 319 NOTREACHED(); | |
| 320 } | |
| 321 (*map)[vertex_variables[ii].name] = | |
| 322 ShaderTranslator::VariableInfo(vertex_variables[ii].type, | |
| 323 vertex_variables[ii].size, | |
| 324 vertex_variables[ii].precision, | |
| 325 vertex_variables[ii].static_use, | |
| 326 vertex_variables[ii].name); | |
| 305 } | 327 } |
| 306 ShaderTranslator::NameMap vertex_name_map; | 328 ShaderTranslator::NameMap vertex_name_map; |
| 307 EXPECT_CALL(vertex_shader_translator, attrib_map()) | 329 EXPECT_CALL(vertex_shader_translator, attrib_map()) |
| 308 .WillRepeatedly(ReturnRef(vertex_attrib_map)); | 330 .WillRepeatedly(ReturnRef(vertex_attrib_map)); |
| 309 EXPECT_CALL(vertex_shader_translator, uniform_map()) | 331 EXPECT_CALL(vertex_shader_translator, uniform_map()) |
| 310 .WillRepeatedly(ReturnRef(vertex_uniform_map)); | 332 .WillRepeatedly(ReturnRef(vertex_uniform_map)); |
| 311 EXPECT_CALL(vertex_shader_translator, varying_map()) | 333 EXPECT_CALL(vertex_shader_translator, varying_map()) |
| 312 .WillRepeatedly(ReturnRef(vertex_varying_map)); | 334 .WillRepeatedly(ReturnRef(vertex_varying_map)); |
| 313 EXPECT_CALL(vertex_shader_translator, name_map()) | 335 EXPECT_CALL(vertex_shader_translator, name_map()) |
| 314 .WillRepeatedly(ReturnRef(vertex_name_map)); | 336 .WillRepeatedly(ReturnRef(vertex_name_map)); |
| 315 | 337 |
| 316 MockShaderTranslator frag_shader_translator; | 338 MockShaderTranslator frag_shader_translator; |
| 317 ShaderTranslator::VariableMap frag_attrib_map; | 339 ShaderTranslator::VariableMap frag_attrib_map; |
| 318 ShaderTranslator::VariableMap frag_uniform_map; | 340 ShaderTranslator::VariableMap frag_uniform_map; |
| 319 ShaderTranslator::VariableMap frag_varying_map; | 341 ShaderTranslator::VariableMap frag_varying_map; |
| 320 for (size_t ii = 0; ii < fragment_varying_size; ++ii) { | 342 for (size_t ii = 0; ii < fragment_variable_size; ++ii) { |
| 321 frag_varying_map[fragment_varyings[ii].name] = | 343 ShaderTranslator::VariableMap* map; |
| 322 ShaderTranslator::VariableInfo(fragment_varyings[ii].type, | 344 switch (fragment_variables[ii].category) { |
| 323 fragment_varyings[ii].size, | 345 case kVarAttribute: |
| 324 fragment_varyings[ii].precision, | 346 map = &frag_attrib_map; |
| 325 fragment_varyings[ii].static_use, | 347 break; |
| 326 fragment_varyings[ii].name); | 348 case kVarUniform: |
| 349 map = &frag_uniform_map; | |
| 350 break; | |
| 351 case kVarVarying: | |
| 352 map = &frag_varying_map; | |
| 353 break; | |
| 354 default: | |
| 355 NOTREACHED(); | |
| 356 } | |
| 357 (*map)[fragment_variables[ii].name] = | |
| 358 ShaderTranslator::VariableInfo(fragment_variables[ii].type, | |
| 359 fragment_variables[ii].size, | |
| 360 fragment_variables[ii].precision, | |
| 361 fragment_variables[ii].static_use, | |
| 362 fragment_variables[ii].name); | |
| 327 } | 363 } |
| 328 ShaderTranslator::NameMap frag_name_map; | 364 ShaderTranslator::NameMap frag_name_map; |
| 329 EXPECT_CALL(frag_shader_translator, attrib_map()) | 365 EXPECT_CALL(frag_shader_translator, attrib_map()) |
| 330 .WillRepeatedly(ReturnRef(frag_attrib_map)); | 366 .WillRepeatedly(ReturnRef(frag_attrib_map)); |
| 331 EXPECT_CALL(frag_shader_translator, uniform_map()) | 367 EXPECT_CALL(frag_shader_translator, uniform_map()) |
| 332 .WillRepeatedly(ReturnRef(frag_uniform_map)); | 368 .WillRepeatedly(ReturnRef(frag_uniform_map)); |
| 333 EXPECT_CALL(frag_shader_translator, varying_map()) | 369 EXPECT_CALL(frag_shader_translator, varying_map()) |
| 334 .WillRepeatedly(ReturnRef(frag_varying_map)); | 370 .WillRepeatedly(ReturnRef(frag_varying_map)); |
| 335 EXPECT_CALL(frag_shader_translator, name_map()) | 371 EXPECT_CALL(frag_shader_translator, name_map()) |
| 336 .WillRepeatedly(ReturnRef(frag_name_map)); | 372 .WillRepeatedly(ReturnRef(frag_name_map)); |
| (...skipping 833 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1170 EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); | 1206 EXPECT_TRUE(program->AttachShader(&shader_manager_, fshader)); |
| 1171 | 1207 |
| 1172 EXPECT_TRUE(program->DetectUniformsMismatch()); | 1208 EXPECT_TRUE(program->DetectUniformsMismatch()); |
| 1173 EXPECT_TRUE(LinkAsExpected(program, false)); | 1209 EXPECT_TRUE(LinkAsExpected(program, false)); |
| 1174 } | 1210 } |
| 1175 | 1211 |
| 1176 // If a varying has different type in the vertex and fragment | 1212 // If a varying has different type in the vertex and fragment |
| 1177 // shader, linking should fail. | 1213 // shader, linking should fail. |
| 1178 TEST_F(ProgramManagerWithShaderTest, VaryingTypeMismatch) { | 1214 TEST_F(ProgramManagerWithShaderTest, VaryingTypeMismatch) { |
| 1179 const VarInfo kVertexVarying = | 1215 const VarInfo kVertexVarying = |
| 1180 { SH_FLOAT_VEC3, 1, SH_PRECISION_MEDIUMP, 1, "a" }; | 1216 { SH_FLOAT_VEC3, 1, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }; |
| 1181 const VarInfo kFragmentVarying = | 1217 const VarInfo kFragmentVarying = |
| 1182 { SH_FLOAT_VEC4, 1, SH_PRECISION_MEDIUMP, 1, "a" }; | 1218 { SH_FLOAT_VEC4, 1, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }; |
| 1183 Program* program = SetupVaryingsTest( | 1219 Program* program = SetupShaderVariableTest( |
| 1184 &kVertexVarying, 1, &kFragmentVarying, 1); | 1220 &kVertexVarying, 1, &kFragmentVarying, 1); |
| 1185 | 1221 |
| 1186 EXPECT_TRUE(program->DetectVaryingsMismatch()); | 1222 EXPECT_TRUE(program->DetectVaryingsMismatch()); |
| 1187 EXPECT_TRUE(LinkAsExpected(program, false)); | 1223 EXPECT_TRUE(LinkAsExpected(program, false)); |
| 1188 } | 1224 } |
| 1189 | 1225 |
| 1190 // If a varying has different array size in the vertex and fragment | 1226 // If a varying has different array size in the vertex and fragment |
| 1191 // shader, linking should fail. | 1227 // shader, linking should fail. |
| 1192 TEST_F(ProgramManagerWithShaderTest, VaryingArraySizeMismatch) { | 1228 TEST_F(ProgramManagerWithShaderTest, VaryingArraySizeMismatch) { |
| 1193 const VarInfo kVertexVarying = | 1229 const VarInfo kVertexVarying = |
| 1194 { SH_FLOAT, 2, SH_PRECISION_MEDIUMP, 1, "a" }; | 1230 { SH_FLOAT, 2, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }; |
| 1195 const VarInfo kFragmentVarying = | 1231 const VarInfo kFragmentVarying = |
| 1196 { SH_FLOAT, 3, SH_PRECISION_MEDIUMP, 1, "a" }; | 1232 { SH_FLOAT, 3, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }; |
| 1197 Program* program = SetupVaryingsTest( | 1233 Program* program = SetupShaderVariableTest( |
| 1198 &kVertexVarying, 1, &kFragmentVarying, 1); | 1234 &kVertexVarying, 1, &kFragmentVarying, 1); |
| 1199 | 1235 |
| 1200 EXPECT_TRUE(program->DetectVaryingsMismatch()); | 1236 EXPECT_TRUE(program->DetectVaryingsMismatch()); |
| 1201 EXPECT_TRUE(LinkAsExpected(program, false)); | 1237 EXPECT_TRUE(LinkAsExpected(program, false)); |
| 1202 } | 1238 } |
| 1203 | 1239 |
| 1204 // If a varying has different precision in the vertex and fragment | 1240 // If a varying has different precision in the vertex and fragment |
| 1205 // shader, linking should succeed. | 1241 // shader, linking should succeed. |
| 1206 TEST_F(ProgramManagerWithShaderTest, VaryingPrecisionMismatch) { | 1242 TEST_F(ProgramManagerWithShaderTest, VaryingPrecisionMismatch) { |
| 1207 const VarInfo kVertexVarying = | 1243 const VarInfo kVertexVarying = |
| 1208 { SH_FLOAT, 2, SH_PRECISION_HIGHP, 1, "a" }; | 1244 { SH_FLOAT, 2, SH_PRECISION_HIGHP, 1, "a", kVarVarying }; |
| 1209 const VarInfo kFragmentVarying = | 1245 const VarInfo kFragmentVarying = |
| 1210 { SH_FLOAT, 2, SH_PRECISION_MEDIUMP, 1, "a" }; | 1246 { SH_FLOAT, 2, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }; |
| 1211 Program* program = SetupVaryingsTest( | 1247 Program* program = SetupShaderVariableTest( |
| 1212 &kVertexVarying, 1, &kFragmentVarying, 1); | 1248 &kVertexVarying, 1, &kFragmentVarying, 1); |
| 1213 | 1249 |
| 1214 EXPECT_FALSE(program->DetectVaryingsMismatch()); | 1250 EXPECT_FALSE(program->DetectVaryingsMismatch()); |
| 1215 EXPECT_TRUE(LinkAsExpected(program, true)); | 1251 EXPECT_TRUE(LinkAsExpected(program, true)); |
| 1216 } | 1252 } |
| 1217 | 1253 |
| 1218 // If a varying is statically used in fragment shader but not | 1254 // If a varying is statically used in fragment shader but not |
| 1219 // declared in vertex shader, link should fail. | 1255 // declared in vertex shader, link should fail. |
| 1220 TEST_F(ProgramManagerWithShaderTest, VaryingMissing) { | 1256 TEST_F(ProgramManagerWithShaderTest, VaryingMissing) { |
| 1221 const VarInfo kFragmentVarying = | 1257 const VarInfo kFragmentVarying = |
| 1222 { SH_FLOAT, 3, SH_PRECISION_MEDIUMP, 1, "a" }; | 1258 { SH_FLOAT, 3, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }; |
| 1223 Program* program = SetupVaryingsTest( | 1259 Program* program = SetupShaderVariableTest( |
| 1224 NULL, 0, &kFragmentVarying, 1); | 1260 NULL, 0, &kFragmentVarying, 1); |
| 1225 | 1261 |
| 1226 EXPECT_TRUE(program->DetectVaryingsMismatch()); | 1262 EXPECT_TRUE(program->DetectVaryingsMismatch()); |
| 1227 EXPECT_TRUE(LinkAsExpected(program, false)); | 1263 EXPECT_TRUE(LinkAsExpected(program, false)); |
| 1228 } | 1264 } |
| 1229 | 1265 |
| 1230 // If a varying is declared but not statically used in fragment | 1266 // If a varying is declared but not statically used in fragment |
| 1231 // shader, even if it's not declared in vertex shader, link should | 1267 // shader, even if it's not declared in vertex shader, link should |
| 1232 // succeed. | 1268 // succeed. |
| 1233 TEST_F(ProgramManagerWithShaderTest, InactiveVarying) { | 1269 TEST_F(ProgramManagerWithShaderTest, InactiveVarying) { |
| 1234 const VarInfo kFragmentVarying = | 1270 const VarInfo kFragmentVarying = |
| 1235 { SH_FLOAT, 3, SH_PRECISION_MEDIUMP, 0, "a" }; | 1271 { SH_FLOAT, 3, SH_PRECISION_MEDIUMP, 0, "a", kVarVarying }; |
| 1236 Program* program = SetupVaryingsTest( | 1272 Program* program = SetupShaderVariableTest( |
| 1237 NULL, 0, &kFragmentVarying, 1); | 1273 NULL, 0, &kFragmentVarying, 1); |
| 1238 | 1274 |
| 1239 EXPECT_FALSE(program->DetectVaryingsMismatch()); | 1275 EXPECT_FALSE(program->DetectVaryingsMismatch()); |
| 1240 EXPECT_TRUE(LinkAsExpected(program, true)); | 1276 EXPECT_TRUE(LinkAsExpected(program, true)); |
| 1241 } | 1277 } |
| 1242 | 1278 |
| 1279 // Uniforms and attributes are both global variables, thus sharing | |
| 1280 // the same namespace. Any name conflicts should cause link | |
| 1281 // failure. | |
| 1282 TEST_F(ProgramManagerWithShaderTest, AttribUniformNameConflict) { | |
| 1283 const VarInfo kVertexAttribute = | |
| 1284 { SH_FLOAT_VEC4, 1, SH_PRECISION_MEDIUMP, 1, "a", kVarAttribute }; | |
| 1285 const VarInfo kFragmentUniform = | |
| 1286 { SH_FLOAT_VEC4, 1, SH_PRECISION_MEDIUMP, 1, "a", kVarUniform }; | |
| 1287 Program* program = SetupShaderVariableTest( | |
| 1288 &kVertexAttribute, 1, &kFragmentUniform, 1); | |
| 1289 | |
| 1290 EXPECT_TRUE(program->DetectGlobalNameConflicts()); | |
| 1291 EXPECT_TRUE(LinkAsExpected(program, false)); | |
| 1292 } | |
| 1293 | |
| 1243 // Varyings go over 8 rows. | 1294 // Varyings go over 8 rows. |
| 1244 TEST_F(ProgramManagerWithShaderTest, TooManyVaryings) { | 1295 TEST_F(ProgramManagerWithShaderTest, TooManyVaryings) { |
| 1245 const VarInfo kVertexVaryings[] = { | 1296 const VarInfo kVertexVaryings[] = { |
| 1246 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a" }, | 1297 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, |
| 1247 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b" } | 1298 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
| 1248 }; | 1299 }; |
| 1249 const VarInfo kFragmentVaryings[] = { | 1300 const VarInfo kFragmentVaryings[] = { |
| 1250 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a" }, | 1301 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, |
| 1251 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b" } | 1302 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
| 1252 }; | 1303 }; |
| 1253 Program* program = SetupVaryingsTest( | 1304 Program* program = SetupShaderVariableTest( |
| 1254 kVertexVaryings, 2, kFragmentVaryings, 2); | 1305 kVertexVaryings, 2, kFragmentVaryings, 2); |
| 1255 | 1306 |
| 1256 EXPECT_FALSE(program->CheckVaryingsPacking()); | 1307 EXPECT_FALSE(program->CheckVaryingsPacking()); |
| 1257 EXPECT_TRUE(LinkAsExpected(program, false)); | 1308 EXPECT_TRUE(LinkAsExpected(program, false)); |
| 1258 } | 1309 } |
| 1259 | 1310 |
| 1260 // Varyings go over 8 rows but some are inactive | 1311 // Varyings go over 8 rows but some are inactive |
| 1261 TEST_F(ProgramManagerWithShaderTest, TooManyInactiveVaryings) { | 1312 TEST_F(ProgramManagerWithShaderTest, TooManyInactiveVaryings) { |
| 1262 const VarInfo kVertexVaryings[] = { | 1313 const VarInfo kVertexVaryings[] = { |
| 1263 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a" }, | 1314 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 1, "a", kVarVarying }, |
| 1264 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b" } | 1315 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
| 1265 }; | 1316 }; |
| 1266 const VarInfo kFragmentVaryings[] = { | 1317 const VarInfo kFragmentVaryings[] = { |
| 1267 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 0, "a" }, | 1318 { SH_FLOAT_VEC4, 4, SH_PRECISION_MEDIUMP, 0, "a", kVarVarying }, |
| 1268 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b" } | 1319 { SH_FLOAT_VEC4, 5, SH_PRECISION_MEDIUMP, 1, "b", kVarVarying } |
| 1269 }; | 1320 }; |
| 1270 Program* program = SetupVaryingsTest( | 1321 Program* program = SetupShaderVariableTest( |
| 1271 kVertexVaryings, 2, kFragmentVaryings, 2); | 1322 kVertexVaryings, 2, kFragmentVaryings, 2); |
| 1272 | 1323 |
| 1273 EXPECT_TRUE(program->CheckVaryingsPacking()); | 1324 EXPECT_TRUE(program->CheckVaryingsPacking()); |
| 1274 EXPECT_TRUE(LinkAsExpected(program, true)); | 1325 EXPECT_TRUE(LinkAsExpected(program, true)); |
| 1275 } | 1326 } |
| 1276 | 1327 |
| 1277 TEST_F(ProgramManagerWithShaderTest, ClearWithSamplerTypes) { | 1328 TEST_F(ProgramManagerWithShaderTest, ClearWithSamplerTypes) { |
| 1278 const GLuint kVShaderClientId = 2001; | 1329 const GLuint kVShaderClientId = 2001; |
| 1279 const GLuint kFShaderClientId = 2002; | 1330 const GLuint kFShaderClientId = 2002; |
| 1280 const GLuint kVShaderServiceId = 3001; | 1331 const GLuint kVShaderServiceId = 3001; |
| (...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1647 SetExpectationsForProgramLoad(ProgramCache::PROGRAM_LOAD_SUCCESS); | 1698 SetExpectationsForProgramLoad(ProgramCache::PROGRAM_LOAD_SUCCESS); |
| 1648 SetExpectationsForNotCachingProgram(); | 1699 SetExpectationsForNotCachingProgram(); |
| 1649 SetExpectationsForProgramLoadSuccess(); | 1700 SetExpectationsForProgramLoadSuccess(); |
| 1650 | 1701 |
| 1651 EXPECT_TRUE(program_->Link(NULL, NULL, NULL, NULL, | 1702 EXPECT_TRUE(program_->Link(NULL, NULL, NULL, NULL, |
| 1652 base::Bind(&ShaderCacheCb))); | 1703 base::Bind(&ShaderCacheCb))); |
| 1653 } | 1704 } |
| 1654 | 1705 |
| 1655 } // namespace gles2 | 1706 } // namespace gles2 |
| 1656 } // namespace gpu | 1707 } // namespace gpu |
| OLD | NEW |