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