| 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 15 matching lines...) Expand all Loading... |
| 26 ShBuiltInResources resources; | 26 ShBuiltInResources resources; |
| 27 ShInitBuiltInResources(&resources); | 27 ShInitBuiltInResources(&resources); |
| 28 resources.MaxExpressionComplexity = 32; | 28 resources.MaxExpressionComplexity = 32; |
| 29 resources.MaxCallStackDepth = 32; | 29 resources.MaxCallStackDepth = 32; |
| 30 | 30 |
| 31 vertex_translator_ = new ShaderTranslator(); | 31 vertex_translator_ = new ShaderTranslator(); |
| 32 fragment_translator_ = new ShaderTranslator(); | 32 fragment_translator_ = new ShaderTranslator(); |
| 33 | 33 |
| 34 ASSERT_TRUE(vertex_translator_->Init(GL_VERTEX_SHADER, SH_GLES2_SPEC, | 34 ASSERT_TRUE(vertex_translator_->Init(GL_VERTEX_SHADER, SH_GLES2_SPEC, |
| 35 &resources, shader_output_language_, | 35 &resources, shader_output_language_, |
| 36 SH_EMULATE_BUILT_IN_FUNCTIONS)); | 36 SH_EMULATE_BUILT_IN_FUNCTIONS, |
| 37 false)); |
| 37 ASSERT_TRUE(fragment_translator_->Init(GL_FRAGMENT_SHADER, SH_GLES2_SPEC, | 38 ASSERT_TRUE(fragment_translator_->Init(GL_FRAGMENT_SHADER, SH_GLES2_SPEC, |
| 38 &resources, shader_output_language_, | 39 &resources, shader_output_language_, |
| 39 static_cast<ShCompileOptions>(0))); | 40 static_cast<ShCompileOptions>(0), |
| 41 false)); |
| 40 } | 42 } |
| 41 void TearDown() override { | 43 void TearDown() override { |
| 42 vertex_translator_ = NULL; | 44 vertex_translator_ = NULL; |
| 43 fragment_translator_ = NULL; | 45 fragment_translator_ = NULL; |
| 44 } | 46 } |
| 45 | 47 |
| 46 scoped_refptr<ShaderTranslator> vertex_translator_; | 48 scoped_refptr<ShaderTranslator> vertex_translator_; |
| 47 scoped_refptr<ShaderTranslator> fragment_translator_; | 49 scoped_refptr<ShaderTranslator> fragment_translator_; |
| 48 ShShaderOutput shader_output_language_; | 50 ShShaderOutput shader_output_language_; |
| 49 }; | 51 }; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 63 ShBuiltInResources resources; | 65 ShBuiltInResources resources; |
| 64 ShInitBuiltInResources(&resources); | 66 ShInitBuiltInResources(&resources); |
| 65 resources.MaxExpressionComplexity = 32; | 67 resources.MaxExpressionComplexity = 32; |
| 66 resources.MaxCallStackDepth = 32; | 68 resources.MaxCallStackDepth = 32; |
| 67 | 69 |
| 68 vertex_translator_ = new ShaderTranslator(); | 70 vertex_translator_ = new ShaderTranslator(); |
| 69 fragment_translator_ = new ShaderTranslator(); | 71 fragment_translator_ = new ShaderTranslator(); |
| 70 | 72 |
| 71 ASSERT_TRUE(vertex_translator_->Init(GL_VERTEX_SHADER, SH_GLES3_SPEC, | 73 ASSERT_TRUE(vertex_translator_->Init(GL_VERTEX_SHADER, SH_GLES3_SPEC, |
| 72 &resources, shader_output_language_, | 74 &resources, shader_output_language_, |
| 73 SH_EMULATE_BUILT_IN_FUNCTIONS)); | 75 SH_EMULATE_BUILT_IN_FUNCTIONS, false)); |
| 74 ASSERT_TRUE(fragment_translator_->Init(GL_FRAGMENT_SHADER, SH_GLES3_SPEC, | 76 ASSERT_TRUE(fragment_translator_->Init(GL_FRAGMENT_SHADER, SH_GLES3_SPEC, |
| 75 &resources, shader_output_language_, | 77 &resources, shader_output_language_, |
| 76 static_cast<ShCompileOptions>(0))); | 78 static_cast<ShCompileOptions>(0), |
| 79 false)); |
| 77 } | 80 } |
| 78 void TearDown() override { | 81 void TearDown() override { |
| 79 vertex_translator_ = NULL; | 82 vertex_translator_ = NULL; |
| 80 fragment_translator_ = NULL; | 83 fragment_translator_ = NULL; |
| 81 } | 84 } |
| 82 | 85 |
| 83 scoped_refptr<ShaderTranslator> vertex_translator_; | 86 scoped_refptr<ShaderTranslator> vertex_translator_; |
| 84 scoped_refptr<ShaderTranslator> fragment_translator_; | 87 scoped_refptr<ShaderTranslator> fragment_translator_; |
| 85 ShShaderOutput shader_output_language_; | 88 ShShaderOutput shader_output_language_; |
| 86 }; | 89 }; |
| (...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 417 TEST_F(ShaderTranslatorTest, OptionsString) { | 420 TEST_F(ShaderTranslatorTest, OptionsString) { |
| 418 scoped_refptr<ShaderTranslator> translator_1 = new ShaderTranslator(); | 421 scoped_refptr<ShaderTranslator> translator_1 = new ShaderTranslator(); |
| 419 scoped_refptr<ShaderTranslator> translator_2 = new ShaderTranslator(); | 422 scoped_refptr<ShaderTranslator> translator_2 = new ShaderTranslator(); |
| 420 scoped_refptr<ShaderTranslator> translator_3 = new ShaderTranslator(); | 423 scoped_refptr<ShaderTranslator> translator_3 = new ShaderTranslator(); |
| 421 | 424 |
| 422 ShBuiltInResources resources; | 425 ShBuiltInResources resources; |
| 423 ShInitBuiltInResources(&resources); | 426 ShInitBuiltInResources(&resources); |
| 424 | 427 |
| 425 ASSERT_TRUE(translator_1->Init(GL_VERTEX_SHADER, SH_GLES2_SPEC, &resources, | 428 ASSERT_TRUE(translator_1->Init(GL_VERTEX_SHADER, SH_GLES2_SPEC, &resources, |
| 426 SH_GLSL_150_CORE_OUTPUT, | 429 SH_GLSL_150_CORE_OUTPUT, |
| 427 SH_EMULATE_BUILT_IN_FUNCTIONS)); | 430 SH_EMULATE_BUILT_IN_FUNCTIONS, |
| 431 false)); |
| 428 ASSERT_TRUE(translator_2->Init(GL_FRAGMENT_SHADER, SH_GLES2_SPEC, &resources, | 432 ASSERT_TRUE(translator_2->Init(GL_FRAGMENT_SHADER, SH_GLES2_SPEC, &resources, |
| 429 SH_GLSL_150_CORE_OUTPUT, | 433 SH_GLSL_150_CORE_OUTPUT, |
| 430 static_cast<ShCompileOptions>(0))); | 434 static_cast<ShCompileOptions>(0), |
| 435 false)); |
| 431 resources.EXT_draw_buffers = 1; | 436 resources.EXT_draw_buffers = 1; |
| 432 ASSERT_TRUE(translator_3->Init(GL_VERTEX_SHADER, SH_GLES2_SPEC, &resources, | 437 ASSERT_TRUE(translator_3->Init(GL_VERTEX_SHADER, SH_GLES2_SPEC, &resources, |
| 433 SH_GLSL_150_CORE_OUTPUT, | 438 SH_GLSL_150_CORE_OUTPUT, |
| 434 SH_EMULATE_BUILT_IN_FUNCTIONS)); | 439 SH_EMULATE_BUILT_IN_FUNCTIONS, |
| 440 false)); |
| 435 | 441 |
| 436 std::string options_1( | 442 std::string options_1( |
| 437 translator_1->GetStringForOptionsThatWouldAffectCompilation()); | 443 translator_1->GetStringForOptionsThatWouldAffectCompilation()); |
| 438 std::string options_2( | 444 std::string options_2( |
| 439 translator_1->GetStringForOptionsThatWouldAffectCompilation()); | 445 translator_1->GetStringForOptionsThatWouldAffectCompilation()); |
| 440 std::string options_3( | 446 std::string options_3( |
| 441 translator_2->GetStringForOptionsThatWouldAffectCompilation()); | 447 translator_2->GetStringForOptionsThatWouldAffectCompilation()); |
| 442 std::string options_4( | 448 std::string options_4( |
| 443 translator_3->GetStringForOptionsThatWouldAffectCompilation()); | 449 translator_3->GetStringForOptionsThatWouldAffectCompilation()); |
| 444 | 450 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 456 // https://bugs.chromium.org/p/angleproject/issues/detail?id=1276 | 462 // https://bugs.chromium.org/p/angleproject/issues/detail?id=1276 |
| 457 // https://bugs.chromium.org/p/angleproject/issues/detail?id=1277 | 463 // https://bugs.chromium.org/p/angleproject/issues/detail?id=1277 |
| 458 TEST_F(ShaderTranslatorOutputVersionTest, DISABLED_CompatibilityOutput) { | 464 TEST_F(ShaderTranslatorOutputVersionTest, DISABLED_CompatibilityOutput) { |
| 459 ShBuiltInResources resources; | 465 ShBuiltInResources resources; |
| 460 ShInitBuiltInResources(&resources); | 466 ShInitBuiltInResources(&resources); |
| 461 ShCompileOptions compile_options = SH_OBJECT_CODE; | 467 ShCompileOptions compile_options = SH_OBJECT_CODE; |
| 462 ShShaderOutput shader_output_language = SH_GLSL_COMPATIBILITY_OUTPUT; | 468 ShShaderOutput shader_output_language = SH_GLSL_COMPATIBILITY_OUTPUT; |
| 463 scoped_refptr<ShaderTranslator> vertex_translator = new ShaderTranslator(); | 469 scoped_refptr<ShaderTranslator> vertex_translator = new ShaderTranslator(); |
| 464 ASSERT_TRUE(vertex_translator->Init(GL_VERTEX_SHADER, SH_GLES2_SPEC, | 470 ASSERT_TRUE(vertex_translator->Init(GL_VERTEX_SHADER, SH_GLES2_SPEC, |
| 465 &resources, shader_output_language, | 471 &resources, shader_output_language, |
| 466 compile_options)); | 472 compile_options, |
| 473 false)); |
| 467 scoped_refptr<ShaderTranslator> fragment_translator = new ShaderTranslator(); | 474 scoped_refptr<ShaderTranslator> fragment_translator = new ShaderTranslator(); |
| 468 ASSERT_TRUE(fragment_translator->Init(GL_FRAGMENT_SHADER, SH_GLES2_SPEC, | 475 ASSERT_TRUE(fragment_translator->Init(GL_FRAGMENT_SHADER, SH_GLES2_SPEC, |
| 469 &resources, shader_output_language, | 476 &resources, shader_output_language, |
| 470 compile_options)); | 477 compile_options, |
| 478 false)); |
| 471 | 479 |
| 472 std::string translated_source; | 480 std::string translated_source; |
| 473 int shader_version; | 481 int shader_version; |
| 474 { | 482 { |
| 475 const char* kShader = | 483 const char* kShader = |
| 476 "attribute vec4 vPosition;\n" | 484 "attribute vec4 vPosition;\n" |
| 477 "void main() {\n" | 485 "void main() {\n" |
| 478 "}"; | 486 "}"; |
| 479 | 487 |
| 480 EXPECT_TRUE(vertex_translator->Translate( | 488 EXPECT_TRUE(vertex_translator->Translate( |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 523 ""); | 531 ""); |
| 524 | 532 |
| 525 scoped_refptr<ShaderTranslator> translator = new ShaderTranslator(); | 533 scoped_refptr<ShaderTranslator> translator = new ShaderTranslator(); |
| 526 ShBuiltInResources resources; | 534 ShBuiltInResources resources; |
| 527 ShInitBuiltInResources(&resources); | 535 ShInitBuiltInResources(&resources); |
| 528 ShCompileOptions compile_options = SH_OBJECT_CODE; | 536 ShCompileOptions compile_options = SH_OBJECT_CODE; |
| 529 ShShaderOutput shader_output_language = | 537 ShShaderOutput shader_output_language = |
| 530 ShaderTranslator::GetShaderOutputLanguageForContext( | 538 ShaderTranslator::GetShaderOutputLanguageForContext( |
| 531 output_context_version); | 539 output_context_version); |
| 532 ASSERT_TRUE(translator->Init(GL_VERTEX_SHADER, SH_GLES2_SPEC, &resources, | 540 ASSERT_TRUE(translator->Init(GL_VERTEX_SHADER, SH_GLES2_SPEC, &resources, |
| 533 shader_output_language, compile_options)); | 541 shader_output_language, compile_options, false)); |
| 534 | 542 |
| 535 std::string translated_source; | 543 std::string translated_source; |
| 536 int shader_version; | 544 int shader_version; |
| 537 EXPECT_TRUE(translator->Translate(kShader, nullptr, &translated_source, | 545 EXPECT_TRUE(translator->Translate(kShader, nullptr, &translated_source, |
| 538 &shader_version, nullptr, nullptr, nullptr, | 546 &shader_version, nullptr, nullptr, nullptr, |
| 539 nullptr, nullptr, nullptr)); | 547 nullptr, nullptr, nullptr)); |
| 540 | 548 |
| 541 std::string expected_version_directive = testing::get<1>(GetParam()); | 549 std::string expected_version_directive = testing::get<1>(GetParam()); |
| 542 if (expected_version_directive.empty()) { | 550 if (expected_version_directive.empty()) { |
| 543 EXPECT_TRUE(translated_source.find("#version") == std::string::npos) | 551 EXPECT_TRUE(translated_source.find("#version") == std::string::npos) |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 606 ShaderTranslatorOutputVersionTest, | 614 ShaderTranslatorOutputVersionTest, |
| 607 testing::Values(make_gl_glsl_tuple("opengl es 2.0", ""), | 615 testing::Values(make_gl_glsl_tuple("opengl es 2.0", ""), |
| 608 make_gl_glsl_tuple("opengl es 3.0", ""), | 616 make_gl_glsl_tuple("opengl es 3.0", ""), |
| 609 make_gl_glsl_tuple("opengl es 3.1", ""), | 617 make_gl_glsl_tuple("opengl es 3.1", ""), |
| 610 make_gl_glsl_tuple("opengl es 3.2", | 618 make_gl_glsl_tuple("opengl es 3.2", |
| 611 ""))); | 619 ""))); |
| 612 | 620 |
| 613 } // namespace gles2 | 621 } // namespace gles2 |
| 614 } // namespace gpu | 622 } // namespace gpu |
| 615 | 623 |
| OLD | NEW |