Title: [269084] trunk/Source
Revision
269084
Author
s...@apple.com
Date
2020-10-27 18:36:51 -0700 (Tue, 27 Oct 2020)

Log Message

Make RenderingMode a bool enum and remove ShouldAccelerate
https://bugs.webkit.org/show_bug.cgi?id=218264

Reviewed by Tim Horton.

Source/WebCore:

Convert RenderingMode back to be a bool enum. ShouldAccelerate will be
removed so no conversion from RenderingMode to ShouldAccelerate and vice
versa is needed anymore. Only one instance of ImageBuffer::create() will
be handling creating the remote and display list ImageBuffers.

-- Remove unused createImageBuffer() method in HostWindow and ChromeClient.
-- Remove unused argument 'ShouldUseDisplayList' from createImageBuffer()
   of HostWindow, ChromeClient and WebChromeClient.

* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::createImageBuffer const):
* html/HTMLVideoElement.cpp:
(WebCore::HTMLVideoElement::createBufferForPainting const):
* html/HTMLVideoElement.h:
* html/ImageBitmap.cpp:
(WebCore::ImageBitmap::createPromise):
* html/canvas/CanvasRenderingContext2DBase.cpp:
(WebCore::CanvasRenderingContext2DBase::createPattern):
* page/Chrome.cpp:
(WebCore::Chrome::createImageBuffer const):
* page/Chrome.h:
* page/ChromeClient.h:
(WebCore::ChromeClient::createImageBuffer const):
* platform/HostWindow.h:
* platform/graphics/ImageBuffer.cpp:
(WebCore::ImageBuffer::create):
* platform/graphics/ImageBuffer.h:
* platform/graphics/RenderingMode.h:

Source/WebKit:

When creating a remote ImageBuffer in WebKit, all we need to know is whether
the backend is accelerated or not. RemoteImageBufferProxy has to be backed
by a DisplayList. RemoteImageBuffer has to own the real backend. Two enum
values for RenderingMode is sufficient for creating the remote ImageBuffer.

* GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::createImageBuffer):
* GPUProcess/graphics/RemoteRenderingBackend.h:
* Shared/WebCoreArgumentCoders.h:
* WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::createImageBuffer):
* WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::createImageBuffer const):
* WebProcess/WebCoreSupport/WebChromeClient.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (269083 => 269084)


--- trunk/Source/WebCore/ChangeLog	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebCore/ChangeLog	2020-10-28 01:36:51 UTC (rev 269084)
@@ -1,3 +1,39 @@
+2020-10-27  Said Abou-Hallawa  <s...@apple.com>
+
+        Make RenderingMode a bool enum and remove ShouldAccelerate
+        https://bugs.webkit.org/show_bug.cgi?id=218264
+
+        Reviewed by Tim Horton.
+
+        Convert RenderingMode back to be a bool enum. ShouldAccelerate will be
+        removed so no conversion from RenderingMode to ShouldAccelerate and vice
+        versa is needed anymore. Only one instance of ImageBuffer::create() will
+        be handling creating the remote and display list ImageBuffers.
+
+        -- Remove unused createImageBuffer() method in HostWindow and ChromeClient.
+        -- Remove unused argument 'ShouldUseDisplayList' from createImageBuffer()
+           of HostWindow, ChromeClient and WebChromeClient.
+
+        * html/HTMLCanvasElement.cpp:
+        (WebCore::HTMLCanvasElement::createImageBuffer const):
+        * html/HTMLVideoElement.cpp:
+        (WebCore::HTMLVideoElement::createBufferForPainting const):
+        * html/HTMLVideoElement.h:
+        * html/ImageBitmap.cpp:
+        (WebCore::ImageBitmap::createPromise):
+        * html/canvas/CanvasRenderingContext2DBase.cpp:
+        (WebCore::CanvasRenderingContext2DBase::createPattern):
+        * page/Chrome.cpp:
+        (WebCore::Chrome::createImageBuffer const):
+        * page/Chrome.h:
+        * page/ChromeClient.h:
+        (WebCore::ChromeClient::createImageBuffer const):
+        * platform/HostWindow.h:
+        * platform/graphics/ImageBuffer.cpp:
+        (WebCore::ImageBuffer::create):
+        * platform/graphics/ImageBuffer.h:
+        * platform/graphics/RenderingMode.h:
+
 2020-10-27  Chris Dumez  <cdu...@apple.com>
 
         AudioBuffer.getChannelData(x) should keep returning the same JS wrapper for a given channel

