Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(249)

Side by Side Diff: ui/gl/gl_api_unittest.cc

Issue 1110923003: Added switch to disable specified GL extensions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix gl_unittests for windows Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/gl/BUILD.gn ('k') | ui/gl/gl_gl_api_implementation.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/command_line.h"
6 #include "base/memory/scoped_ptr.h"
7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "ui/gl/gl_gl_api_implementation.h"
9 #include "ui/gl/gl_implementation.h"
10 #include "ui/gl/gl_switches.h"
11
12 namespace gfx {
13
14 class GLApiTest : public testing::Test {
15 public:
16 void SetUp() override {
17 fake_extension_string_ = "";
18 num_fake_extension_strings_ = 0;
19 fake_extension_strings_ = nullptr;
20
21 driver_.reset(new DriverGL());
22 api_.reset(new RealGLApi());
23
24 driver_->fn.glGetStringFn = &FakeGetString;
25 driver_->fn.glGetStringiFn = &FakeGetStringi;
26 driver_->fn.glGetIntegervFn = &FakeGetIntegervFn;
27 }
28
29 void TearDown() override {
30 api_.reset(nullptr);
31 driver_.reset(nullptr);
32
33 SetGLImplementation(kGLImplementationNone);
34 fake_extension_string_ = "";
35 num_fake_extension_strings_ = 0;
36 fake_extension_strings_ = nullptr;
37 }
38
39 void InitializeAPI(base::CommandLine* command_line) {
40 api_.reset(new RealGLApi());
41 if (command_line)
42 api_->InitializeWithCommandLine(driver_.get(), command_line);
43 else
44 api_->Initialize(driver_.get());
45 }
46
47 void SetFakeExtensionString(const char* fake_string) {
48 SetGLImplementation(kGLImplementationDesktopGL);
49 fake_extension_string_ = fake_string;
50 }
51
52 void SetFakeExtensionStrings(const char** fake_strings, uint32_t count) {
53 SetGLImplementation(kGLImplementationDesktopGLCoreProfile);
54 num_fake_extension_strings_ = count;
55 fake_extension_strings_ = fake_strings;
56 }
57
58 static const GLubyte* GL_BINDING_CALL FakeGetString(GLenum name) {
59 return reinterpret_cast<const GLubyte*>(fake_extension_string_);
60 }
61
62 static void GL_BINDING_CALL FakeGetIntegervFn(GLenum pname, GLint* params) {
63 *params = num_fake_extension_strings_;
64 }
65
66 static const GLubyte* GL_BINDING_CALL FakeGetStringi(GLenum name,
67 GLuint index) {
68 return (index < num_fake_extension_strings_) ?
69 reinterpret_cast<const GLubyte*>(fake_extension_strings_[index]) :
70 nullptr;
71 }
72
73 const char* GetExtensions() {
74 return reinterpret_cast<const char*>(api_->glGetStringFn(GL_EXTENSIONS));
75 }
76
77 uint32_t GetNumExtensions() {
78 GLint num_extensions = 0;
79 api_->glGetIntegervFn(GL_NUM_EXTENSIONS, &num_extensions);
80 return static_cast<uint32_t>(num_extensions);
81 }
82
83 const char* GetExtensioni(uint32_t index) {
84 return reinterpret_cast<const char*>(api_->glGetStringiFn(GL_EXTENSIONS,
85 index));
86 }
87
88 protected:
89 static const char* fake_extension_string_;
90
91 static uint32_t num_fake_extension_strings_;
92 static const char** fake_extension_strings_;
93
94 scoped_ptr<DriverGL> driver_;
95 scoped_ptr<RealGLApi> api_;
96 };
97
98 const char* GLApiTest::fake_extension_string_ = "";
99
100 uint32_t GLApiTest::num_fake_extension_strings_ = 0;
101 const char** GLApiTest::fake_extension_strings_ = nullptr;
102
103 TEST_F(GLApiTest, DisabledExtensionStringTest) {
104 static const char* kFakeExtensions = "GL_EXT_1 GL_EXT_2 GL_EXT_3 GL_EXT_4";
105 static const char* kFakeDisabledExtensions = "GL_EXT_1,GL_EXT_2,GL_FAKE";
106 static const char* kFilteredExtensions = "GL_EXT_3 GL_EXT_4";
107
108 SetFakeExtensionString(kFakeExtensions);
109 InitializeAPI(nullptr);
110
111 EXPECT_STREQ(kFakeExtensions, GetExtensions());
112
113 base::CommandLine command_line(base::CommandLine::NO_PROGRAM);
114 command_line.AppendSwitchASCII(switches::kDisableGLExtensions,
115 kFakeDisabledExtensions);
116 InitializeAPI(&command_line);
117
118 EXPECT_STREQ(kFilteredExtensions, GetExtensions());
119 }
120
121 TEST_F(GLApiTest, DisabledExtensionStringIndexTest) {
122 static const char* kFakeExtensions[] = {
123 "GL_EXT_1",
124 "GL_EXT_2",
125 "GL_EXT_3",
126 "GL_EXT_4"
127 };
128 static const char* kFakeDisabledExtensions = "GL_EXT_1,GL_EXT_2,GL_FAKE";
129 static const char* kFilteredExtensions[] = {
130 "GL_EXT_3",
131 "GL_EXT_4"
132 };
133
134 SetFakeExtensionStrings(kFakeExtensions, arraysize(kFakeExtensions));
135 InitializeAPI(nullptr);
136
137 EXPECT_EQ(arraysize(kFakeExtensions), GetNumExtensions());
138 for (uint32_t i = 0; i < arraysize(kFakeExtensions); ++i) {
139 EXPECT_STREQ(kFakeExtensions[i], GetExtensioni(i));
140 }
141
142 base::CommandLine command_line(base::CommandLine::NO_PROGRAM);
143 command_line.AppendSwitchASCII(switches::kDisableGLExtensions,
144 kFakeDisabledExtensions);
145 InitializeAPI(&command_line);
146
147 EXPECT_EQ(arraysize(kFilteredExtensions), GetNumExtensions());
148 for (uint32_t i = 0; i < arraysize(kFilteredExtensions); ++i) {
149 EXPECT_STREQ(kFilteredExtensions[i], GetExtensioni(i));
150 }
151 }
152
153 } // namespace gpu
OLDNEW
« no previous file with comments | « ui/gl/BUILD.gn ('k') | ui/gl/gl_gl_api_implementation.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698