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 <GLES2/gl2.h> | 5 #include <GLES2/gl2.h> |
6 | 6 |
7 #include "gpu/command_buffer/service/shader_translator.h" | 7 #include "gpu/command_buffer/service/shader_translator.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 #include "ui/gl/gl_version_info.h" | 9 #include "ui/gl/gl_version_info.h" |
10 | 10 |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 " gl_Position = vec4(1.0);\n" | 91 " gl_Position = vec4(1.0);\n" |
92 "}"; | 92 "}"; |
93 | 93 |
94 // A valid shader should be successfully translated. | 94 // A valid shader should be successfully translated. |
95 std::string info_log, translated_source; | 95 std::string info_log, translated_source; |
96 int shader_version; | 96 int shader_version; |
97 AttributeMap attrib_map; | 97 AttributeMap attrib_map; |
98 UniformMap uniform_map; | 98 UniformMap uniform_map; |
99 VaryingMap varying_map; | 99 VaryingMap varying_map; |
100 InterfaceBlockMap interface_block_map; | 100 InterfaceBlockMap interface_block_map; |
| 101 OutputVariableList output_variable_list; |
101 NameMap name_map; | 102 NameMap name_map; |
102 EXPECT_TRUE(vertex_translator_->Translate(shader, | 103 EXPECT_TRUE(vertex_translator_->Translate( |
103 &info_log, | 104 shader, &info_log, &translated_source, &shader_version, &attrib_map, |
104 &translated_source, | 105 &uniform_map, &varying_map, &interface_block_map, &output_variable_list, |
105 &shader_version, | 106 &name_map)); |
106 &attrib_map, | 107 |
107 &uniform_map, | |
108 &varying_map, | |
109 &interface_block_map, | |
110 &name_map)); | |
111 // Info log must be NULL. | 108 // Info log must be NULL. |
112 EXPECT_TRUE(info_log.empty()); | 109 EXPECT_TRUE(info_log.empty()); |
113 // Translated shader must be valid and non-empty. | 110 // Translated shader must be valid and non-empty. |
114 ASSERT_FALSE(translated_source.empty()); | 111 ASSERT_FALSE(translated_source.empty()); |
115 // There should be no attributes, uniforms, and only one built-in | 112 // There should be no attributes, uniforms, and only one built-in |
116 // varying: gl_Position. | 113 // varying: gl_Position. |
117 EXPECT_TRUE(attrib_map.empty()); | 114 EXPECT_TRUE(attrib_map.empty()); |
118 EXPECT_TRUE(uniform_map.empty()); | 115 EXPECT_TRUE(uniform_map.empty()); |
119 EXPECT_TRUE(interface_block_map.empty()); | 116 EXPECT_TRUE(interface_block_map.empty()); |
120 EXPECT_EQ(1u, varying_map.size()); | 117 EXPECT_EQ(1u, varying_map.size()); |
| 118 EXPECT_TRUE(output_variable_list.empty()); |
121 // There should be no name mapping. | 119 // There should be no name mapping. |
122 EXPECT_TRUE(name_map.empty()); | 120 EXPECT_TRUE(name_map.empty()); |
123 } | 121 } |
124 | 122 |
125 TEST_F(ShaderTranslatorTest, InvalidVertexShader) { | 123 TEST_F(ShaderTranslatorTest, InvalidVertexShader) { |
126 const char* bad_shader = "foo-bar"; | 124 const char* bad_shader = "foo-bar"; |
127 const char* good_shader = | 125 const char* good_shader = |
128 "void main() {\n" | 126 "void main() {\n" |
129 " gl_Position = vec4(1.0);\n" | 127 " gl_Position = vec4(1.0);\n" |
130 "}"; | 128 "}"; |
131 | 129 |
132 // An invalid shader should fail. | 130 // An invalid shader should fail. |
133 std::string info_log, translated_source; | 131 std::string info_log, translated_source; |
134 int shader_version; | 132 int shader_version; |
135 AttributeMap attrib_map; | 133 AttributeMap attrib_map; |
136 UniformMap uniform_map; | 134 UniformMap uniform_map; |
137 VaryingMap varying_map; | 135 VaryingMap varying_map; |
138 InterfaceBlockMap interface_block_map; | 136 InterfaceBlockMap interface_block_map; |
| 137 OutputVariableList output_variable_list; |
139 NameMap name_map; | 138 NameMap name_map; |
140 EXPECT_FALSE(vertex_translator_->Translate(bad_shader, | 139 EXPECT_FALSE(vertex_translator_->Translate( |
141 &info_log, | 140 bad_shader, &info_log, &translated_source, &shader_version, &attrib_map, |
142 &translated_source, | 141 &uniform_map, &varying_map, &interface_block_map, &output_variable_list, |
143 &shader_version, | 142 &name_map)); |
144 &attrib_map, | |
145 &uniform_map, | |
146 &varying_map, | |
147 &interface_block_map, | |
148 &name_map)); | |
149 // Info log must be valid and non-empty. | 143 // Info log must be valid and non-empty. |
150 ASSERT_FALSE(info_log.empty()); | 144 ASSERT_FALSE(info_log.empty()); |
151 // Translated shader must be NULL. | 145 // Translated shader must be NULL. |
152 EXPECT_TRUE(translated_source.empty()); | 146 EXPECT_TRUE(translated_source.empty()); |
153 // There should be no attributes, uniforms, varyings, interface block or | 147 // There should be no attributes, uniforms, varyings, interface block or |
154 // name mapping. | 148 // name mapping. |
155 EXPECT_TRUE(attrib_map.empty()); | 149 EXPECT_TRUE(attrib_map.empty()); |
156 EXPECT_TRUE(uniform_map.empty()); | 150 EXPECT_TRUE(uniform_map.empty()); |
157 EXPECT_TRUE(varying_map.empty()); | 151 EXPECT_TRUE(varying_map.empty()); |
158 EXPECT_TRUE(interface_block_map.empty()); | 152 EXPECT_TRUE(interface_block_map.empty()); |
| 153 EXPECT_TRUE(output_variable_list.empty()); |
159 EXPECT_TRUE(name_map.empty()); | 154 EXPECT_TRUE(name_map.empty()); |
160 | 155 |
161 // Try a good shader after bad. | 156 // Try a good shader after bad. |
162 info_log.clear(); | 157 info_log.clear(); |
163 EXPECT_TRUE(vertex_translator_->Translate(good_shader, | 158 EXPECT_TRUE(vertex_translator_->Translate( |
164 &info_log, | 159 good_shader, &info_log, &translated_source, &shader_version, &attrib_map, |
165 &translated_source, | 160 &uniform_map, &varying_map, &interface_block_map, &output_variable_list, |
166 &shader_version, | 161 &name_map)); |
167 &attrib_map, | |
168 &uniform_map, | |
169 &varying_map, | |
170 &interface_block_map, | |
171 &name_map)); | |
172 EXPECT_TRUE(info_log.empty()); | 162 EXPECT_TRUE(info_log.empty()); |
173 EXPECT_FALSE(translated_source.empty()); | 163 EXPECT_FALSE(translated_source.empty()); |
174 EXPECT_TRUE(interface_block_map.empty()); | 164 EXPECT_TRUE(interface_block_map.empty()); |
175 } | 165 } |
176 | 166 |
177 TEST_F(ShaderTranslatorTest, ValidFragmentShader) { | 167 TEST_F(ShaderTranslatorTest, ValidFragmentShader) { |
178 const char* shader = | 168 const char* shader = |
179 "void main() {\n" | 169 "void main() {\n" |
180 " gl_FragColor = vec4(1.0);\n" | 170 " gl_FragColor = vec4(1.0);\n" |
181 "}"; | 171 "}"; |
182 | 172 |
183 // A valid shader should be successfully translated. | 173 // A valid shader should be successfully translated. |
184 std::string info_log, translated_source; | 174 std::string info_log, translated_source; |
185 int shader_version; | 175 int shader_version; |
186 AttributeMap attrib_map; | 176 AttributeMap attrib_map; |
187 UniformMap uniform_map; | 177 UniformMap uniform_map; |
188 VaryingMap varying_map; | 178 VaryingMap varying_map; |
189 InterfaceBlockMap interface_block_map; | 179 InterfaceBlockMap interface_block_map; |
| 180 OutputVariableList output_variable_list; |
190 NameMap name_map; | 181 NameMap name_map; |
191 EXPECT_TRUE(fragment_translator_->Translate(shader, | 182 EXPECT_TRUE(fragment_translator_->Translate( |
192 &info_log, | 183 shader, &info_log, &translated_source, &shader_version, &attrib_map, |
193 &translated_source, | 184 &uniform_map, &varying_map, &interface_block_map, &output_variable_list, |
194 &shader_version, | 185 &name_map)); |
195 &attrib_map, | |
196 &uniform_map, | |
197 &varying_map, | |
198 &interface_block_map, | |
199 &name_map)); | |
200 // Info log must be NULL. | 186 // Info log must be NULL. |
201 EXPECT_TRUE(info_log.empty()); | 187 EXPECT_TRUE(info_log.empty()); |
202 // Translated shader must be valid and non-empty. | 188 // Translated shader must be valid and non-empty. |
203 ASSERT_FALSE(translated_source.empty()); | 189 ASSERT_FALSE(translated_source.empty()); |
204 // There should be no attributes, uniforms, varyings, interface block or | 190 // There should be no attributes, uniforms, varyings, interface block or |
205 // name mapping. | 191 // name mapping. |
206 EXPECT_TRUE(attrib_map.empty()); | 192 EXPECT_TRUE(attrib_map.empty()); |
207 EXPECT_TRUE(uniform_map.empty()); | 193 EXPECT_TRUE(uniform_map.empty()); |
208 EXPECT_TRUE(varying_map.empty()); | 194 EXPECT_TRUE(varying_map.empty()); |
209 EXPECT_TRUE(interface_block_map.empty()); | 195 EXPECT_TRUE(interface_block_map.empty()); |
210 EXPECT_TRUE(name_map.empty()); | 196 EXPECT_TRUE(name_map.empty()); |
| 197 // gl_FragColor. |
| 198 EXPECT_EQ(1u, output_variable_list.size()); |
211 } | 199 } |
212 | 200 |
213 TEST_F(ShaderTranslatorTest, InvalidFragmentShader) { | 201 TEST_F(ShaderTranslatorTest, InvalidFragmentShader) { |
214 const char* shader = "foo-bar"; | 202 const char* shader = "foo-bar"; |
215 | 203 |
216 std::string info_log, translated_source; | 204 std::string info_log, translated_source; |
217 int shader_version; | 205 int shader_version; |
218 AttributeMap attrib_map; | 206 AttributeMap attrib_map; |
219 UniformMap uniform_map; | 207 UniformMap uniform_map; |
220 VaryingMap varying_map; | 208 VaryingMap varying_map; |
221 InterfaceBlockMap interface_block_map; | 209 InterfaceBlockMap interface_block_map; |
| 210 OutputVariableList output_variable_list; |
222 NameMap name_map; | 211 NameMap name_map; |
223 // An invalid shader should fail. | 212 // An invalid shader should fail. |
224 EXPECT_FALSE(fragment_translator_->Translate(shader, | 213 EXPECT_FALSE(fragment_translator_->Translate( |
225 &info_log, | 214 shader, &info_log, &translated_source, &shader_version, &attrib_map, |
226 &translated_source, | 215 &uniform_map, &varying_map, &interface_block_map, &output_variable_list, |
227 &shader_version, | 216 &name_map)); |
228 &attrib_map, | |
229 &uniform_map, | |
230 &varying_map, | |
231 &interface_block_map, | |
232 &name_map)); | |
233 // Info log must be valid and non-empty. | 217 // Info log must be valid and non-empty. |
234 EXPECT_FALSE(info_log.empty()); | 218 EXPECT_FALSE(info_log.empty()); |
235 // Translated shader must be NULL. | 219 // Translated shader must be NULL. |
236 EXPECT_TRUE(translated_source.empty()); | 220 EXPECT_TRUE(translated_source.empty()); |
237 // There should be no attributes, uniforms, varyings, interface block or | 221 // There should be no attributes, uniforms, varyings, interface block or |
238 // name mapping. | 222 // name mapping. |
239 EXPECT_TRUE(attrib_map.empty()); | 223 EXPECT_TRUE(attrib_map.empty()); |
240 EXPECT_TRUE(uniform_map.empty()); | 224 EXPECT_TRUE(uniform_map.empty()); |
241 EXPECT_TRUE(varying_map.empty()); | 225 EXPECT_TRUE(varying_map.empty()); |
| 226 EXPECT_TRUE(output_variable_list.empty()); |
242 EXPECT_TRUE(name_map.empty()); | 227 EXPECT_TRUE(name_map.empty()); |
243 } | 228 } |
244 | 229 |
245 TEST_F(ShaderTranslatorTest, GetAttributes) { | 230 TEST_F(ShaderTranslatorTest, GetAttributes) { |
246 const char* shader = | 231 const char* shader = |
247 "attribute vec4 vPosition;\n" | 232 "attribute vec4 vPosition;\n" |
248 "void main() {\n" | 233 "void main() {\n" |
249 " gl_Position = vPosition;\n" | 234 " gl_Position = vPosition;\n" |
250 "}"; | 235 "}"; |
251 | 236 |
252 std::string info_log, translated_source; | 237 std::string info_log, translated_source; |
253 int shader_version; | 238 int shader_version; |
254 AttributeMap attrib_map; | 239 AttributeMap attrib_map; |
255 UniformMap uniform_map; | 240 UniformMap uniform_map; |
256 VaryingMap varying_map; | 241 VaryingMap varying_map; |
257 InterfaceBlockMap interface_block_map; | 242 InterfaceBlockMap interface_block_map; |
| 243 OutputVariableList output_variable_list; |
258 NameMap name_map; | 244 NameMap name_map; |
259 EXPECT_TRUE(vertex_translator_->Translate(shader, | 245 EXPECT_TRUE(vertex_translator_->Translate( |
260 &info_log, | 246 shader, &info_log, &translated_source, &shader_version, &attrib_map, |
261 &translated_source, | 247 &uniform_map, &varying_map, &interface_block_map, &output_variable_list, |
262 &shader_version, | 248 &name_map)); |
263 &attrib_map, | |
264 &uniform_map, | |
265 &varying_map, | |
266 &interface_block_map, | |
267 &name_map)); | |
268 // Info log must be NULL. | 249 // Info log must be NULL. |
269 EXPECT_TRUE(info_log.empty()); | 250 EXPECT_TRUE(info_log.empty()); |
270 // Translated shader must be valid and non-empty. | 251 // Translated shader must be valid and non-empty. |
271 EXPECT_FALSE(translated_source.empty()); | 252 EXPECT_FALSE(translated_source.empty()); |
272 // There should be no uniforms. | 253 // There should be no uniforms. |
273 EXPECT_TRUE(uniform_map.empty()); | 254 EXPECT_TRUE(uniform_map.empty()); |
274 // There should be no interface blocks. | 255 // There should be no interface blocks. |
275 EXPECT_TRUE(interface_block_map.empty()); | 256 EXPECT_TRUE(interface_block_map.empty()); |
276 // There should be one attribute with following characteristics: | 257 // There should be one attribute with following characteristics: |
277 // name:vPosition type:GL_FLOAT_VEC4 size:0. | 258 // name:vPosition type:GL_FLOAT_VEC4 size:0. |
(...skipping 18 matching lines...) Expand all Loading... |
296 "void main() {\n" | 277 "void main() {\n" |
297 " gl_FragColor = bar[0].foo.color[0] + bar[1].foo.color[0];\n" | 278 " gl_FragColor = bar[0].foo.color[0] + bar[1].foo.color[0];\n" |
298 "}"; | 279 "}"; |
299 | 280 |
300 std::string info_log, translated_source; | 281 std::string info_log, translated_source; |
301 int shader_version; | 282 int shader_version; |
302 AttributeMap attrib_map; | 283 AttributeMap attrib_map; |
303 UniformMap uniform_map; | 284 UniformMap uniform_map; |
304 VaryingMap varying_map; | 285 VaryingMap varying_map; |
305 InterfaceBlockMap interface_block_map; | 286 InterfaceBlockMap interface_block_map; |
| 287 OutputVariableList output_variable_list; |
306 NameMap name_map; | 288 NameMap name_map; |
307 EXPECT_TRUE(fragment_translator_->Translate(shader, | 289 EXPECT_TRUE(fragment_translator_->Translate( |
308 &info_log, | 290 shader, &info_log, &translated_source, &shader_version, &attrib_map, |
309 &translated_source, | 291 &uniform_map, &varying_map, &interface_block_map, &output_variable_list, |
310 &shader_version, | 292 &name_map)); |
311 &attrib_map, | |
312 &uniform_map, | |
313 &varying_map, | |
314 &interface_block_map, | |
315 &name_map)); | |
316 // Info log must be NULL. | 293 // Info log must be NULL. |
317 EXPECT_TRUE(info_log.empty()); | 294 EXPECT_TRUE(info_log.empty()); |
318 // Translated shader must be valid and non-empty. | 295 // Translated shader must be valid and non-empty. |
319 EXPECT_FALSE(translated_source.empty()); | 296 EXPECT_FALSE(translated_source.empty()); |
320 // There should be no attributes. | 297 // There should be no attributes. |
321 EXPECT_TRUE(attrib_map.empty()); | 298 EXPECT_TRUE(attrib_map.empty()); |
322 // There should be no interface blocks. | 299 // There should be no interface blocks. |
323 EXPECT_TRUE(interface_block_map.empty()); | 300 EXPECT_TRUE(interface_block_map.empty()); |
324 // There should be two uniforms with following characteristics: | 301 // There should be two uniforms with following characteristics: |
325 // 1. name:bar[0].foo.color[0] type:GL_FLOAT_VEC4 size:1 | 302 // 1. name:bar[0].foo.color[0] type:GL_FLOAT_VEC4 size:1 |
(...skipping 11 matching lines...) Expand all Loading... |
337 EXPECT_EQ(1u, info->arraySize); | 314 EXPECT_EQ(1u, info->arraySize); |
338 EXPECT_STREQ("color", info->name.c_str()); | 315 EXPECT_STREQ("color", info->name.c_str()); |
339 EXPECT_STREQ("bar[0].foo.color[0]", original_name.c_str()); | 316 EXPECT_STREQ("bar[0].foo.color[0]", original_name.c_str()); |
340 // Second uniform. | 317 // Second uniform. |
341 EXPECT_TRUE(iter->second.findInfoByMappedName( | 318 EXPECT_TRUE(iter->second.findInfoByMappedName( |
342 "bar[1].foo.color[0]", &info, &original_name)); | 319 "bar[1].foo.color[0]", &info, &original_name)); |
343 EXPECT_EQ(static_cast<GLenum>(GL_FLOAT_VEC4), info->type); | 320 EXPECT_EQ(static_cast<GLenum>(GL_FLOAT_VEC4), info->type); |
344 EXPECT_EQ(1u, info->arraySize); | 321 EXPECT_EQ(1u, info->arraySize); |
345 EXPECT_STREQ("color", info->name.c_str()); | 322 EXPECT_STREQ("color", info->name.c_str()); |
346 EXPECT_STREQ("bar[1].foo.color[0]", original_name.c_str()); | 323 EXPECT_STREQ("bar[1].foo.color[0]", original_name.c_str()); |
| 324 EXPECT_EQ(1u, output_variable_list.size()); |
| 325 ASSERT_TRUE(output_variable_list.size() > 0); |
| 326 EXPECT_EQ(output_variable_list[0].mappedName, "gl_FragColor"); |
347 } | 327 } |
348 | 328 |
349 | 329 |
350 TEST_F(ES3ShaderTranslatorTest, InvalidInterfaceBlocks) { | 330 TEST_F(ES3ShaderTranslatorTest, InvalidInterfaceBlocks) { |
351 const char* shader = | 331 const char* shader = |
352 "#version 300 es\n" | 332 "#version 300 es\n" |
353 "precision mediump float;\n" | 333 "precision mediump float;\n" |
354 "layout(location=0) out vec4 oColor;\n" | 334 "layout(location=0) out vec4 oColor;\n" |
355 "uniform Color {\n" | 335 "uniform Color {\n" |
356 " float red;\n" | 336 " float red;\n" |
357 " float green;\n" | 337 " float green;\n" |
358 " float blue;\n" | 338 " float blue;\n" |
359 "};\n" | 339 "};\n" |
360 "uniform Color2 {\n" | 340 "uniform Color2 {\n" |
361 " float R;\n" | 341 " float R;\n" |
362 " float green;\n" | 342 " float green;\n" |
363 " float B;\n" | 343 " float B;\n" |
364 "};\n" | 344 "};\n" |
365 "void main() {\n" | 345 "void main() {\n" |
366 " oColor = vec4(red * R, green * green, blue * B, 1.0);\n" | 346 " oColor = vec4(red * R, green * green, blue * B, 1.0);\n" |
367 "}"; | 347 "}"; |
368 | 348 |
369 std::string info_log, translated_source; | 349 std::string info_log, translated_source; |
370 int shader_version; | 350 int shader_version; |
371 AttributeMap attrib_map; | 351 AttributeMap attrib_map; |
372 UniformMap uniform_map; | 352 UniformMap uniform_map; |
373 VaryingMap varying_map; | 353 VaryingMap varying_map; |
374 InterfaceBlockMap interface_block_map; | 354 InterfaceBlockMap interface_block_map; |
| 355 OutputVariableList output_variable_list; |
375 NameMap name_map; | 356 NameMap name_map; |
376 EXPECT_FALSE(fragment_translator_->Translate(shader, | 357 EXPECT_FALSE(fragment_translator_->Translate( |
377 &info_log, | 358 shader, &info_log, &translated_source, &shader_version, &attrib_map, |
378 &translated_source, | 359 &uniform_map, &varying_map, &interface_block_map, &output_variable_list, |
379 &shader_version, | 360 &name_map)); |
380 &attrib_map, | |
381 &uniform_map, | |
382 &varying_map, | |
383 &interface_block_map, | |
384 &name_map)); | |
385 // Info log must be valid and non-empty. | 361 // Info log must be valid and non-empty. |
386 ASSERT_FALSE(info_log.empty()); | 362 ASSERT_FALSE(info_log.empty()); |
387 // Translated shader must be NULL. | 363 // Translated shader must be NULL. |
388 EXPECT_TRUE(translated_source.empty()); | 364 EXPECT_TRUE(translated_source.empty()); |
389 // There should be no attributes, uniforms, varyings, interface block or | 365 // There should be no attributes, uniforms, varyings, interface block or |
390 // name mapping. | 366 // name mapping. |
391 EXPECT_TRUE(attrib_map.empty()); | 367 EXPECT_TRUE(attrib_map.empty()); |
392 EXPECT_TRUE(uniform_map.empty()); | 368 EXPECT_TRUE(uniform_map.empty()); |
393 EXPECT_TRUE(varying_map.empty()); | 369 EXPECT_TRUE(varying_map.empty()); |
394 EXPECT_TRUE(interface_block_map.empty()); | 370 EXPECT_TRUE(interface_block_map.empty()); |
(...skipping 13 matching lines...) Expand all Loading... |
408 "void main() {\n" | 384 "void main() {\n" |
409 " oColor = vec4(red, green, blue, 1.0);\n" | 385 " oColor = vec4(red, green, blue, 1.0);\n" |
410 "}"; | 386 "}"; |
411 | 387 |
412 std::string info_log, translated_source; | 388 std::string info_log, translated_source; |
413 int shader_version; | 389 int shader_version; |
414 AttributeMap attrib_map; | 390 AttributeMap attrib_map; |
415 UniformMap uniform_map; | 391 UniformMap uniform_map; |
416 VaryingMap varying_map; | 392 VaryingMap varying_map; |
417 InterfaceBlockMap interface_block_map; | 393 InterfaceBlockMap interface_block_map; |
| 394 OutputVariableList output_variable_list; |
418 NameMap name_map; | 395 NameMap name_map; |
419 EXPECT_TRUE(fragment_translator_->Translate(shader, | 396 EXPECT_TRUE(fragment_translator_->Translate( |
420 &info_log, | 397 shader, &info_log, &translated_source, &shader_version, &attrib_map, |
421 &translated_source, | 398 &uniform_map, &varying_map, &interface_block_map, &output_variable_list, |
422 &shader_version, | 399 &name_map)); |
423 &attrib_map, | |
424 &uniform_map, | |
425 &varying_map, | |
426 &interface_block_map, | |
427 &name_map)); | |
428 // Info log must be NULL. | 400 // Info log must be NULL. |
429 EXPECT_TRUE(info_log.empty()); | 401 EXPECT_TRUE(info_log.empty()); |
430 // Translated shader must be valid and non-empty. | 402 // Translated shader must be valid and non-empty. |
431 EXPECT_FALSE(translated_source.empty()); | 403 EXPECT_FALSE(translated_source.empty()); |
432 // There should be no attributes. | 404 // There should be no attributes. |
433 EXPECT_TRUE(attrib_map.empty()); | 405 EXPECT_TRUE(attrib_map.empty()); |
434 // There should be one block in interface_block_map | 406 // There should be one block in interface_block_map |
435 EXPECT_EQ(1u, interface_block_map.size()); | 407 EXPECT_EQ(1u, interface_block_map.size()); |
436 InterfaceBlockMap::const_iterator iter; | 408 InterfaceBlockMap::const_iterator iter; |
437 for (iter = interface_block_map.begin(); | 409 for (iter = interface_block_map.begin(); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
502 ShShaderOutput shader_output_language = | 474 ShShaderOutput shader_output_language = |
503 ShaderTranslator::GetShaderOutputLanguageForContext( | 475 ShaderTranslator::GetShaderOutputLanguageForContext( |
504 output_context_version); | 476 output_context_version); |
505 ASSERT_TRUE(translator->Init(GL_VERTEX_SHADER, SH_GLES2_SPEC, &resources, | 477 ASSERT_TRUE(translator->Init(GL_VERTEX_SHADER, SH_GLES2_SPEC, &resources, |
506 shader_output_language, compile_options)); | 478 shader_output_language, compile_options)); |
507 | 479 |
508 std::string translated_source; | 480 std::string translated_source; |
509 int shader_version; | 481 int shader_version; |
510 EXPECT_TRUE(translator->Translate(kShader, nullptr, &translated_source, | 482 EXPECT_TRUE(translator->Translate(kShader, nullptr, &translated_source, |
511 &shader_version, nullptr, nullptr, nullptr, | 483 &shader_version, nullptr, nullptr, nullptr, |
512 nullptr, nullptr)); | 484 nullptr, nullptr, nullptr)); |
513 | 485 |
514 std::string expected_version_directive = testing::get<1>(GetParam()); | 486 std::string expected_version_directive = testing::get<1>(GetParam()); |
515 if (expected_version_directive.empty()) { | 487 if (expected_version_directive.empty()) { |
516 EXPECT_TRUE(translated_source.find("#version") == std::string::npos) | 488 EXPECT_TRUE(translated_source.find("#version") == std::string::npos) |
517 << "Translation was:\n" << translated_source; | 489 << "Translation was:\n" << translated_source; |
518 } else { | 490 } else { |
519 EXPECT_TRUE(translated_source.find(expected_version_directive) != | 491 EXPECT_TRUE(translated_source.find(expected_version_directive) != |
520 std::string::npos) | 492 std::string::npos) |
521 << "Translation was:\n" << translated_source; | 493 << "Translation was:\n" << translated_source; |
522 } | 494 } |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
579 ShaderTranslatorOutputVersionTest, | 551 ShaderTranslatorOutputVersionTest, |
580 testing::Values(make_gl_glsl_tuple("opengl es 2.0", ""), | 552 testing::Values(make_gl_glsl_tuple("opengl es 2.0", ""), |
581 make_gl_glsl_tuple("opengl es 3.0", ""), | 553 make_gl_glsl_tuple("opengl es 3.0", ""), |
582 make_gl_glsl_tuple("opengl es 3.1", ""), | 554 make_gl_glsl_tuple("opengl es 3.1", ""), |
583 make_gl_glsl_tuple("opengl es 3.2", | 555 make_gl_glsl_tuple("opengl es 3.2", |
584 ""))); | 556 ""))); |
585 | 557 |
586 } // namespace gles2 | 558 } // namespace gles2 |
587 } // namespace gpu | 559 } // namespace gpu |
588 | 560 |
OLD | NEW |