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 <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
11 | 11 |
12 #include "base/command_line.h" | 12 #include "base/command_line.h" |
13 #include "base/memory/scoped_ptr.h" | 13 #include "base/memory/scoped_ptr.h" |
14 #include "base/strings/string_number_conversions.h" | 14 #include "base/strings/string_number_conversions.h" |
15 #include "base/strings/string_util.h" | 15 #include "base/strings/string_util.h" |
16 #include "gpu/command_buffer/common/gles2_cmd_format.h" | 16 #include "gpu/command_buffer/common/gles2_cmd_format.h" |
17 #include "gpu/command_buffer/common/gles2_cmd_utils.h" | 17 #include "gpu/command_buffer/common/gles2_cmd_utils.h" |
18 #include "gpu/command_buffer/service/common_decoder.h" | 18 #include "gpu/command_buffer/service/common_decoder.h" |
19 #include "gpu/command_buffer/service/feature_info.h" | 19 #include "gpu/command_buffer/service/feature_info.h" |
| 20 #include "gpu/command_buffer/service/gpu_preferences.h" |
20 #include "gpu/command_buffer/service/gpu_service_test.h" | 21 #include "gpu/command_buffer/service/gpu_service_test.h" |
21 #include "gpu/command_buffer/service/gpu_switches.h" | 22 #include "gpu/command_buffer/service/gpu_switches.h" |
22 #include "gpu/command_buffer/service/mocks.h" | 23 #include "gpu/command_buffer/service/mocks.h" |
23 #include "gpu/command_buffer/service/shader_manager.h" | 24 #include "gpu/command_buffer/service/shader_manager.h" |
24 #include "gpu/command_buffer/service/test_helper.h" | 25 #include "gpu/command_buffer/service/test_helper.h" |
25 #include "testing/gtest/include/gtest/gtest.h" | 26 #include "testing/gtest/include/gtest/gtest.h" |
26 #include "ui/gl/gl_mock.h" | 27 #include "ui/gl/gl_mock.h" |
27 #include "ui/gl/gl_version_info.h" | 28 #include "ui/gl/gl_version_info.h" |
28 | 29 |
29 using ::testing::_; | 30 using ::testing::_; |
(...skipping 22 matching lines...) Expand all Loading... |
52 static_cast<const uint8_t*>(start); | 53 static_cast<const uint8_t*>(start); |
53 } | 54 } |
54 | 55 |
55 } // namespace anonymous | 56 } // namespace anonymous |
56 | 57 |
57 class ProgramManagerTestBase : public GpuServiceTest { | 58 class ProgramManagerTestBase : public GpuServiceTest { |
58 protected: | 59 protected: |
59 virtual void SetupProgramManager() { | 60 virtual void SetupProgramManager() { |
60 manager_.reset(new ProgramManager(nullptr, kMaxVaryingVectors, | 61 manager_.reset(new ProgramManager(nullptr, kMaxVaryingVectors, |
61 kMaxDualSourceDrawBuffers, | 62 kMaxDualSourceDrawBuffers, |
| 63 gpu_preferences_, |
62 feature_info_.get())); | 64 feature_info_.get())); |
63 } | 65 } |
64 void SetUpBase(const char* gl_version, | 66 void SetUpBase(const char* gl_version, |
65 const char* gl_extensions, | 67 const char* gl_extensions, |
66 FeatureInfo* feature_info = NULL) { | 68 FeatureInfo* feature_info = nullptr) { |
67 GpuServiceTest::SetUpWithGLVersion(gl_version, gl_extensions); | 69 GpuServiceTest::SetUpWithGLVersion(gl_version, gl_extensions); |
68 TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion( | 70 TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion( |
69 gl_.get(), gl_extensions, "", gl_version); | 71 gl_.get(), gl_extensions, "", gl_version); |
70 if (!feature_info) | 72 if (!feature_info) |
71 feature_info = new FeatureInfo(); | 73 feature_info = new FeatureInfo(); |
72 feature_info->InitializeForTesting(); | 74 feature_info->InitializeForTesting(); |
73 feature_info_ = feature_info; | 75 feature_info_ = feature_info; |
74 SetupProgramManager(); | 76 SetupProgramManager(); |
75 } | 77 } |
76 void SetUp() override { | 78 void SetUp() override { |
77 // Parameters same as GpuServiceTest::SetUp | 79 // Parameters same as GpuServiceTest::SetUp |
78 SetUpBase("2.0", "GL_EXT_framebuffer_object"); | 80 SetUpBase("2.0", "GL_EXT_framebuffer_object"); |
79 } | 81 } |
80 void TearDown() override { | 82 void TearDown() override { |
81 manager_->Destroy(false); | 83 manager_->Destroy(false); |
82 manager_.reset(); | 84 manager_.reset(); |
83 feature_info_ = nullptr; | 85 feature_info_ = nullptr; |
84 GpuServiceTest::TearDown(); | 86 GpuServiceTest::TearDown(); |
85 } | 87 } |
86 | 88 |
87 scoped_ptr<ProgramManager> manager_; | 89 scoped_ptr<ProgramManager> manager_; |
| 90 GpuPreferences gpu_preferences_; |
88 scoped_refptr<FeatureInfo> feature_info_; | 91 scoped_refptr<FeatureInfo> feature_info_; |
89 }; | 92 }; |
90 | 93 |
91 class ProgramManagerTest : public ProgramManagerTestBase {}; | 94 class ProgramManagerTest : public ProgramManagerTestBase {}; |
92 | 95 |
93 TEST_F(ProgramManagerTest, Basic) { | 96 TEST_F(ProgramManagerTest, Basic) { |
94 const GLuint kClient1Id = 1; | 97 const GLuint kClient1Id = 1; |
95 const GLuint kService1Id = 11; | 98 const GLuint kService1Id = 11; |
96 const GLuint kClient2Id = 2; | 99 const GLuint kClient2Id = 2; |
97 // Check we can create program. | 100 // Check we can create program. |
(...skipping 1843 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1941 : cache_(new MockProgramCache()), | 1944 : cache_(new MockProgramCache()), |
1942 vertex_shader_(NULL), | 1945 vertex_shader_(NULL), |
1943 fragment_shader_(NULL), | 1946 fragment_shader_(NULL), |
1944 program_(NULL) { | 1947 program_(NULL) { |
1945 } | 1948 } |
1946 | 1949 |
1947 protected: | 1950 protected: |
1948 void SetupProgramManager() override { | 1951 void SetupProgramManager() override { |
1949 manager_.reset(new ProgramManager(cache_.get(), kMaxVaryingVectors, | 1952 manager_.reset(new ProgramManager(cache_.get(), kMaxVaryingVectors, |
1950 kMaxDualSourceDrawBuffers, | 1953 kMaxDualSourceDrawBuffers, |
| 1954 gpu_preferences_, |
1951 feature_info_.get())); | 1955 feature_info_.get())); |
1952 } | 1956 } |
1953 | 1957 |
1954 void SetUp() override { | 1958 void SetUp() override { |
1955 ProgramManagerTestBase::SetUp(); | 1959 ProgramManagerTestBase::SetUp(); |
1956 | 1960 |
1957 vertex_shader_ = shader_manager_.CreateShader( | 1961 vertex_shader_ = shader_manager_.CreateShader( |
1958 kVertexShaderClientId, kVertexShaderServiceId, GL_VERTEX_SHADER); | 1962 kVertexShaderClientId, kVertexShaderServiceId, GL_VERTEX_SHADER); |
1959 fragment_shader_ = shader_manager_.CreateShader( | 1963 fragment_shader_ = shader_manager_.CreateShader( |
1960 kFragmentShaderClientId, kFragmentShaderServiceId, GL_FRAGMENT_SHADER); | 1964 kFragmentShaderClientId, kFragmentShaderServiceId, GL_FRAGMENT_SHADER); |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2157 class ProgramManagerWithPathRenderingTest | 2161 class ProgramManagerWithPathRenderingTest |
2158 : public ProgramManagerWithShaderTest, | 2162 : public ProgramManagerWithShaderTest, |
2159 public testing::WithParamInterface< | 2163 public testing::WithParamInterface< |
2160 testing::tuple<const char*, const char*>> { | 2164 testing::tuple<const char*, const char*>> { |
2161 protected: | 2165 protected: |
2162 void SetUp() override { | 2166 void SetUp() override { |
2163 base::CommandLine command_line(*base::CommandLine::ForCurrentProcess()); | 2167 base::CommandLine command_line(*base::CommandLine::ForCurrentProcess()); |
2164 command_line.AppendSwitch(switches::kEnableGLPathRendering); | 2168 command_line.AppendSwitch(switches::kEnableGLPathRendering); |
2165 FeatureInfo* feature_info = new FeatureInfo(command_line); | 2169 FeatureInfo* feature_info = new FeatureInfo(command_line); |
2166 SetUpBase(testing::get<0>(GetParam()), testing::get<1>(GetParam()), | 2170 SetUpBase(testing::get<0>(GetParam()), testing::get<1>(GetParam()), |
2167 feature_info); | 2171 feature_info); |
2168 } | 2172 } |
2169 static const char* kFragmentInput1Name; | 2173 static const char* kFragmentInput1Name; |
2170 static const char* kFragmentInput2Name; | 2174 static const char* kFragmentInput2Name; |
2171 // Name that GL reports for input 2. Needed because input 2 is an | 2175 // Name that GL reports for input 2. Needed because input 2 is an |
2172 // array. | 2176 // array. |
2173 static const char* kFragmentInput2GLName; | 2177 static const char* kFragmentInput2GLName; |
2174 static const char* kFragmentInput3Name; | 2178 static const char* kFragmentInput3Name; |
2175 static const char* kFragmentInput3GLName; | 2179 static const char* kFragmentInput3GLName; |
2176 static const GLint kFragmentInput1Size = 1; | 2180 static const GLint kFragmentInput1Size = 1; |
2177 static const GLint kFragmentInput2Size = 3; | 2181 static const GLint kFragmentInput2Size = 3; |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2397 ProgramManagerDualSourceBlendingES2Test, | 2401 ProgramManagerDualSourceBlendingES2Test, |
2398 testing::Values( | 2402 testing::Values( |
2399 make_gl_ext_tuple("3.2", | 2403 make_gl_ext_tuple("3.2", |
2400 "GL_ARB_draw_buffers GL_ARB_blend_func_extended " | 2404 "GL_ARB_draw_buffers GL_ARB_blend_func_extended " |
2401 "GL_ARB_program_interface_query"), | 2405 "GL_ARB_program_interface_query"), |
2402 make_gl_ext_tuple("opengl es 3.1", | 2406 make_gl_ext_tuple("opengl es 3.1", |
2403 "GL_EXT_draw_buffers GL_EXT_blend_func_extended"))); | 2407 "GL_EXT_draw_buffers GL_EXT_blend_func_extended"))); |
2404 | 2408 |
2405 } // namespace gles2 | 2409 } // namespace gles2 |
2406 } // namespace gpu | 2410 } // namespace gpu |
OLD | NEW |