Diff
Modified: trunk/Source/WebCore/ChangeLog (91637 => 91638)
--- trunk/Source/WebCore/ChangeLog 2011-07-23 18:17:03 UTC (rev 91637)
+++ trunk/Source/WebCore/ChangeLog 2011-07-23 18:44:55 UTC (rev 91638)
@@ -1,3 +1,21 @@
+2011-07-23 Alok Priyadarshi <[email protected]>
+
+ Switching off acceleration for small canvas broke gpu tests
+ https://bugs.webkit.org/show_bug.cgi?id=65053
+
+ Reviewed by Stephen White.
+
+ No new tests. These are supposed to fix existing canvas tests on gpu.
+
+ * html/canvas/CanvasRenderingContext2D.cpp:
+ (WebCore::shouldAccelerateCanvas):
+ * page/Settings.cpp:
+ (WebCore::Settings::Settings):
+ (WebCore::Settings::setLegacyAccelerated2dCanvasEnabled):
+ (WebCore::Settings::setMinimumAccelerated2dCanvasSize):
+ * page/Settings.h:
+ (WebCore::Settings::minimumAccelerated2dCanvasSize):
+
2011-07-23 Rob Buis <[email protected]>
Freed SVGTRefElement used in SVGStyledElement::buildPendingResourcesIfNeeded
Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp (91637 => 91638)
--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp 2011-07-23 18:17:03 UTC (rev 91637)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp 2011-07-23 18:44:55 UTC (rev 91638)
@@ -98,11 +98,6 @@
}
#if ENABLE(ACCELERATED_2D_CANVAS)
-// Number of pixels in a canvas below which we use software
-// rendering. This is obviously an arbitrary number. A more precise
-// number would depend on machine architecture and canvas contents.
-static const int numPixelsThreshold = 128 * 128;
-
static bool shouldAccelerateCanvas(const HTMLCanvasElement* canvas)
{
const Page* page = canvas->document()->page();
@@ -114,10 +109,7 @@
return false;
// Do not use acceleration for small canvas.
- // For every accelerated canvas there is an extra back-buffer and a texture copy.
- // Small canvases are also widely used for stylized fonts. Anti-aliasing
- // text in hardware at that scale is generally slower.
- if (canvas->width() * canvas->height() < numPixelsThreshold)
+ if (canvas->width() * canvas->height() < settings->minimumAccelerated2dCanvasSize())
return false;
return true;
Modified: trunk/Source/WebCore/page/Settings.cpp (91637 => 91638)
--- trunk/Source/WebCore/page/Settings.cpp 2011-07-23 18:17:03 UTC (rev 91637)
+++ trunk/Source/WebCore/page/Settings.cpp 2011-07-23 18:44:55 UTC (rev 91638)
@@ -111,6 +111,7 @@
, m_defaultFontSize(0)
, m_defaultFixedFontSize(0)
, m_validationMessageTimerMagnification(50)
+ , m_minimumAccelerated2dCanvasSize(128 * 128)
, m_maximumDecodedImageSize(numeric_limits<size_t>::max())
#if ENABLE(DOM_STORAGE)
, m_sessionStorageQuota(StorageMap::noQuota)
@@ -773,6 +774,11 @@
m_legacyAcceleratedCanvas2dEnabled = enabled;
}
+void Settings::setMinimumAccelerated2dCanvasSize(int numPixels)
+{
+ m_minimumAccelerated2dCanvasSize = numPixels;
+}
+
void Settings::setLoadDeferringEnabled(bool enabled)
{
m_loadDeferringEnabled = enabled;
Modified: trunk/Source/WebCore/page/Settings.h (91637 => 91638)
--- trunk/Source/WebCore/page/Settings.h 2011-07-23 18:17:03 UTC (rev 91637)
+++ trunk/Source/WebCore/page/Settings.h 2011-07-23 18:44:55 UTC (rev 91638)
@@ -359,6 +359,17 @@
void setLegacyAccelerated2dCanvasEnabled(bool);
bool legacyAccelerated2dCanvasEnabled() const { return m_legacyAcceleratedCanvas2dEnabled; }
+ // Number of pixels below which 2D canvas is rendered in software
+ // even if hardware acceleration is enabled.
+ // Hardware acceleration is useful for large canvases where it can avoid the
+ // pixel bandwidth between the CPU and GPU. But GPU acceleration comes at
+ // a price - extra back-buffer and texture copy. Small canvases are also
+ // widely used for stylized fonts. Anti-aliasing text in hardware at that
+ // scale is generally slower. So below a certain size it is better to
+ // draw canvas in software.
+ void setMinimumAccelerated2dCanvasSize(int);
+ int minimumAccelerated2dCanvasSize() const { return m_minimumAccelerated2dCanvasSize; }
+
void setLoadDeferringEnabled(bool);
bool loadDeferringEnabled() const { return m_loadDeferringEnabled; }
@@ -458,6 +469,7 @@
int m_defaultFontSize;
int m_defaultFixedFontSize;
int m_validationMessageTimerMagnification;
+ int m_minimumAccelerated2dCanvasSize;
size_t m_maximumDecodedImageSize;
#if ENABLE(DOM_STORAGE)
unsigned m_sessionStorageQuota;
Modified: trunk/Source/WebKit/chromium/ChangeLog (91637 => 91638)
--- trunk/Source/WebKit/chromium/ChangeLog 2011-07-23 18:17:03 UTC (rev 91637)
+++ trunk/Source/WebKit/chromium/ChangeLog 2011-07-23 18:44:55 UTC (rev 91638)
@@ -1,3 +1,15 @@
+2011-07-23 Alok Priyadarshi <[email protected]>
+
+ Switching off acceleration for small canvas broke gpu tests
+ https://bugs.webkit.org/show_bug.cgi?id=65053
+
+ Reviewed by Stephen White.
+
+ * public/WebSettings.h:
+ * src/WebSettingsImpl.cpp:
+ (WebKit::WebSettingsImpl::setMinimumAccelerated2dCanvasSize):
+ * src/WebSettingsImpl.h:
+
2011-07-23 Yuta Kitamura <[email protected]>
[Chromium] Turn on new WebSocket protocol in worker shadow page
Modified: trunk/Source/WebKit/chromium/public/WebSettings.h (91637 => 91638)
--- trunk/Source/WebKit/chromium/public/WebSettings.h 2011-07-23 18:17:03 UTC (rev 91637)
+++ trunk/Source/WebKit/chromium/public/WebSettings.h 2011-07-23 18:44:55 UTC (rev 91638)
@@ -112,6 +112,7 @@
virtual void setAcceleratedCompositingForAnimationEnabled(bool) = 0;
virtual void setAccelerated2dCanvasEnabled(bool) = 0;
virtual void setLegacyAccelerated2dCanvasEnabled(bool) = 0;
+ virtual void setMinimumAccelerated2dCanvasSize(int) = 0;
virtual void setAcceleratedDrawingEnabled(bool) = 0;
virtual void setMemoryInfoEnabled(bool) = 0;
virtual void setHyperlinkAuditingEnabled(bool) = 0;
Modified: trunk/Source/WebKit/chromium/src/WebSettingsImpl.cpp (91637 => 91638)
--- trunk/Source/WebKit/chromium/src/WebSettingsImpl.cpp 2011-07-23 18:17:03 UTC (rev 91637)
+++ trunk/Source/WebKit/chromium/src/WebSettingsImpl.cpp 2011-07-23 18:44:55 UTC (rev 91638)
@@ -363,6 +363,11 @@
m_settings->setLegacyAccelerated2dCanvasEnabled(enabled);
}
+void WebSettingsImpl::setMinimumAccelerated2dCanvasSize(int numPixels)
+{
+ m_settings->setMinimumAccelerated2dCanvasSize(numPixels);
+}
+
void WebSettingsImpl::setMemoryInfoEnabled(bool enabled)
{
m_settings->setMemoryInfoEnabled(enabled);
Modified: trunk/Source/WebKit/chromium/src/WebSettingsImpl.h (91637 => 91638)
--- trunk/Source/WebKit/chromium/src/WebSettingsImpl.h 2011-07-23 18:17:03 UTC (rev 91637)
+++ trunk/Source/WebKit/chromium/src/WebSettingsImpl.h 2011-07-23 18:44:55 UTC (rev 91638)
@@ -105,6 +105,7 @@
virtual void setAcceleratedCompositingForAnimationEnabled(bool);
virtual void setAccelerated2dCanvasEnabled(bool);
virtual void setLegacyAccelerated2dCanvasEnabled(bool);
+ virtual void setMinimumAccelerated2dCanvasSize(int);
virtual void setAcceleratedDrawingEnabled(bool);
virtual void setMemoryInfoEnabled(bool);
virtual void setHyperlinkAuditingEnabled(bool);
Modified: trunk/Tools/ChangeLog (91637 => 91638)
--- trunk/Tools/ChangeLog 2011-07-23 18:17:03 UTC (rev 91637)
+++ trunk/Tools/ChangeLog 2011-07-23 18:44:55 UTC (rev 91638)
@@ -1,3 +1,15 @@
+2011-07-23 Alok Priyadarshi <[email protected]>
+
+ Switching off acceleration for small canvas broke gpu tests
+ https://bugs.webkit.org/show_bug.cgi?id=65053
+
+ Reviewed by Stephen White.
+
+ * DumpRenderTree/chromium/WebPreferences.cpp:
+ (WebPreferences::reset):
+ (WebPreferences::applyTo):
+ * DumpRenderTree/chromium/WebPreferences.h:
+
2011-07-23 Keith Kyzivat <[email protected]>
[Qt] Add option to turn on disk caching in QtTestBrowser
Modified: trunk/Tools/DumpRenderTree/chromium/WebPreferences.cpp (91637 => 91638)
--- trunk/Tools/DumpRenderTree/chromium/WebPreferences.cpp 2011-07-23 18:17:03 UTC (rev 91637)
+++ trunk/Tools/DumpRenderTree/chromium/WebPreferences.cpp 2011-07-23 18:44:55 UTC (rev 91638)
@@ -67,6 +67,9 @@
defaultFixedFontSize = 13;
minimumFontSize = 0;
minimumLogicalFontSize = 9;
+ // Do not disable acceleration for 2d canvas based on size.
+ // This makes having test expectations consistent.
+ minimumAccelerated2dCanvasSize = 0;
DOMPasteAllowed = true;
XSSAuditorEnabled = false;
@@ -127,6 +130,7 @@
settings->setDefaultFixedFontSize(defaultFixedFontSize);
settings->setMinimumFontSize(minimumFontSize);
settings->setMinimumLogicalFontSize(minimumLogicalFontSize);
+ settings->setMinimumAccelerated2dCanvasSize(minimumAccelerated2dCanvasSize);
settings->setDOMPasteAllowed(DOMPasteAllowed);
settings->setXSSAuditorEnabled(XSSAuditorEnabled);
Modified: trunk/Tools/DumpRenderTree/chromium/WebPreferences.h (91637 => 91638)
--- trunk/Tools/DumpRenderTree/chromium/WebPreferences.h 2011-07-23 18:17:03 UTC (rev 91637)
+++ trunk/Tools/DumpRenderTree/chromium/WebPreferences.h 2011-07-23 18:44:55 UTC (rev 91638)
@@ -51,6 +51,7 @@
int defaultFixedFontSize;
int minimumFontSize;
int minimumLogicalFontSize;
+ int minimumAccelerated2dCanvasSize;
bool DOMPasteAllowed;
bool XSSAuditorEnabled;