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 |
11 namespace gpu { | 11 namespace gpu { |
12 namespace gles2 { | 12 namespace gles2 { |
13 | 13 |
14 class ShaderTranslatorTest : public testing::Test { | 14 class ShaderTranslatorTest : public testing::Test { |
15 public: | 15 public: |
16 ShaderTranslatorTest() { | 16 ShaderTranslatorTest() { |
17 shader_output_language_ = | 17 shader_output_language_ = |
18 ShaderTranslator::GetShaderOutputLanguageForContext( | 18 ShaderTranslator::GetShaderOutputLanguageForContext( |
19 gl::GLVersionInfo("2.0", "", "")); | 19 gl::GLVersionInfo("2.0", "", "")); |
20 } | 20 } |
21 | 21 |
22 ~ShaderTranslatorTest() override {} | 22 ~ShaderTranslatorTest() override {} |
23 | 23 |
24 protected: | 24 protected: |
25 void SetUp() override { | 25 void SetUp() override { |
26 ShBuiltInResources resources; | 26 ShBuiltInResources resources; |
27 ShInitBuiltInResources(&resources); | 27 sh::InitBuiltInResources(&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 static_cast<ShCompileOptions>(0), | 36 static_cast<ShCompileOptions>(0), |
37 false)); | 37 false)); |
(...skipping 18 matching lines...) Expand all Loading... |
56 shader_output_language_ = | 56 shader_output_language_ = |
57 ShaderTranslator::GetShaderOutputLanguageForContext( | 57 ShaderTranslator::GetShaderOutputLanguageForContext( |
58 gl::GLVersionInfo("3.0", "", "")); | 58 gl::GLVersionInfo("3.0", "", "")); |
59 } | 59 } |
60 | 60 |
61 ~ES3ShaderTranslatorTest() override {} | 61 ~ES3ShaderTranslatorTest() override {} |
62 | 62 |
63 protected: | 63 protected: |
64 void SetUp() override { | 64 void SetUp() override { |
65 ShBuiltInResources resources; | 65 ShBuiltInResources resources; |
66 ShInitBuiltInResources(&resources); | 66 sh::InitBuiltInResources(&resources); |
67 resources.MaxExpressionComplexity = 32; | 67 resources.MaxExpressionComplexity = 32; |
68 resources.MaxCallStackDepth = 32; | 68 resources.MaxCallStackDepth = 32; |
69 | 69 |
70 vertex_translator_ = new ShaderTranslator(); | 70 vertex_translator_ = new ShaderTranslator(); |
71 fragment_translator_ = new ShaderTranslator(); | 71 fragment_translator_ = new ShaderTranslator(); |
72 | 72 |
73 ASSERT_TRUE(vertex_translator_->Init(GL_VERTEX_SHADER, SH_GLES3_SPEC, | 73 ASSERT_TRUE(vertex_translator_->Init(GL_VERTEX_SHADER, SH_GLES3_SPEC, |
74 &resources, shader_output_language_, | 74 &resources, shader_output_language_, |
75 static_cast<ShCompileOptions>(0), | 75 static_cast<ShCompileOptions>(0), |
76 false)); | 76 false)); |
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
417 } | 417 } |
418 EXPECT_TRUE(iter != interface_block_map.end()); | 418 EXPECT_TRUE(iter != interface_block_map.end()); |
419 } | 419 } |
420 | 420 |
421 TEST_F(ShaderTranslatorTest, OptionsString) { | 421 TEST_F(ShaderTranslatorTest, OptionsString) { |
422 scoped_refptr<ShaderTranslator> translator_1 = new ShaderTranslator(); | 422 scoped_refptr<ShaderTranslator> translator_1 = new ShaderTranslator(); |
423 scoped_refptr<ShaderTranslator> translator_2 = new ShaderTranslator(); | 423 scoped_refptr<ShaderTranslator> translator_2 = new ShaderTranslator(); |
424 scoped_refptr<ShaderTranslator> translator_3 = new ShaderTranslator(); | 424 scoped_refptr<ShaderTranslator> translator_3 = new ShaderTranslator(); |
425 | 425 |
426 ShBuiltInResources resources; | 426 ShBuiltInResources resources; |
427 ShInitBuiltInResources(&resources); | 427 sh::InitBuiltInResources(&resources); |
428 | 428 |
429 ASSERT_TRUE(translator_1->Init(GL_VERTEX_SHADER, SH_GLES2_SPEC, &resources, | 429 ASSERT_TRUE(translator_1->Init(GL_VERTEX_SHADER, SH_GLES2_SPEC, &resources, |
430 SH_GLSL_150_CORE_OUTPUT, | 430 SH_GLSL_150_CORE_OUTPUT, |
431 static_cast<ShCompileOptions>(0), | 431 static_cast<ShCompileOptions>(0), |
432 false)); | 432 false)); |
433 ASSERT_TRUE(translator_2->Init(GL_FRAGMENT_SHADER, SH_GLES2_SPEC, &resources, | 433 ASSERT_TRUE(translator_2->Init(GL_FRAGMENT_SHADER, SH_GLES2_SPEC, &resources, |
434 SH_GLSL_150_CORE_OUTPUT, | 434 SH_GLSL_150_CORE_OUTPUT, |
435 SH_INIT_OUTPUT_VARIABLES, | 435 SH_INIT_OUTPUT_VARIABLES, |
436 false)); | 436 false)); |
437 resources.EXT_draw_buffers = 1; | 437 resources.EXT_draw_buffers = 1; |
(...skipping 19 matching lines...) Expand all Loading... |
457 | 457 |
458 class ShaderTranslatorOutputVersionTest | 458 class ShaderTranslatorOutputVersionTest |
459 : public testing::TestWithParam<testing::tuple<const char*, const char*>> { | 459 : public testing::TestWithParam<testing::tuple<const char*, const char*>> { |
460 }; | 460 }; |
461 | 461 |
462 // crbug.com/540543 | 462 // crbug.com/540543 |
463 // https://bugs.chromium.org/p/angleproject/issues/detail?id=1276 | 463 // https://bugs.chromium.org/p/angleproject/issues/detail?id=1276 |
464 // https://bugs.chromium.org/p/angleproject/issues/detail?id=1277 | 464 // https://bugs.chromium.org/p/angleproject/issues/detail?id=1277 |
465 TEST_F(ShaderTranslatorOutputVersionTest, DISABLED_CompatibilityOutput) { | 465 TEST_F(ShaderTranslatorOutputVersionTest, DISABLED_CompatibilityOutput) { |
466 ShBuiltInResources resources; | 466 ShBuiltInResources resources; |
467 ShInitBuiltInResources(&resources); | 467 sh::InitBuiltInResources(&resources); |
468 ShCompileOptions compile_options = SH_OBJECT_CODE; | 468 ShCompileOptions compile_options = SH_OBJECT_CODE; |
469 ShShaderOutput shader_output_language = SH_GLSL_COMPATIBILITY_OUTPUT; | 469 ShShaderOutput shader_output_language = SH_GLSL_COMPATIBILITY_OUTPUT; |
470 scoped_refptr<ShaderTranslator> vertex_translator = new ShaderTranslator(); | 470 scoped_refptr<ShaderTranslator> vertex_translator = new ShaderTranslator(); |
471 ASSERT_TRUE(vertex_translator->Init(GL_VERTEX_SHADER, SH_GLES2_SPEC, | 471 ASSERT_TRUE(vertex_translator->Init(GL_VERTEX_SHADER, SH_GLES2_SPEC, |
472 &resources, shader_output_language, | 472 &resources, shader_output_language, |
473 compile_options, | 473 compile_options, |
474 false)); | 474 false)); |
475 scoped_refptr<ShaderTranslator> fragment_translator = new ShaderTranslator(); | 475 scoped_refptr<ShaderTranslator> fragment_translator = new ShaderTranslator(); |
476 ASSERT_TRUE(fragment_translator->Init(GL_FRAGMENT_SHADER, SH_GLES2_SPEC, | 476 ASSERT_TRUE(fragment_translator->Init(GL_FRAGMENT_SHADER, SH_GLES2_SPEC, |
477 &resources, shader_output_language, | 477 &resources, shader_output_language, |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
525 const char* kShader = | 525 const char* kShader = |
526 "attribute vec4 vPosition;\n" | 526 "attribute vec4 vPosition;\n" |
527 "void main() {\n" | 527 "void main() {\n" |
528 " gl_Position = vPosition;\n" | 528 " gl_Position = vPosition;\n" |
529 "}"; | 529 "}"; |
530 | 530 |
531 gl::GLVersionInfo output_context_version(testing::get<0>(GetParam()), "", ""); | 531 gl::GLVersionInfo output_context_version(testing::get<0>(GetParam()), "", ""); |
532 | 532 |
533 scoped_refptr<ShaderTranslator> translator = new ShaderTranslator(); | 533 scoped_refptr<ShaderTranslator> translator = new ShaderTranslator(); |
534 ShBuiltInResources resources; | 534 ShBuiltInResources resources; |
535 ShInitBuiltInResources(&resources); | 535 sh::InitBuiltInResources(&resources); |
536 ShCompileOptions compile_options = SH_OBJECT_CODE; | 536 ShCompileOptions compile_options = SH_OBJECT_CODE; |
537 ShShaderOutput shader_output_language = | 537 ShShaderOutput shader_output_language = |
538 ShaderTranslator::GetShaderOutputLanguageForContext( | 538 ShaderTranslator::GetShaderOutputLanguageForContext( |
539 output_context_version); | 539 output_context_version); |
540 ASSERT_TRUE(translator->Init(GL_VERTEX_SHADER, SH_GLES2_SPEC, &resources, | 540 ASSERT_TRUE(translator->Init(GL_VERTEX_SHADER, SH_GLES2_SPEC, &resources, |
541 shader_output_language, compile_options, false)); | 541 shader_output_language, compile_options, false)); |
542 | 542 |
543 std::string translated_source; | 543 std::string translated_source; |
544 int shader_version; | 544 int shader_version; |
545 EXPECT_TRUE(translator->Translate(kShader, nullptr, &translated_source, | 545 EXPECT_TRUE(translator->Translate(kShader, nullptr, &translated_source, |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
613 INSTANTIATE_TEST_CASE_P(OpenGLESContexts, | 613 INSTANTIATE_TEST_CASE_P(OpenGLESContexts, |
614 ShaderTranslatorOutputVersionTest, | 614 ShaderTranslatorOutputVersionTest, |
615 testing::Values(make_gl_glsl_tuple("opengl es 2.0", ""), | 615 testing::Values(make_gl_glsl_tuple("opengl es 2.0", ""), |
616 make_gl_glsl_tuple("opengl es 3.0", ""), | 616 make_gl_glsl_tuple("opengl es 3.0", ""), |
617 make_gl_glsl_tuple("opengl es 3.1", ""), | 617 make_gl_glsl_tuple("opengl es 3.1", ""), |
618 make_gl_glsl_tuple("opengl es 3.2", | 618 make_gl_glsl_tuple("opengl es 3.2", |
619 ""))); | 619 ""))); |
620 | 620 |
621 } // namespace gles2 | 621 } // namespace gles2 |
622 } // namespace gpu | 622 } // namespace gpu |
OLD | NEW |