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

Unified Diff: ui/gl/test/egl_initialization_displays_unittest.cc

Issue 1123343004: Add a --use-angle flag for selecting the ANGLE renderer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move dependency on gl.gyp into conditional. 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gl/gl_tests.gyp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gl/test/egl_initialization_displays_unittest.cc
diff --git a/ui/gl/test/egl_initialization_displays_unittest.cc b/ui/gl/test/egl_initialization_displays_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..ddee20c5898a207a17146733c219e8a68cb5fa37
--- /dev/null
+++ b/ui/gl/test/egl_initialization_displays_unittest.cc
@@ -0,0 +1,133 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/gl/gl_surface_egl.h"
+
+namespace {
+
+TEST(EGLInitializationDisplaysTest, DisableD3D11) {
+ scoped_ptr<base::CommandLine> command_line(
+ new base::CommandLine(base::CommandLine::NO_PROGRAM));
+
+ std::vector<gfx::DisplayType> displays;
+
+ // using --disable-d3d11 with the default --use-angle should never return
+ // D3D11.
+ command_line->AppendSwitch(switches::kDisableD3D11);
+ GetEGLInitDisplays(true, true, command_line.get(), &displays);
+ EXPECT_EQ(std::find(displays.begin(), displays.end(), gfx::ANGLE_D3D11),
+ displays.end());
+
+ // Specifically requesting D3D11 should always return it if the extension is
+ // available
+ command_line->AppendSwitchASCII(switches::kUseANGLE,
+ gfx::kANGLEImplementationD3D11Name);
+ displays.clear();
+ GetEGLInitDisplays(true, true, command_line.get(), &displays);
+ EXPECT_NE(std::find(displays.begin(), displays.end(), gfx::ANGLE_D3D11),
+ displays.end());
+ EXPECT_EQ(displays.size(), 1u);
+
+ // Specifically requesting D3D11 should not return D3D11 if the extension is
+ // not available
+ displays.clear();
+ GetEGLInitDisplays(false, true, command_line.get(), &displays);
+ EXPECT_EQ(std::find(displays.begin(), displays.end(), gfx::ANGLE_D3D11),
+ displays.end());
+}
+
+TEST(EGLInitializationDisplaysTest, SwiftShader) {
+ scoped_ptr<base::CommandLine> command_line(
+ new base::CommandLine(base::CommandLine::NO_PROGRAM));
+
+ std::vector<gfx::DisplayType> displays;
+
+ // If swiftshader is requested, only SWIFT_SHADER should be returned
+ command_line->AppendSwitchASCII(switches::kUseGL,
+ gfx::kGLImplementationSwiftShaderName);
+ displays.clear();
+ GetEGLInitDisplays(true, true, command_line.get(), &displays);
+ EXPECT_NE(std::find(displays.begin(), displays.end(), gfx::SWIFT_SHADER),
+ displays.end());
+ EXPECT_EQ(displays.size(), 1u);
+
+ // Even if there are other flags, swiftshader should take prescedence
+ command_line->AppendSwitchASCII(switches::kUseANGLE,
+ gfx::kANGLEImplementationD3D11Name);
+ displays.clear();
+ GetEGLInitDisplays(true, true, command_line.get(), &displays);
+ EXPECT_NE(std::find(displays.begin(), displays.end(), gfx::SWIFT_SHADER),
+ displays.end());
+ EXPECT_EQ(displays.size(), 1u);
+}
+
+TEST(EGLInitializationDisplaysTest, DefaultRenderers) {
+ scoped_ptr<base::CommandLine> command_line(
+ new base::CommandLine(base::CommandLine::NO_PROGRAM));
+
+ // Default without --use-angle flag
+ std::vector<gfx::DisplayType> default_no_flag_displays;
+ GetEGLInitDisplays(true, true, command_line.get(), &default_no_flag_displays);
+ EXPECT_FALSE(default_no_flag_displays.empty());
+
+ // Default with --use-angle flag
+ command_line->AppendSwitchASCII(switches::kUseANGLE,
+ gfx::kANGLEImplementationDefaultName);
+ std::vector<gfx::DisplayType> default_with_flag_displays;
+ GetEGLInitDisplays(true, true, command_line.get(),
+ &default_with_flag_displays);
+ EXPECT_FALSE(default_with_flag_displays.empty());
+
+ // Make sure the same results are returned
+ EXPECT_EQ(default_no_flag_displays, default_with_flag_displays);
+}
+
+TEST(EGLInitializationDisplaysTest, NonDefaultRenderers) {
+ scoped_ptr<base::CommandLine> command_line(
+ new base::CommandLine(base::CommandLine::NO_PROGRAM));
+
+ std::vector<gfx::DisplayType> displays;
+
+ // WARP
+ command_line->AppendSwitchASCII(switches::kUseANGLE,
+ gfx::kANGLEImplementationWARPName);
+ displays.clear();
+ GetEGLInitDisplays(true, true, command_line.get(), &displays);
+ EXPECT_NE(std::find(displays.begin(), displays.end(), gfx::ANGLE_WARP),
+ displays.end());
+ EXPECT_EQ(displays.size(), 1u);
+
+ // OpenGL
+ command_line->AppendSwitchASCII(switches::kUseANGLE,
+ gfx::kANGLEImplementationOpenGLName);
+ displays.clear();
+ GetEGLInitDisplays(true, true, command_line.get(), &displays);
+ EXPECT_NE(std::find(displays.begin(), displays.end(), gfx::ANGLE_OPENGL),
+ displays.end());
+ EXPECT_EQ(displays.size(), 1u);
+
+ // OpenGLES
+ command_line->AppendSwitchASCII(switches::kUseANGLE,
+ gfx::kANGLEImplementationOpenGLESName);
+ displays.clear();
+ GetEGLInitDisplays(true, true, command_line.get(), &displays);
+ EXPECT_NE(std::find(displays.begin(), displays.end(), gfx::ANGLE_OPENGLES),
+ displays.end());
+ EXPECT_EQ(displays.size(), 1u);
+}
+
+TEST(EGLInitializationDisplaysTest, NoExtensions) {
+ scoped_ptr<base::CommandLine> command_line(
+ new base::CommandLine(base::CommandLine::NO_PROGRAM));
+
+ // With no angle platform extensions, only DEFAULT should be available
+ std::vector<gfx::DisplayType> displays;
+ GetEGLInitDisplays(false, false, command_line.get(), &displays);
+ EXPECT_NE(std::find(displays.begin(), displays.end(), gfx::DEFAULT),
+ displays.end());
+ EXPECT_EQ(displays.size(), 1u);
+}
+
+} // namespace
« no previous file with comments | « ui/gl/gl_tests.gyp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698