Modified: trunk/Source/WebCore/html/HTMLCanvasElement.cpp (269083 => 269084)


--- trunk/Source/WebCore/html/HTMLCanvasElement.cpp	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebCore/html/HTMLCanvasElement.cpp	2020-10-28 01:36:51 UTC (rev 269084)
@@ -936,10 +936,10 @@
 
     auto hostWindow = (document().view() && document().view()->root()) ? document().view()->root()->hostWindow() : nullptr;
 
-    auto accelerate = shouldAccelerate(size()) ? ShouldAccelerate::Yes : ShouldAccelerate::No;
+    auto renderingMode = shouldAccelerate(size()) ? RenderingMode::Accelerated : RenderingMode::Unaccelerated;
     // FIXME: Add a new setting for DisplayList drawing on canvas.
     auto useDisplayList = m_usesDisplayListDrawing.valueOr(document().settings().displayListDrawingEnabled()) ? ShouldUseDisplayList::Yes : ShouldUseDisplayList::No;
-    setImageBuffer(ImageBuffer::create(size(), accelerate, useDisplayList, RenderingPurpose::Canvas, 1, ColorSpace::SRGB, hostWindow));
+    setImageBuffer(ImageBuffer::create(size(), renderingMode, useDisplayList, RenderingPurpose::Canvas, 1, ColorSpace::SRGB, hostWindow));
 
     if (buffer() && buffer()->drawingContext())
         buffer()->drawingContext()->setTracksDisplayListReplay(m_tracksDisplayListReplay);

Modified: trunk/Source/WebCore/html/HTMLVideoElement.cpp (269083 => 269084)


--- trunk/Source/WebCore/html/HTMLVideoElement.cpp	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebCore/html/HTMLVideoElement.cpp	2020-10-28 01:36:51 UTC (rev 269084)
@@ -291,11 +291,11 @@
         setDisplayMode(Poster);
 }
 
-std::unique_ptr<ImageBuffer> HTMLVideoElement::createBufferForPainting(const FloatSize& size, ShouldAccelerate shouldAccelerate) const
+std::unique_ptr<ImageBuffer> HTMLVideoElement::createBufferForPainting(const FloatSize& size, RenderingMode renderingMode) const
 {
     auto* hostWindow = document().view() && document().view()->root() ? document().view()->root()->hostWindow() : nullptr;
     auto shouldUseDisplayList = document().settings().displayListDrawingEnabled() ? ShouldUseDisplayList::Yes : ShouldUseDisplayList::No;
-    return ImageBuffer::create(size, shouldAccelerate, shouldUseDisplayList, RenderingPurpose::MediaPainting, 1, ColorSpace::SRGB, hostWindow);
+    return ImageBuffer::create(size, renderingMode, shouldUseDisplayList, RenderingPurpose::MediaPainting, 1, ColorSpace::SRGB, hostWindow);
 }
 
 void HTMLVideoElement::paintCurrentFrameInContext(GraphicsContext& context, const FloatRect& destRect)

Modified: trunk/Source/WebCore/html/HTMLVideoElement.h (269083 => 269084)


--- trunk/Source/WebCore/html/HTMLVideoElement.h	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebCore/html/HTMLVideoElement.h	2020-10-28 01:36:51 UTC (rev 269084)
@@ -38,7 +38,7 @@
 class RenderVideo;
 class PictureInPictureObserver;
 
