Fix ENABLE_SWIFTSHADER flag.
Convert it to a build flag, as it never properly made the move from gyp.
BUG=646660
Review-Url: https://codereview.chromium.org/2337243003
Cr-Commit-Position: refs/heads/master@{#418948}
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index e4f9f277..af7034c 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -1443,6 +1443,7 @@
"//ui/gfx",
"//ui/gfx/geometry",
"//ui/gl",
+ "//ui/gl:gl_features",
"//ui/message_center",
"//ui/resources",
"//ui/resources",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index b57dced..63e79be3 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -76,6 +76,7 @@
#include "ui/display/display_switches.h"
#include "ui/events/event_switches.h"
#include "ui/gfx/switches.h"
+#include "ui/gl/gl_features.h"
#include "ui/gl/gl_switches.h"
#include "ui/keyboard/keyboard_switches.h"
#include "ui/native_theme/native_theme_switches.h"
@@ -812,7 +813,7 @@
FEATURE_VALUE_TYPE(features::kV8Ignition)},
{"disable-software-rasterizer", IDS_FLAGS_SOFTWARE_RASTERIZER_NAME,
IDS_FLAGS_SOFTWARE_RASTERIZER_DESCRIPTION,
-#if defined(ENABLE_SWIFTSHADER)
+#if BUILDFLAG(ENABLE_SWIFTSHADER)
kOsAll,
#else
0,
diff --git a/chrome/browser/component_updater/swiftshader_component_installer.cc b/chrome/browser/component_updater/swiftshader_component_installer.cc
index e96c19f..411c8db 100644
--- a/chrome/browser/component_updater/swiftshader_component_installer.cc
+++ b/chrome/browser/component_updater/swiftshader_component_installer.cc
@@ -25,6 +25,7 @@
#include "content/public/browser/gpu_data_manager.h"
#include "content/public/browser/gpu_data_manager_observer.h"
#include "gpu/config/gpu_feature_type.h"
+#include "ui/gl/gl_features.h"
using content::BrowserThread;
using content::GpuDataManager;
@@ -218,7 +219,7 @@
}
}
-#if defined(ENABLE_SWIFTSHADER)
+#if BUILDFLAG(ENABLE_SWIFTSHADER)
// Check if there already is a version of swiftshader installed,
// and if so register it.
@@ -258,7 +259,7 @@
} // namespace
void RegisterSwiftShaderComponent(ComponentUpdateService* cus) {
-#if defined(ENABLE_SWIFTSHADER) && defined(ARCH_CPU_X86)
+#if BUILDFLAG(ENABLE_SWIFTSHADER) && defined(ARCH_CPU_X86)
BrowserThread::PostTask(BrowserThread::FILE,
FROM_HERE,
base::Bind(&RegisterSwiftShaderPath, cus));
diff --git a/ui/gl/BUILD.gn b/ui/gl/BUILD.gn
index 970e716..ee771de0 100644
--- a/ui/gl/BUILD.gn
+++ b/ui/gl/BUILD.gn
@@ -2,11 +2,17 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+import("//build/buildflag_header.gni")
+import("//build/config/chrome_build.gni")
import("//build/config/linux/pkg_config.gni")
import("//build/config/ui.gni")
import("//ui/ozone/ozone.gni")
import("//testing/test.gni")
+declare_args() {
+ enable_swiftshader = false
+}
+
use_egl = is_win || is_android || is_linux
use_glx = use_x11 || ozone_platform_x11
@@ -15,6 +21,11 @@
import("//build/config/android/rules.gni")
}
+buildflag_header("gl_features") {
+ header = "gl_features.h"
+ flags = [ "ENABLE_SWIFTSHADER=$enable_swiftshader" ]
+}
+
config("gl_config") {
defines = []
if (use_glx) {
diff --git a/ui/gl/init/BUILD.gn b/ui/gl/init/BUILD.gn
index 715dd280..074e7b1d 100644
--- a/ui/gl/init/BUILD.gn
+++ b/ui/gl/init/BUILD.gn
@@ -40,6 +40,7 @@
libs = [ "dwmapi.lib" ]
ldflags = [ "/DELAYLOAD:dwmapi.dll" ]
+ deps += [ "//ui/gl:gl_features" ]
} else if (is_mac) {
sources += [
"gl_factory_mac.cc",
diff --git a/ui/gl/init/gl_initializer_win.cc b/ui/gl/init/gl_initializer_win.cc
index d1c3fe9d..b4b4c7f 100644
--- a/ui/gl/init/gl_initializer_win.cc
+++ b/ui/gl/init/gl_initializer_win.cc
@@ -23,6 +23,7 @@
#include "ui/gl/angle_platform_impl.h"
#include "ui/gl/gl_bindings.h"
#include "ui/gl/gl_egl_api_implementation.h"
+#include "ui/gl/gl_features.h"
#include "ui/gl/gl_gl_api_implementation.h"
#include "ui/gl/gl_osmesa_api_implementation.h"
#include "ui/gl/gl_surface_egl.h"
@@ -139,7 +140,7 @@
return false;
}
-#if defined(ENABLE_SWIFTSHADER)
+#if BUILDFLAG(ENABLE_SWIFTSHADER)
if (using_swift_shader) {
// Register key so that SwiftShader doesn't display watermark logo.
typedef void (__stdcall *RegisterFunc)(const char* key);