Title: [91638] trunk
Revision
91638
Author
[email protected]
Date
2011-07-23 11:44:55 -0700 (Sat, 23 Jul 2011)

Log Message

Switching off acceleration for small canvas broke gpu tests
https://bugs.webkit.org/show_bug.cgi?id=65053

Reviewed by Stephen White.

Source/WebCore:

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):

Source/WebKit/chromium:

* public/WebSettings.h:
* src/WebSettingsImpl.cpp:
(WebKit::WebSettingsImpl::setMinimumAccelerated2dCanvasSize):
* src/WebSettingsImpl.h:

Tools:

* DumpRenderTree/chromium/WebPreferences.cpp:
(WebPreferences::reset):
(WebPreferences::applyTo):
* DumpRenderTree/chromium/WebPreferences.h:

Modified Paths

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;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to