Index: gpu/command_buffer/service/feature_info.cc |
diff --git a/gpu/command_buffer/service/feature_info.cc b/gpu/command_buffer/service/feature_info.cc |
index c747383ee818f090e2d061493253a1a784ade3d3..e6df3d4a608e7ecdd5990116901d60683e415eb3 100644 |
--- a/gpu/command_buffer/service/feature_info.cc |
+++ b/gpu/command_buffer/service/feature_info.cc |
@@ -209,6 +209,9 @@ void FeatureInfo::InitializeBasicState(const base::CommandLine& command_line) { |
enable_unsafe_es3_apis_switch_ = |
command_line.HasSwitch(switches::kEnableUnsafeES3APIs); |
+ enable_gl_path_rendering_switch_ = |
+ command_line.HasSwitch(switches::kEnableGLPathRendering); |
+ |
unsafe_es3_apis_enabled_ = false; |
} |
@@ -1004,13 +1007,22 @@ void FeatureInfo::InitializeFeatures() { |
} |
} |
- if (extensions.Contains("GL_NV_path_rendering")) { |
- if (extensions.Contains("GL_EXT_direct_state_access") || |
- gl_version_info_->is_es3) { |
+ if (enable_gl_path_rendering_switch_ && |
+ extensions.Contains("GL_NV_path_rendering")) { |
+ bool hasNeededOptionalFunctions = |
+ gfx::GetGLProcAddress("glStencilThenCoverFillPathNV") && |
+ gfx::GetGLProcAddress("glStencilThenCoverStrokePathNV"); |
piman
2015/06/27 01:20:07
Why is this needed?
Kimmo Kinnunen
2015/06/29 05:46:04
These required functions are part of the API versi
piman
2015/06/29 23:31:17
I don't much like this idea of extension "API vers
|
+ |
+ if (hasNeededOptionalFunctions && |
+ (extensions.Contains("GL_EXT_direct_state_access") || |
+ gl_version_info_->is_es3)) { |
AddExtensionString("GL_CHROMIUM_path_rendering"); |
feature_flags_.chromium_path_rendering = true; |
validators_.g_l_state.AddValue(GL_PATH_MODELVIEW_MATRIX_CHROMIUM); |
validators_.g_l_state.AddValue(GL_PATH_PROJECTION_MATRIX_CHROMIUM); |
+ validators_.g_l_state.AddValue(GL_PATH_STENCIL_FUNC_CHROMIUM); |
+ validators_.g_l_state.AddValue(GL_PATH_STENCIL_REF_CHROMIUM); |
+ validators_.g_l_state.AddValue(GL_PATH_STENCIL_VALUE_MASK_CHROMIUM); |
} |
} |