-enum class ShouldAccelerate : bool;
+enum class RenderingMode : bool;
 
 class HTMLVideoElement final : public HTMLMediaElement, public Supplementable<HTMLVideoElement> {
     WTF_MAKE_ISO_ALLOCATED(HTMLVideoElement);
@@ -70,7 +70,7 @@
     void webkitRequestFullscreen() override;
 #endif
 
-    std::unique_ptr<ImageBuffer> createBufferForPainting(const FloatSize&, ShouldAccelerate) const;
+    std::unique_ptr<ImageBuffer> createBufferForPainting(const FloatSize&, RenderingMode) const;
 
     // Used by canvas to gain raw pixel access
     void paintCurrentFrameInContext(GraphicsContext&, const FloatRect&);

Modified: trunk/Source/WebCore/html/ImageBitmap.cpp (269083 => 269084)


--- trunk/Source/WebCore/html/ImageBitmap.cpp	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebCore/html/ImageBitmap.cpp	2020-10-28 01:36:51 UTC (rev 269084)
@@ -487,7 +487,7 @@
     auto sourceRectangle = maybeSourceRectangle.releaseReturnValue();
 
     auto outputSize = outputSizeForSourceRectangle(sourceRectangle, options);
-    auto bitmapData = video->createBufferForPainting(outputSize, bufferRenderingMode == RenderingMode::Accelerated ? ShouldAccelerate::Yes : ShouldAccelerate::No);
+    auto bitmapData = video->createBufferForPainting(outputSize, bufferRenderingMode);
     if (!bitmapData) {
         resolveWithBlankImageBuffer(!taintsOrigin(scriptExecutionContext.securityOrigin(), *video), WTFMove(promise));
         return;

Modified: trunk/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp (269083 => 269084)


--- trunk/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp	2020-10-28 01:36:51 UTC (rev 269084)
@@ -1945,8 +1945,8 @@
         return RefPtr<CanvasPattern> { CanvasPattern::create(BitmapImage::create(WTFMove(nativeImage)), repeatX, repeatY, originClean) };
 #endif
 
-    auto shouldAccelerate = !drawingContext() || drawingContext()->isAcceleratedContext() ? ShouldAccelerate::Yes : ShouldAccelerate::No;
-    auto imageBuffer = videoElement.createBufferForPainting(size(videoElement), shouldAccelerate);
+    auto renderingMode = !drawingContext() || drawingContext()->isAcceleratedContext() ? RenderingMode::Accelerated : RenderingMode::Unaccelerated;
+    auto imageBuffer = videoElement.createBufferForPainting(size(videoElement), renderingMode);
     if (!imageBuffer)
         return nullptr;
 

Modified: trunk/Source/WebCore/page/Chrome.cpp (269083 => 269084)


--- trunk/Source/WebCore/page/Chrome.cpp	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebCore/page/Chrome.cpp	2020-10-28 01:36:51 UTC (rev 269084)
@@ -523,16 +523,11 @@
     m_client.setCursorHiddenUntilMouseMoves(hiddenUntilMouseMoves);
 }
 
-std::unique_ptr<ImageBuffer> Chrome::createImageBuffer(const FloatSize& size, ShouldAccelerate shouldAccelerate, ShouldUseDisplayList shouldUseDisplayList, RenderingPurpose purpose, float resolutionScale, ColorSpace colorSpace) const
+std::unique_ptr<ImageBuffer> Chrome::createImageBuffer(const FloatSize& size, RenderingMode renderingMode, RenderingPurpose purpose, float resolutionScale, ColorSpace colorSpace) const
 {
-    return m_client.createImageBuffer(size, shouldAccelerate, shouldUseDisplayList, purpose, resolutionScale, colorSpace);
+    return m_client.createImageBuffer(size, renderingMode, purpose, resolutionScale, colorSpace);
 }
 
-std::unique_ptr<ImageBuffer> Chrome::createImageBuffer(const FloatSize& size, RenderingMode renderingMode, float resolutionScale, ColorSpace colorSpace) const
-{
-    return m_client.createImageBuffer(size, renderingMode, resolutionScale, colorSpace);
-}
-
 PlatformDisplayID Chrome::displayID() const
 {
     return m_page.displayID();

Modified: trunk/Source/WebCore/page/Chrome.h (269083 => 269084)


--- trunk/Source/WebCore/page/Chrome.h	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebCore/page/Chrome.h	2020-10-28 01:36:51 UTC (rev 269084)
@@ -84,8 +84,7 @@
     void setCursor(const Cursor&) override;
     void setCursorHiddenUntilMouseMoves(bool) override;
 
-    std::unique_ptr<ImageBuffer> createImageBuffer(const FloatSize&, ShouldAccelerate, ShouldUseDisplayList, RenderingPurpose, float resolutionScale, ColorSpace) const override;
-    std::unique_ptr<ImageBuffer> createImageBuffer(const FloatSize&, RenderingMode, float resolutionScale, ColorSpace) const override;
+    std::unique_ptr<ImageBuffer> createImageBuffer(const FloatSize&, RenderingMode, RenderingPurpose, float resolutionScale, ColorSpace) const override;
 
     PlatformDisplayID displayID() const override;
     void windowScreenDidChange(PlatformDisplayID, Optional<unsigned>) override;

Modified: trunk/Source/WebCore/page/ChromeClient.h (269083 => 269084)


--- trunk/Source/WebCore/page/ChromeClient.h	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebCore/page/ChromeClient.h	2020-10-28 01:36:51 UTC (rev 269084)
@@ -323,8 +323,7 @@
 
     virtual RefPtr<DisplayRefreshMonitor> createDisplayRefreshMonitor(PlatformDisplayID) const { return nullptr; }
 
-    virtual std::unique_ptr<ImageBuffer> createImageBuffer(const FloatSize&, ShouldAccelerate, ShouldUseDisplayList, RenderingPurpose, float, ColorSpace) const { return nullptr; }
-    virtual std::unique_ptr<ImageBuffer> createImageBuffer(const FloatSize&, RenderingMode, float, ColorSpace) const { return nullptr; }
+    virtual std::unique_ptr<ImageBuffer> createImageBuffer(const FloatSize&, RenderingMode, RenderingPurpose, float, ColorSpace) const { return nullptr; }
 
     // Pass nullptr as the GraphicsLayer to detatch the root layer.
     virtual void attachRootGraphicsLayer(Frame&, GraphicsLayer*) = 0;

Modified: trunk/Source/WebCore/platform/HostWindow.h (269083 => 269084)


--- trunk/Source/WebCore/platform/HostWindow.h	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebCore/platform/HostWindow.h	2020-10-28 01:36:51 UTC (rev 269084)
@@ -33,9 +33,7 @@
 class ImageBuffer;
 
 enum class ColorSpace : uint8_t;
-enum class RenderingMode : uint8_t;
-enum class ShouldAccelerate : bool;
-enum class ShouldUseDisplayList : bool;
+enum class RenderingMode : bool;
 enum class RenderingPurpose : uint8_t;
 
 class HostWindow {
@@ -62,8 +60,7 @@
     virtual IntPoint accessibilityScreenToRootView(const IntPoint&) const = 0;
     virtual IntRect rootViewToAccessibilityScreen(const IntRect&) const = 0;
 
-    virtual std::unique_ptr<ImageBuffer> createImageBuffer(const FloatSize&, ShouldAccelerate, ShouldUseDisplayList, RenderingPurpose, float resolutionScale, ColorSpace) const = 0;
-    virtual std::unique_ptr<ImageBuffer> createImageBuffer(const FloatSize&, RenderingMode, float resolutionScale, ColorSpace) const = 0;
+    virtual std::unique_ptr<ImageBuffer> createImageBuffer(const FloatSize&, RenderingMode, RenderingPurpose, float resolutionScale, ColorSpace) const = 0;
 
     // Method for retrieving the native client of the page.
     virtual PlatformPageClient platformPageClient() const = 0;

Modified: trunk/Source/WebCore/platform/graphics/ImageBuffer.cpp (269083 => 269084)


--- trunk/Source/WebCore/platform/graphics/ImageBuffer.cpp	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebCore/platform/graphics/ImageBuffer.cpp	2020-10-28 01:36:51 UTC (rev 269084)
@@ -38,21 +38,23 @@
 static const float MaxClampedLength = 4096;
 static const float MaxClampedArea = MaxClampedLength * MaxClampedLength;
 
-std::unique_ptr<ImageBuffer> ImageBuffer::create(const FloatSize& size, ShouldAccelerate shouldAccelerate, ShouldUseDisplayList shouldUseDisplayList, RenderingPurpose purpose, float resolutionScale, ColorSpace colorSpace, const HostWindow* hostWindow)
+std::unique_ptr<ImageBuffer> ImageBuffer::create(const FloatSize& size, RenderingMode renderingMode, ShouldUseDisplayList shouldUseDisplayList, RenderingPurpose purpose, float resolutionScale, ColorSpace colorSpace, const HostWindow* hostWindow)
 {
     std::unique_ptr<ImageBuffer> imageBuffer;
     if (hostWindow)
-        imageBuffer = hostWindow->createImageBuffer(size, shouldAccelerate, shouldUseDisplayList, purpose, resolutionScale, colorSpace);
+        imageBuffer = hostWindow->createImageBuffer(size, renderingMode, purpose, resolutionScale, colorSpace);
 
-    if (!imageBuffer) {
-        RenderingMode mode;
-        if (shouldUseDisplayList == ShouldUseDisplayList::Yes)
-            mode = shouldAccelerate == ShouldAccelerate::Yes ? RenderingMode::DisplayListAccelerated : RenderingMode::DisplayListUnaccelerated;
-        else
-            mode = shouldAccelerate == ShouldAccelerate::Yes ? RenderingMode::Accelerated : RenderingMode::Unaccelerated;
-        imageBuffer = ImageBuffer::create(size, mode, resolutionScale, colorSpace, hostWindow);
+    if (!imageBuffer && shouldUseDisplayList == ShouldUseDisplayList::Yes) {
+        if (renderingMode == RenderingMode::Accelerated)
+            imageBuffer = DisplayListAcceleratedImageBuffer::create(size, resolutionScale, colorSpace, hostWindow);
+        
+        if (!imageBuffer)
+            imageBuffer = DisplayListUnacceleratedImageBuffer::create(size, resolutionScale, colorSpace, hostWindow);
     }
 
+    if (!imageBuffer)
+        imageBuffer = ImageBuffer::create(size, renderingMode, resolutionScale, colorSpace, hostWindow);
+
     return imageBuffer;
 }
 
@@ -59,31 +61,13 @@
 std::unique_ptr<ImageBuffer> ImageBuffer::create(const FloatSize& size, RenderingMode renderingMode, float resolutionScale, ColorSpace colorSpace, const HostWindow* hostWindow)
 {
     std::unique_ptr<ImageBuffer> imageBuffer;
-
-    switch (renderingMode) {
-    case RenderingMode::Accelerated:
+    
+    if (renderingMode == RenderingMode::Accelerated)
         imageBuffer = AcceleratedImageBuffer::create(size, resolutionScale, colorSpace, hostWindow);
-        FALLTHROUGH;
-    case RenderingMode::Unaccelerated:
-        if (!imageBuffer)
-            imageBuffer = UnacceleratedImageBuffer::create(size, resolutionScale, colorSpace, hostWindow);
-        break;
+    
+    if (!imageBuffer)
+        imageBuffer = UnacceleratedImageBuffer::create(size, resolutionScale, colorSpace, hostWindow);
 
-    case RenderingMode::DisplayListAccelerated:
-        imageBuffer = DisplayListAcceleratedImageBuffer::create(size, resolutionScale, colorSpace, hostWindow);
-        FALLTHROUGH;
-    case RenderingMode::DisplayListUnaccelerated:
-        if (!imageBuffer)
-            imageBuffer = DisplayListUnacceleratedImageBuffer::create(size, resolutionScale, colorSpace, hostWindow);
-        break;
-
-    case RenderingMode::RemoteAccelerated:
-    case RenderingMode::RemoteUnaccelerated:
-        if (hostWindow)
-            imageBuffer = hostWindow->createImageBuffer(size, renderingMode, resolutionScale, colorSpace);
-        break;
-    }
-
     return imageBuffer;
 }
 
@@ -90,30 +74,13 @@
 std::unique_ptr<ImageBuffer> ImageBuffer::create(const FloatSize& size, const GraphicsContext& context)
 {
     std::unique_ptr<ImageBuffer> imageBuffer;
-
-    switch (context.renderingMode()) {
-    case RenderingMode::Accelerated:
+    
+    if (context.renderingMode() == RenderingMode::Accelerated)
         imageBuffer = AcceleratedImageBuffer::create(size, context);
-        FALLTHROUGH;
-    case RenderingMode::Unaccelerated:
-        if (!imageBuffer)
-            imageBuffer = UnacceleratedImageBuffer::create(size, context);
-        break;
+    
+    if (!imageBuffer)
+        imageBuffer = UnacceleratedImageBuffer::create(size, context);
 
-    case RenderingMode::DisplayListAccelerated:
-        imageBuffer = DisplayListAcceleratedImageBuffer::create(size, context);
-        FALLTHROUGH;
-    case RenderingMode::DisplayListUnaccelerated:
-        if (!imageBuffer)
-            imageBuffer = DisplayListUnacceleratedImageBuffer::create(size, context);
-        break;
-
-    case RenderingMode::RemoteUnaccelerated:
-    case RenderingMode::RemoteAccelerated:
-        ASSERT_NOT_REACHED();
-        break;
-    }
-
     return imageBuffer;
 }
 

Modified: trunk/Source/WebCore/platform/graphics/ImageBuffer.h (269083 => 269084)


--- trunk/Source/WebCore/platform/graphics/ImageBuffer.h	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebCore/platform/graphics/ImageBuffer.h	2020-10-28 01:36:51 UTC (rev 269084)
@@ -41,7 +41,7 @@
 class ImageBuffer {
 public:
     // Will return a null pointer on allocation failure.
-    WEBCORE_EXPORT static std::unique_ptr<ImageBuffer> create(const FloatSize&, ShouldAccelerate, ShouldUseDisplayList, RenderingPurpose, float resolutionScale = 1, ColorSpace = ColorSpace::SRGB, const HostWindow* = nullptr);
+    WEBCORE_EXPORT static std::unique_ptr<ImageBuffer> create(const FloatSize&, RenderingMode, ShouldUseDisplayList, RenderingPurpose, float resolutionScale = 1, ColorSpace = ColorSpace::SRGB, const HostWindow* = nullptr);
     WEBCORE_EXPORT static std::unique_ptr<ImageBuffer> create(const FloatSize&, RenderingMode, float resolutionScale = 1, ColorSpace = ColorSpace::SRGB, const HostWindow* = nullptr);
     static std::unique_ptr<ImageBuffer> create(const FloatSize&, const GraphicsContext&);
 

Modified: trunk/Source/WebCore/platform/graphics/RenderingMode.h (269083 => 269084)


--- trunk/Source/WebCore/platform/graphics/RenderingMode.h	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebCore/platform/graphics/RenderingMode.h	2020-10-28 01:36:51 UTC (rev 269084)
@@ -33,16 +33,7 @@
     MediaPainting
 };
 
-enum class ShouldAccelerate : bool { No, Yes };
 enum class ShouldUseDisplayList : bool { No, Yes };
+enum class RenderingMode : bool { Unaccelerated, Accelerated };
 
-enum class RenderingMode : uint8_t {
-    Accelerated,
-    Unaccelerated,
-    DisplayListAccelerated,
-    DisplayListUnaccelerated,
-    RemoteAccelerated,
-    RemoteUnaccelerated
-};
-
 } // namespace WebCore

Modified: trunk/Source/WebKit/ChangeLog (269083 => 269084)


--- trunk/Source/WebKit/ChangeLog	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebKit/ChangeLog	2020-10-28 01:36:51 UTC (rev 269084)
@@ -1,3 +1,26 @@
+2020-10-27  Said Abou-Hallawa  <s...@apple.com>
+
+        Make RenderingMode a bool enum and remove ShouldAccelerate
+        https://bugs.webkit.org/show_bug.cgi?id=218264
+
+        Reviewed by Tim Horton.
+
+        When creating a remote ImageBuffer in WebKit, all we need to know is whether
+        the backend is accelerated or not. RemoteImageBufferProxy has to be backed
+        by a DisplayList. RemoteImageBuffer has to own the real backend. Two enum
+        values for RenderingMode is sufficient for creating the remote ImageBuffer.
+
+        * GPUProcess/graphics/RemoteRenderingBackend.cpp:
+        (WebKit::RemoteRenderingBackend::createImageBuffer):
+        * GPUProcess/graphics/RemoteRenderingBackend.h:
+        * Shared/WebCoreArgumentCoders.h:
+        * WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
+        (WebKit::RemoteRenderingBackendProxy::createImageBuffer):
+        * WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
+        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
+        (WebKit::WebChromeClient::createImageBuffer const):
+        * WebProcess/WebCoreSupport/WebChromeClient.h:
+
 2020-10-27  Tim Horton  <timothy_hor...@apple.com>
 
         Adopt the UIPointerInteraction API

Modified: trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp (269083 => 269084)


--- trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp	2020-10-28 01:36:51 UTC (rev 269084)
@@ -122,11 +122,11 @@
 
 void RemoteRenderingBackend::createImageBuffer(const FloatSize& logicalSize, RenderingMode renderingMode, float resolutionScale, ColorSpace colorSpace, WebCore::RenderingResourceIdentifier renderingResourceIdentifier)
 {
-    ASSERT(renderingMode == RenderingMode::RemoteAccelerated || renderingMode == RenderingMode::RemoteUnaccelerated);
+    ASSERT(renderingMode == RenderingMode::Accelerated || renderingMode == RenderingMode::Unaccelerated);
 
     std::unique_ptr<WebCore::ImageBuffer> image;
 
-    if (renderingMode == RenderingMode::RemoteAccelerated)
+    if (renderingMode == RenderingMode::Accelerated)
         image = AcceleratedRemoteImageBuffer::create(logicalSize, resolutionScale, colorSpace, *this, renderingResourceIdentifier);
 
     if (!image)

Modified: trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h (269083 => 269084)


--- trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h	2020-10-28 01:36:51 UTC (rev 269084)
@@ -46,7 +46,7 @@
 }
 class FloatSize;
 enum class ColorSpace : uint8_t;
-enum class RenderingMode : uint8_t;
+enum class RenderingMode : bool;
 }
 
 namespace WebKit {

Modified: trunk/Source/WebKit/Shared/WebCoreArgumentCoders.h (269083 => 269084)


--- trunk/Source/WebKit/Shared/WebCoreArgumentCoders.h	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebKit/Shared/WebCoreArgumentCoders.h	2020-10-28 01:36:51 UTC (rev 269084)
@@ -889,12 +889,8 @@
 template<> struct EnumTraits<WebCore::RenderingMode> {
     using values = EnumValues<
     WebCore::RenderingMode,
-    WebCore::RenderingMode::Accelerated,
     WebCore::RenderingMode::Unaccelerated,
-    WebCore::RenderingMode::DisplayListAccelerated,
-    WebCore::RenderingMode::DisplayListUnaccelerated,
-    WebCore::RenderingMode::RemoteAccelerated,
-    WebCore::RenderingMode::RemoteUnaccelerated
+    WebCore::RenderingMode::Accelerated
     >;
 };
 

Modified: trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp (269083 => 269084)


--- trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp	2020-10-28 01:36:51 UTC (rev 269084)
@@ -87,20 +87,15 @@
     return connection->waitForAndDispatchImmediately<Messages::RemoteRenderingBackendProxy::FlushDisplayListWasCommitted>(m_renderingBackendIdentifier, 1_s, IPC::WaitForOption::InterruptWaitingIfSyncMessageArrives);
 }
 
-std::unique_ptr<ImageBuffer> RemoteRenderingBackendProxy::createImageBuffer(const FloatSize& size, ShouldAccelerate shouldAccelerate, float resolutionScale, ColorSpace colorSpace)
+std::unique_ptr<ImageBuffer> RemoteRenderingBackendProxy::createImageBuffer(const FloatSize& size, RenderingMode renderingMode, float resolutionScale, ColorSpace colorSpace)
 {
-    RenderingMode renderingMode;
     std::unique_ptr<WebCore::ImageBuffer> imageBuffer;
 
-    if (shouldAccelerate == ShouldAccelerate::Yes) {
-        renderingMode = RenderingMode::RemoteAccelerated;
+    if (renderingMode == RenderingMode::Accelerated)
         imageBuffer = AcceleratedRemoteImageBufferProxy::create(size, resolutionScale, *this);
-    }
 
-    if (!imageBuffer) {
-        renderingMode = RenderingMode::RemoteUnaccelerated;
+    if (!imageBuffer)
         imageBuffer = UnacceleratedRemoteImageBufferProxy::create(size, resolutionScale, *this);
-    }
 
     if (imageBuffer) {
         send(Messages::RemoteRenderingBackend::CreateImageBuffer(size, renderingMode, resolutionScale, colorSpace, imageBuffer->renderingResourceIdentifier()), m_renderingBackendIdentifier);

Modified: trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h (269083 => 269084)


--- trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h	2020-10-28 01:36:51 UTC (rev 269084)
@@ -45,8 +45,7 @@
 class ImageData;
 enum class AlphaPremultiplication : uint8_t;
 enum class ColorSpace : uint8_t;
-enum class RenderingMode : uint8_t;
-enum class ShouldAccelerate : bool;
+enum class RenderingMode : bool;
 }
 
 namespace WebKit {
@@ -70,7 +69,7 @@
     void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override;
 
     // Messages to be sent.
-    std::unique_ptr<WebCore::ImageBuffer> createImageBuffer(const WebCore::FloatSize&, WebCore::ShouldAccelerate, float resolutionScale, WebCore::ColorSpace);
+    std::unique_ptr<WebCore::ImageBuffer> createImageBuffer(const WebCore::FloatSize&, WebCore::RenderingMode, float resolutionScale, WebCore::ColorSpace);
     RefPtr<WebCore::ImageData> getImageData(WebCore::AlphaPremultiplication outputFormat, const WebCore::IntRect& srcRect, WebCore::RenderingResourceIdentifier);
     void flushDisplayList(const WebCore::DisplayList::DisplayList&, WebCore::RenderingResourceIdentifier);
     DisplayListFlushIdentifier flushDisplayListAndCommit(const WebCore::DisplayList::DisplayList&, WebCore::RenderingResourceIdentifier);

Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp (269083 => 269084)


--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp	2020-10-28 01:36:51 UTC (rev 269084)
@@ -906,12 +906,12 @@
     return *m_remoteRenderingBackendProxy;
 }
 
-std::unique_ptr<ImageBuffer> WebChromeClient::createImageBuffer(const FloatSize& size, ShouldAccelerate shouldAccelerate, ShouldUseDisplayList shouldUseDisplayList, RenderingPurpose purpose, float resolutionScale, ColorSpace colorSpace) const
+std::unique_ptr<ImageBuffer> WebChromeClient::createImageBuffer(const FloatSize& size, RenderingMode renderingMode, RenderingPurpose purpose, float resolutionScale, ColorSpace colorSpace) const
 {
     if (!m_page.shouldUseRemoteRenderingFor(purpose))
         return nullptr;
 
-    return ensureRemoteRenderingBackendProxy().createImageBuffer(size, shouldAccelerate, resolutionScale, colorSpace);
+    return ensureRemoteRenderingBackendProxy().createImageBuffer(size, renderingMode, resolutionScale, colorSpace);
 }
 
 #endif // ENABLE(GPU_PROCESS)

Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h (269083 => 269084)


--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h	2020-10-28 01:00:35 UTC (rev 269083)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h	2020-10-28 01:36:51 UTC (rev 269084)
@@ -244,7 +244,7 @@
 
 #if ENABLE(GPU_PROCESS)
     RemoteRenderingBackendProxy& ensureRemoteRenderingBackendProxy() const;
-    std::unique_ptr<WebCore::ImageBuffer> createImageBuffer(const WebCore::FloatSize&, WebCore::ShouldAccelerate, WebCore::ShouldUseDisplayList, WebCore::RenderingPurpose, float resolutionScale, WebCore::ColorSpace) const final;
+    std::unique_ptr<WebCore::ImageBuffer> createImageBuffer(const WebCore::FloatSize&, WebCore::RenderingMode, WebCore::RenderingPurpose, float resolutionScale, WebCore::ColorSpace) const final;
 #endif
 
     CompositingTriggerFlags allowedCompositingTriggers() const final
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to