| 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 |