Diff
Modified: trunk/Source/WebCore/ChangeLog (155408 => 155409)
--- trunk/Source/WebCore/ChangeLog 2013-09-10 01:08:47 UTC (rev 155408)
+++ trunk/Source/WebCore/ChangeLog 2013-09-10 01:27:23 UTC (rev 155409)
@@ -1,3 +1,25 @@
+2013-09-09 Dean Jackson <[email protected]>
+
+ [WebGL] Allow multithreaded OpenGL contexts
+ https://bugs.webkit.org/show_bug.cgi?id=121062
+
+ Reviewed by Simon Fraser.
+
+ Expose a new preference "multithreadedWebGLEnabled".
+
+ Also examine the value of that preference and, on Mac,
+ tell the CGLContext that it should go to multithreaded mode.
+
+ * html/canvas/WebGLRenderingContext.cpp:
+ (WebCore::WebGLRenderingContext::create): Look at the value of the new setting, and
+ toggle a flag on the context attributes.
+ * page/Settings.in: New Setting "multithreadedWebGLEnabled".
+ * platform/graphics/GraphicsContext3D.h:
+ (WebCore::GraphicsContext3D::Attributes::Attributes): Add a "multithreaded" flag.
+ * platform/graphics/mac/GraphicsContext3DMac.mm:
+ (WebCore::GraphicsContext3D::GraphicsContext3D): If the context attributes
+ suggest we should, tell the OpenGL context to go into multithreaded mode.
+
2013-09-09 Ryosuke Niwa <[email protected]>
Remove HTMLTextFormControl::fixPlaceholderRenderer
Modified: trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp (155408 => 155409)
--- trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp 2013-09-10 01:08:47 UTC (rev 155408)
+++ trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp 2013-09-10 01:27:23 UTC (rev 155409)
@@ -430,6 +430,9 @@
attributes.shareResources = false;
attributes.preferDiscreteGPU = true;
+ if (frame->settings().multithreadedWebGLEnabled())
+ attributes.multithreaded = true;
+
RefPtr<GraphicsContext3D> context(GraphicsContext3D::create(attributes, hostWindow));
if (!context || !context->makeContextCurrent()) {
Modified: trunk/Source/WebCore/page/Settings.in (155408 => 155409)
--- trunk/Source/WebCore/page/Settings.in 2013-09-10 01:08:47 UTC (rev 155408)
+++ trunk/Source/WebCore/page/Settings.in 2013-09-10 01:27:23 UTC (rev 155409)
@@ -105,6 +105,7 @@
webGLEnabled initial=false
webGLErrorsToConsoleEnabled initial=true
openGLMultisamplingEnabled initial=true
+multithreadedWebGLEnabled initial=false
privilegedWebGLExtensionsEnabled initial=false
accelerated2dCanvasEnabled initial=false
antialiased2dCanvasEnabled initial=true
Modified: trunk/Source/WebCore/platform/graphics/GraphicsContext3D.h (155408 => 155409)
--- trunk/Source/WebCore/platform/graphics/GraphicsContext3D.h 2013-09-10 01:08:47 UTC (rev 155408)
+++ trunk/Source/WebCore/platform/graphics/GraphicsContext3D.h 2013-09-10 01:27:23 UTC (rev 155409)
@@ -444,6 +444,7 @@
, noExtensions(false)
, shareResources(true)
, preferDiscreteGPU(false)
+ , multithreaded(false)
{
}
@@ -456,6 +457,7 @@
bool noExtensions;
bool shareResources;
bool preferDiscreteGPU;
+ bool multithreaded;
};
enum RenderStyle {
Modified: trunk/Source/WebCore/platform/graphics/mac/GraphicsContext3DMac.mm (155408 => 155409)
--- trunk/Source/WebCore/platform/graphics/mac/GraphicsContext3DMac.mm 2013-09-10 01:08:47 UTC (rev 155408)
+++ trunk/Source/WebCore/platform/graphics/mac/GraphicsContext3DMac.mm 2013-09-10 01:27:23 UTC (rev 155409)
@@ -160,6 +160,15 @@
// Set the current context to the one given to us.
CGLSetCurrentContext(m_contextObj);
+
+ if (attrs.multithreaded) {
+ err = CGLEnable(m_contextObj, kCGLCEMPEngine);
+ if (err != kCGLNoError) {
+ // We could not create a multi-threaded context.
+ m_contextObj = 0;
+ return;
+ }
+ }
validateAttributes();
Modified: trunk/Source/WebKit/mac/ChangeLog (155408 => 155409)
--- trunk/Source/WebKit/mac/ChangeLog 2013-09-10 01:08:47 UTC (rev 155408)
+++ trunk/Source/WebKit/mac/ChangeLog 2013-09-10 01:27:23 UTC (rev 155409)
@@ -1,5 +1,23 @@
2013-09-09 Dean Jackson <[email protected]>
+ [WebGL] Allow multithreaded OpenGL contexts
+ https://bugs.webkit.org/show_bug.cgi?id=121062
+
+ Reviewed by Simon Fraser.
+
+ Expose a new preference "multithreadedWebGLEnabled".
+
+ * WebView/WebPreferenceKeysPrivate.h:
+ * WebView/WebPreferences.mm:
+ (+[WebPreferences initialize]):
+ (-[WebPreferences multithreadedWebGLEnabled]):
+ (-[WebPreferences setMultithreadedWebGLEnabled:]):
+ * WebView/WebPreferencesPrivate.h:
+ * WebView/WebView.mm:
+ (-[WebView _preferencesChanged:]):
+
+2013-09-09 Dean Jackson <[email protected]>
+
Enable WebGL for OS X nightlies
https://bugs.webkit.org/show_bug.cgi?id=121040
Modified: trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h (155408 => 155409)
--- trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h 2013-09-10 01:08:47 UTC (rev 155408)
+++ trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h 2013-09-10 01:27:23 UTC (rev 155409)
@@ -102,6 +102,7 @@
#define WebKitShowRepaintCounterPreferenceKey @"WebKitShowRepaintCounter"
#define WebKitWebAudioEnabledPreferenceKey @"WebKitWebAudioEnabled"
#define WebKitWebGLEnabledPreferenceKey @"WebKitWebGLEnabled"
+#define WebKitMultithreadedWebGLEnabledPreferenceKey @"WebKitMultithreadedWebGLEnabled"
#define WebKitAccelerated2dCanvasEnabledPreferenceKey @"WebKitAccelerated2dCanvasEnabled"
#define WebKitFrameFlatteningEnabledPreferenceKey @"WebKitFrameFlatteningEnabled"
#define WebKitSpatialNavigationEnabledPreferenceKey @"WebKitSpatialNavigationEnabled"
Modified: trunk/Source/WebKit/mac/WebView/WebPreferences.mm (155408 => 155409)
--- trunk/Source/WebKit/mac/WebView/WebPreferences.mm 2013-09-10 01:08:47 UTC (rev 155408)
+++ trunk/Source/WebKit/mac/WebView/WebPreferences.mm 2013-09-10 01:27:23 UTC (rev 155409)
@@ -381,6 +381,7 @@
[NSNumber numberWithBool:NO], WebKitShowDebugBordersPreferenceKey,
[NSNumber numberWithBool:NO], WebKitShowRepaintCounterPreferenceKey,
[NSNumber numberWithBool:YES], WebKitWebGLEnabledPreferenceKey,
+ [NSNumber numberWithBool:NO], WebKitMultithreadedWebGLEnabledPreferenceKey,
[NSNumber numberWithBool:NO], WebKitAccelerated2dCanvasEnabledPreferenceKey,
[NSNumber numberWithBool:NO], WebKitFrameFlatteningEnabledPreferenceKey,
[NSNumber numberWithBool:NO], WebKitSpatialNavigationEnabledPreferenceKey,
@@ -1452,6 +1453,16 @@
[self _setBoolValue:enabled forKey:WebKitWebGLEnabledPreferenceKey];
}
+- (BOOL)multithreadedWebGLEnabled
+{
+ return [self _boolValueForKey:WebKitMultithreadedWebGLEnabledPreferenceKey];
+}
+
+- (void)setMultithreadedWebGLEnabled:(BOOL)enabled
+{
+ [self _setBoolValue:enabled forKey:WebKitMultithreadedWebGLEnabledPreferenceKey];
+}
+
- (BOOL)accelerated2dCanvasEnabled
{
return [self _boolValueForKey:WebKitAccelerated2dCanvasEnabledPreferenceKey];
Modified: trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h (155408 => 155409)
--- trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h 2013-09-10 01:08:47 UTC (rev 155408)
+++ trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h 2013-09-10 01:27:23 UTC (rev 155409)
@@ -211,6 +211,9 @@
- (BOOL)webGLEnabled;
- (void)setWebGLEnabled:(BOOL)enabled;
+- (BOOL)multithreadedWebGLEnabled;
+- (void)setMultithreadedWebGLEnabled:(BOOL)enabled;
+
- (BOOL)accelerated2dCanvasEnabled;
- (void)setAccelerated2dCanvasEnabled:(BOOL)enabled;
Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (155408 => 155409)
--- trunk/Source/WebKit/mac/WebView/WebView.mm 2013-09-10 01:08:47 UTC (rev 155408)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm 2013-09-10 01:27:23 UTC (rev 155409)
@@ -1508,6 +1508,7 @@
settings.setShowDebugBorders([preferences showDebugBorders]);
settings.setShowRepaintCounter([preferences showRepaintCounter]);
settings.setWebGLEnabled([preferences webGLEnabled]);
+ settings.setMultithreadedWebGLEnabled([preferences multithreadedWebGLEnabled]);
settings.setAccelerated2dCanvasEnabled([preferences accelerated2dCanvasEnabled]);
settings.setLoadDeferringEnabled(shouldEnableLoadDeferring());
settings.setWindowFocusRestricted(shouldRestrictWindowFocus());
Modified: trunk/Source/WebKit2/ChangeLog (155408 => 155409)
--- trunk/Source/WebKit2/ChangeLog 2013-09-10 01:08:47 UTC (rev 155408)
+++ trunk/Source/WebKit2/ChangeLog 2013-09-10 01:27:23 UTC (rev 155409)
@@ -1,5 +1,23 @@
2013-09-09 Dean Jackson <[email protected]>
+ [WebGL] Allow multithreaded OpenGL contexts
+ https://bugs.webkit.org/show_bug.cgi?id=121062
+
+ Reviewed by Simon Fraser.
+
+ Expose a new preference "multithreadedWebGLEnabled".
+
+ * Shared/WebPreferencesStore.h:
+ * UIProcess/API/C/WKPreferences.cpp:
+ (WKPreferencesSetMultithreadedWebGLEnabled):
+ (WKPreferencesGetMultithreadedWebGLEnabled):
+ * UIProcess/API/C/WKPreferencesPrivate.h:
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::updatePreferences):
+ * mac/WebKit2.order:
+
+2013-09-09 Dean Jackson <[email protected]>
+
Enable WebGL for OS X nightlies
https://bugs.webkit.org/show_bug.cgi?id=121040
Modified: trunk/Source/WebKit2/Shared/WebPreferencesStore.h (155408 => 155409)
--- trunk/Source/WebKit2/Shared/WebPreferencesStore.h 2013-09-10 01:08:47 UTC (rev 155408)
+++ trunk/Source/WebKit2/Shared/WebPreferencesStore.h 2013-09-10 01:27:23 UTC (rev 155409)
@@ -93,6 +93,7 @@
macro(TiledScrollingIndicatorVisible, tiledScrollingIndicatorVisible, Bool, bool, false) \
macro(CSSCustomFilterEnabled, cssCustomFilterEnabled, Bool, bool, true) \
macro(WebGLEnabled, webGLEnabled, Bool, bool, true) \
+ macro(MultithreadedWebGLEnabled, multithreadedWebGLEnabled, Bool, bool, false) \
macro(Accelerated2dCanvasEnabled, accelerated2dCanvasEnabled, Bool, bool, false) \
macro(CSSRegionsEnabled, cssRegionsEnabled, Bool, bool, true) \
macro(CSSCompositingEnabled, cssCompositingEnabled, Bool, bool, true) \
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp (155408 => 155409)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp 2013-09-10 01:08:47 UTC (rev 155408)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp 2013-09-10 01:27:23 UTC (rev 155409)
@@ -479,6 +479,16 @@
return toImpl(preferencesRef)->webGLEnabled();
}
+void WKPreferencesSetMultithreadedWebGLEnabled(WKPreferencesRef preferencesRef, bool flag)
+{
+ toImpl(preferencesRef)->setMultithreadedWebGLEnabled(flag);
+}
+
+bool WKPreferencesGetMultithreadedWebGLEnabled(WKPreferencesRef preferencesRef)
+{
+ return toImpl(preferencesRef)->multithreadedWebGLEnabled();
+}
+
void WKPreferencesSetAccelerated2DCanvasEnabled(WKPreferencesRef preferencesRef, bool flag)
{
toImpl(preferencesRef)->setAccelerated2dCanvasEnabled(flag);
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesPrivate.h (155408 => 155409)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesPrivate.h 2013-09-10 01:08:47 UTC (rev 155408)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesPrivate.h 2013-09-10 01:27:23 UTC (rev 155409)
@@ -95,11 +95,15 @@
WK_EXPORT void WKPreferencesSetCSSCustomFilterEnabled(WKPreferencesRef, bool flag);
WK_EXPORT bool WKPreferencesGetCSSCustomFilterEnabled(WKPreferencesRef);
-// Defaults to false.
+// Defaults to true.
WK_EXPORT void WKPreferencesSetWebGLEnabled(WKPreferencesRef, bool);
WK_EXPORT bool WKPreferencesGetWebGLEnabled(WKPreferencesRef);
// Defaults to false.
+WK_EXPORT void WKPreferencesSetMultithreadedWebGLEnabled(WKPreferencesRef, bool);
+WK_EXPORT bool WKPreferencesGetMultithreadedWebGLEnabled(WKPreferencesRef);
+
+// Defaults to false.
WK_EXPORT void WKPreferencesSetAccelerated2DCanvasEnabled(WKPreferencesRef, bool);
WK_EXPORT bool WKPreferencesGetAccelerated2DCanvasEnabled(WKPreferencesRef);
Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (155408 => 155409)
--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2013-09-10 01:08:47 UTC (rev 155408)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp 2013-09-10 01:27:23 UTC (rev 155409)
@@ -2496,6 +2496,7 @@
settings.setCSSGridLayoutEnabled(store.getBoolValueForKey(WebPreferencesKey::cssGridLayoutEnabledKey()));
settings.setRegionBasedColumnsEnabled(store.getBoolValueForKey(WebPreferencesKey::regionBasedColumnsEnabledKey()));
settings.setWebGLEnabled(store.getBoolValueForKey(WebPreferencesKey::webGLEnabledKey()));
+ settings.setMultithreadedWebGLEnabled(store.getBoolValueForKey(WebPreferencesKey::multithreadedWebGLEnabledKey()));
settings.setAccelerated2dCanvasEnabled(store.getBoolValueForKey(WebPreferencesKey::accelerated2dCanvasEnabledKey()));
settings.setMediaPlaybackRequiresUserGesture(store.getBoolValueForKey(WebPreferencesKey::mediaPlaybackRequiresUserGestureKey()));
settings.setMediaPlaybackAllowsInline(store.getBoolValueForKey(WebPreferencesKey::mediaPlaybackAllowsInlineKey()));
Modified: trunk/Source/WebKit2/mac/WebKit2.order (155408 => 155409)
--- trunk/Source/WebKit2/mac/WebKit2.order 2013-09-10 01:08:47 UTC (rev 155408)
+++ trunk/Source/WebKit2/mac/WebKit2.order 2013-09-10 01:27:23 UTC (rev 155409)
@@ -191,6 +191,7 @@
__ZN6WebKit17WebPreferencesKey33tiledScrollingIndicatorVisibleKeyEv
__ZN6WebKit17WebPreferencesKey25cssCustomFilterEnabledKeyEv
__ZN6WebKit17WebPreferencesKey15webGLEnabledKeyEv
+__ZN6WebKit17WebPreferencesKey28multithreadedWebGLEnabledKeyEv
__ZN6WebKit17WebPreferencesKey29accelerated2dCanvasEnabledKeyEv
__ZN6WebKit17WebPreferencesKey20cssRegionsEnabledKeyEv
__ZN6WebKit17WebPreferencesKey24cssCompositingEnabledKeyEv
@@ -468,6 +469,8 @@
__ZN6WebKit14WebPreferences25setShouldPrintBackgroundsERKb
_WKPreferencesSetWebGLEnabled
__ZN6WebKit14WebPreferences15setWebGLEnabledERKb
+_WKPreferencesSetMultithreadedWebGLEnabled
+__ZN6WebKit14WebPreferences28setMultithreadedWebGLEnabledERKb
_WKMutableArrayCreate
__ZN6WebKit12MutableArrayC1Ev
__ZN6WebKit14ImmutableArrayC2Ev
@@ -7801,6 +7804,8 @@
__ZNK6WebKit14WebPreferences32allowUniversalAccessFromFileURLsEv
_WKPreferencesGetWebGLEnabled
__ZNK6WebKit14WebPreferences12webGLEnabledEv
+_WKPreferencesGetMultithreadedWebGLEnabled
+__ZNK6WebKit14WebPreferences25multithreadedWebGLEnabledEv
_WKPageCopyCustomUserAgent
_WKPageReload
__ZN6WebKit12WebPageProxy6reloadEb