Changeset 257730 in webkit
- Timestamp:
- Mar 2, 2020 1:12:40 PM (4 years ago)
- Location:
- trunk/Source
- Files:
-
- 5 added
- 22 edited
- 4 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r257729 r257730 1 2020-03-02 Said Abou-Hallawa <sabouhallawa@apple.com> 2 3 Implement the remote ImageBuffer 4 https://bugs.webkit.org/show_bug.cgi?id=207221 5 6 Reviewed by Jon Lee. 7 8 * WebCore.xcodeproj/project.pbxproj: 9 * platform/graphics/ConcreteImageBuffer.h: 10 (WebCore::ConcreteImageBuffer::create): 11 ConcreteImageBuffer::create returns the derived class which it creates. 12 13 * platform/graphics/displaylists/DisplayList.h: 14 This using statement gives compilation error when referencing DisplayList 15 from WebKit. 16 17 * platform/graphics/displaylists/DisplayListDrawingContext.h: 18 RemoteImageBuffer inherits DisplayList::ImageBuffer so these methods 19 need to be exported. 20 21 * platform/graphics/displaylists/DisplayListImageBuffer.h: 22 (WebCore::DisplayList::ImageBuffer::ImageBuffer): 23 Make it possible for RemoteImageBuffer to be created with no backend. It 24 will be created later when RemoteImageBufferProxy shares its backend with 25 RemoteImageBuffer. 26 1 27 2020-03-02 Rob Buis <rbuis@igalia.com> 2 28 -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r257697 r257730 1748 1748 5576A5651D88A70800CCC04C /* ImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 5576A5631D88A70800CCC04C /* ImageFrame.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1749 1749 55A336F91D821E3C0022C4C7 /* ImageBackingStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 55A336F81D821E3C0022C4C7 /* ImageBackingStore.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1750 55AD093E2408963500DE4D2F /* DisplayListImageBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 72EA09F723FCCB3D008504A5 /* DisplayListImageBuffer.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1751 55AD09402408964000DE4D2F /* DisplayListDrawingContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 72EA09F923FCCC6A008504A5 /* DisplayListDrawingContext.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1752 55AD09412408964A00DE4D2F /* ConcreteImageBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 72BAC3A723E17328008D741C /* ConcreteImageBuffer.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1750 1753 55AF14E61EAAC59B0026EEAA /* UTIRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 55AF14E41EAAC59B0026EEAA /* UTIRegistry.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1751 1754 55DCC52822407B2000C26E32 /* SVGPrimitiveList.h in Headers */ = {isa = PBXBuildFile; fileRef = 55DCC5252240749E00C26E32 /* SVGPrimitiveList.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 29373 29376 2DD5A7271EBEE47D009BA597 /* CompositionUnderline.h in Headers */, 29374 29377 7116E2CC1FED75DC00C06FDE /* ComputedEffectTiming.h in Headers */, 29378 55AD09412408964A00DE4D2F /* ConcreteImageBuffer.h in Headers */, 29375 29379 FD31608F12B026F700C1A359 /* Cone.h in Headers */, 29376 29380 65C97AF308EA908800ACD273 /* config.h in Headers */, … … 29718 29722 6FB47E632277425A00C7BCB0 /* DisplayLineBox.h in Headers */, 29719 29723 0FE5FBD31C3DD51E0007A2CA /* DisplayList.h in Headers */, 29724 55AD09402408964000DE4D2F /* DisplayListDrawingContext.h in Headers */, 29725 55AD093E2408963500DE4D2F /* DisplayListImageBuffer.h in Headers */, 29720 29726 0FE5FBD51C3DD51E0007A2CA /* DisplayListItems.h in Headers */, 29721 29727 0FE5FBD71C3DD51E0007A2CA /* DisplayListRecorder.h in Headers */, -
trunk/Source/WebCore/platform/graphics/ConcreteImageBuffer.h
r257156 r257730 35 35 public: 36 36 template<typename ImageBufferType = ConcreteImageBuffer, typename... Arguments> 37 static std::unique_ptr<ImageBuffer > create(const FloatSize& size, float resolutionScale, ColorSpace colorSpace, const HostWindow* hostWindow, Arguments&&... arguments)37 static std::unique_ptr<ImageBufferType> create(const FloatSize& size, float resolutionScale, ColorSpace colorSpace, const HostWindow* hostWindow, Arguments&&... arguments) 38 38 { 39 39 auto backend = BackendType::create(size, resolutionScale, colorSpace, hostWindow); … … 44 44 45 45 template<typename ImageBufferType = ConcreteImageBuffer, typename... Arguments> 46 static std::unique_ptr<ImageBuffer > create(const FloatSize& size, const GraphicsContext& context, Arguments&&... arguments)46 static std::unique_ptr<ImageBufferType> create(const FloatSize& size, const GraphicsContext& context, Arguments&&... arguments) 47 47 { 48 48 auto backend = BackendType::create(size, context); -
trunk/Source/WebCore/platform/graphics/displaylists/DisplayList.h
r253417 r257730 178 178 } 179 179 180 void clear();180 WEBCORE_EXPORT void clear(); 181 181 void removeItemsFromIndex(size_t); 182 182 … … 252 252 253 253 } // WebCore 254 255 using WebCore::DisplayList::DisplayList;256 -
trunk/Source/WebCore/platform/graphics/displaylists/DisplayListDrawingContext.h
r257156 r257730 34 34 class DrawingContext { 35 35 public: 36 DrawingContext(const FloatSize& logicalSize);36 WEBCORE_EXPORT DrawingContext(const FloatSize& logicalSize); 37 37 38 38 GraphicsContext& context() const { return const_cast<DrawingContext&>(*this).m_context; } … … 41 41 const DisplayList* replayedDisplayList() const { return m_replayedDisplayList.get(); } 42 42 43 void setTracksDisplayListReplay(bool);44 void replayDisplayList(GraphicsContext&);43 WEBCORE_EXPORT void setTracksDisplayListReplay(bool); 44 WEBCORE_EXPORT void replayDisplayList(GraphicsContext&); 45 45 46 46 protected: -
trunk/Source/WebCore/platform/graphics/displaylists/DisplayListImageBuffer.h
r257156 r257730 53 53 } 54 54 55 ImageBuffer(const FloatSize& size) 56 : m_drawingContext(size) 57 { 58 } 59 55 60 ~ImageBuffer() 56 61 { -
trunk/Source/WebKit/ChangeLog
r257726 r257730 1 2020-03-02 Said Abou-Hallawa <sabouhallawa@apple.com> 2 3 Implement the remote ImageBuffer 4 https://bugs.webkit.org/show_bug.cgi?id=207221 5 6 Reviewed by Jon Lee. 7 8 RemoteImageBuffer and RemoteImageBufferProxy represent a single remote 9 ImageBuffer. The back end should be created by RemoteImageBufferProxy in 10 GPUProcess and shared with the RemoteImageBuffer in the WebProcess. 11 Flushing the DrawingContext will be done in GPUProcess. But creating the 12 native image out of the back end will be in GPUProcess. 13 14 RemoteRenderingBackend and RemoteRenderingBackendProxy are central points 15 for receiving and sending all the messages of the RemoteImageBuffer and 16 RemoteImageBufferProxy. 17 18 * GPUProcess/graphics/PlatformRemoteImageBufferProxy.h: Added. 19 Defines the platform types of RemoteImageBufferProxy. 20 21 * GPUProcess/graphics/RemoteImageBufferMessageHandlerProxy.cpp: Added. 22 (WebKit::RemoteImageBufferMessageHandlerProxy::RemoteImageBufferMessageHandlerProxy): 23 (WebKit::RemoteImageBufferMessageHandlerProxy::createBackend): 24 (WebKit::RemoteImageBufferMessageHandlerProxy::commitFlushContext): 25 * GPUProcess/graphics/RemoteImageBufferMessageHandlerProxy.h: Added. 26 Manages sending and receiving the messages of RemoteImageBufferProxy 27 28 * GPUProcess/graphics/RemoteImageBufferProxy.h: Added. 29 (WebKit::RemoteImageBufferProxy::create): 30 (WebKit::RemoteImageBufferProxy::RemoteImageBufferProxy): 31 It is responsible for creating a shared back end and replaying back drawing 32 commands. 33 34 * GPUProcess/graphics/RemoteRenderingBackendProxy.cpp: 35 (WebKit::RemoteRenderingBackendProxy::createImageBuffer): 36 (WebKit::RemoteRenderingBackendProxy::releaseImageBuffer): 37 (WebKit::RemoteRenderingBackendProxy::flushImageBufferDrawingContext): 38 * GPUProcess/graphics/RemoteRenderingBackendProxy.h: 39 (WebKit::RemoteRenderingBackendProxy::renderingBackendIdentifier const): 40 * GPUProcess/graphics/RemoteRenderingBackendProxy.messages.in: 41 Handle or dispatch messages received from RemoteRenderingBackend. 42 43 * Scripts/webkit/messages.py: 44 * Sources.txt: 45 * WebKit.xcodeproj/project.pbxproj: 46 * WebProcess/GPU/graphics/ImageBufferFlushIdentifier.h: Added. 47 48 * WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp: 49 (WebKit::ImageBufferShareableBitmapBackend::create): 50 * WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.h: 51 Although hostWindow isn't used, this is what ConcreteImageBuffer::create 52 expects from the creator of the backend. 53 54 * WebProcess/GPU/graphics/PlatformRemoteImageBuffer.h: Added. 55 Defines the platform types of RemoteImageBuffer. 56 57 * WebProcess/GPU/graphics/RemoteImageBuffer.h: Added. 58 (WebKit::RemoteImageBuffer::create): 59 (WebKit::RemoteImageBuffer::RemoteImageBuffer): 60 It is responsible for creating RemoteImageBufferProxy and performing the 61 drawing commands in the GPUProcess. 62 63 * WebProcess/GPU/graphics/RemoteImageBufferMessageHandler.cpp: Added. 64 (WebKit::RemoteImageBufferMessageHandler::RemoteImageBufferMessageHandler): 65 (WebKit::RemoteImageBufferMessageHandler::~RemoteImageBufferMessageHandler): 66 (WebKit::RemoteImageBufferMessageHandler::flushDrawingContext): 67 (WebKit::RemoteImageBufferMessageHandler::commitFlushContext): 68 * WebProcess/GPU/graphics/RemoteImageBufferMessageHandler.h: Added. 69 (WebKit::RemoteImageBufferMessageHandler::imageBufferIdentifier const): 70 Manages sending and receiving the messages of RemoteImageBuffer. 71 72 * WebProcess/GPU/graphics/RemoteRenderingBackend.cpp: 73 (WebKit::RemoteRenderingBackend::createImageBuffer): 74 (WebKit::RemoteRenderingBackend::releaseImageBuffer): 75 (WebKit::RemoteRenderingBackend::createImageBufferBackend): 76 (WebKit::RemoteRenderingBackend::commitImageBufferFlushContext): 77 * WebProcess/GPU/graphics/RemoteRenderingBackend.h: 78 (WebKit::RemoteRenderingBackend::renderingBackendIdentifier const): 79 * WebProcess/GPU/graphics/RemoteRenderingBackend.messages.in: 80 Handle or dispatch messages received from RemoteRenderingBackendProxy. 81 82 * WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.cpp: 83 (WebKit::ImageBufferShareableIOSurfaceBackend::create): 84 * WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.h: 85 Although hostWindow isn't used, this is what ConcreteImageBuffer::create 86 expects from the creator of the backend. 87 1 88 2020-03-02 John Wilander <wilander@apple.com> 2 89 -
trunk/Source/WebKit/GPUProcess/graphics/PlatformRemoteImageBufferProxy.h
r257729 r257730 1 1 /* 2 * Copyright (C) 2020 Apple Inc. All rights reserved.2 * Copyright (C) 2020 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 26 26 #pragma once 27 27 28 #include "DisplayList.h" 29 #include "GraphicsContext.h" 28 #if ENABLE(GPU_PROCESS) 30 29 31 namespace WebCore { 32 namespace DisplayList { 30 #include "PlatformImageBufferShareableBackend.h" 31 #include "RemoteImageBufferProxy.h" 33 32 34 class DrawingContext { 35 public: 36 DrawingContext(const FloatSize& logicalSize); 33 namespace WebKit { 37 34 38 GraphicsContext& context() const { return const_cast<DrawingContext&>(*this).m_context; } 39 DisplayList& displayList() { return m_displayList; } 40 const DisplayList& displayList() const { return m_displayList; } 41 const DisplayList* replayedDisplayList() const { return m_replayedDisplayList.get(); } 35 using UnacceleratedRemoteImageBufferProxy = RemoteImageBufferProxy<UnacceleratedImageBufferShareableBackend>; 36 using AcceleratedRemoteImageBufferProxy = RemoteImageBufferProxy<AcceleratedImageBufferShareableBackend>; 42 37 43 void setTracksDisplayListReplay(bool); 44 void replayDisplayList(GraphicsContext&); 38 } // namespace WebKit 45 39 46 protected: 47 GraphicsContext m_context; 48 DisplayList m_displayList; 49 std::unique_ptr<DisplayList> m_replayedDisplayList; 50 bool m_tracksDisplayListReplay { false }; 51 }; 52 53 } // DisplayList 54 } // WebCore 40 #endif // ENABLE(GPU_PROCESS) -
trunk/Source/WebKit/GPUProcess/graphics/RemoteImageBufferMessageHandlerProxy.h
r257729 r257730 27 27 28 28 #if ENABLE(GPU_PROCESS) 29 #if HAVE(IOSURFACE)30 29 31 30 #include "ImageBufferBackendHandle.h" 32 #include <WebCore/ImageBufferIOSurfaceBackend.h> 33 #include <wtf/IsoMalloc.h> 31 #include "ImageBufferIdentifier.h" 32 #include <WebCore/ColorSpace.h> 33 #include <WebCore/DisplayList.h> 34 #include <WebCore/FloatSize.h> 34 35 35 36 namespace WebKit { 36 37 37 class ShareableBitmap;38 class RemoteRenderingBackendProxy; 38 39 39 class ImageBufferShareableIOSurfaceBackend : public WebCore::ImageBufferIOSurfaceBackend { 40 WTF_MAKE_ISO_ALLOCATED(ImageBufferShareableIOSurfaceBackend); 41 WTF_MAKE_NONCOPYABLE(ImageBufferShareableIOSurfaceBackend); 40 class RemoteImageBufferMessageHandlerProxy { 42 41 public: 43 static std::unique_ptr<ImageBufferShareableIOSurfaceBackend> create(const WebCore::FloatSize& logicalSize, const float resolutionScale, WebCore::ColorSpace); 44 static std::unique_ptr<ImageBufferShareableIOSurfaceBackend> create(const WebCore::FloatSize& logicalSize, const WebCore::IntSize& internalSize, float resolutionScale, WebCore::ColorSpace, ImageBufferBackendHandle); 42 virtual ~RemoteImageBufferMessageHandlerProxy() = default; 45 43 46 using WebCore::ImageBufferIOSurfaceBackend::ImageBufferIOSurfaceBackend; 44 // Messages to be received. See RemoteRenderingBackendProxy.messages.in. 45 virtual void flushDrawingContext(const WebCore::DisplayList::DisplayList&, ImageBufferFlushIdentifier) = 0; 47 46 48 ImageBufferBackendHandle createImageBufferBackendHandle() const; 47 protected: 48 RemoteImageBufferMessageHandlerProxy(RemoteRenderingBackendProxy&, ImageBufferIdentifier); 49 50 // Messages to be sent. See RemoteRenderingBackend.messages.in. 51 void createBackend(const WebCore::FloatSize& logicalSize, const WebCore::IntSize& backendSize, float resolutionScale, WebCore::ColorSpace, ImageBufferBackendHandle); 52 void commitFlushContext(ImageBufferFlushIdentifier); 53 54 private: 55 RemoteRenderingBackendProxy& m_remoteRenderingBackendProxy; 56 ImageBufferIdentifier m_imageBufferIdentifier; 49 57 }; 50 58 51 59 } // namespace WebKit 52 60 53 #endif // HAVE(IOSURFACE)54 61 #endif // ENABLE(GPU_PROCESS) -
trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackendProxy.cpp
r257542 r257730 29 29 #if ENABLE(GPU_PROCESS) 30 30 31 #include "PlatformRemoteImageBufferProxy.h" 31 32 #include "RemoteRenderingBackendProxyMessages.h" 32 33 … … 71 72 return; 72 73 73 if (m_imageBufferM ap.contains(imageBufferIdentifier)) {74 if (m_imageBufferMessageHandlerMap.contains(imageBufferIdentifier)) { 74 75 ASSERT_NOT_REACHED(); 75 76 return; 76 77 } 77 78 78 std::unique_ptr<ImageBuffer> imageBuffer; 79 80 switch (renderingMode) { 81 case RenderingMode::RemoteAccelerated: 82 case RenderingMode::RemoteUnaccelerated: 83 // FIXME: create the remote ImageBuffer proxy. 84 default: 85 ASSERT_NOT_REACHED(); 79 if (renderingMode == RenderingMode::RemoteAccelerated) { 80 if (auto imageBuffer = AcceleratedRemoteImageBufferProxy::create(logicalSize, resolutionScale, colorSpace, *this, imageBufferIdentifier)) { 81 m_imageBufferMessageHandlerMap.add(imageBufferIdentifier, WTFMove(imageBuffer)); 82 return; 83 } 86 84 } 87 85 88 if (!imageBuffer) 89 return; 86 if (renderingMode == RenderingMode::RemoteAccelerated || renderingMode == RenderingMode::RemoteUnaccelerated) { 87 if (auto imageBuffer = UnacceleratedRemoteImageBufferProxy::create(logicalSize, resolutionScale, colorSpace, *this, imageBufferIdentifier)) { 88 m_imageBufferMessageHandlerMap.add(imageBufferIdentifier, WTFMove(imageBuffer)); 89 return; 90 } 91 } 90 92 91 m_imageBufferMap.add(imageBufferIdentifier, WTFMove(imageBuffer));93 ASSERT_NOT_REACHED(); 92 94 } 93 95 … … 95 97 { 96 98 // CreateImageBuffer message should have been received before this one. 97 bool found = m_imageBufferM ap.remove(imageBufferIdentifier);99 bool found = m_imageBufferMessageHandlerMap.remove(imageBufferIdentifier); 98 100 ASSERT_UNUSED(found, found); 101 } 102 103 void RemoteRenderingBackendProxy::flushImageBufferDrawingContext(const WebCore::DisplayList::DisplayList& displayList, ImageBufferFlushIdentifier flushIdentifier, ImageBufferIdentifier imageBufferIdentifier) 104 { 105 if (auto imageBuffer = m_imageBufferMessageHandlerMap.get(imageBufferIdentifier)) 106 imageBuffer->flushDrawingContext(displayList, flushIdentifier); 99 107 } 100 108 -
trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackendProxy.h
r257583 r257730 29 29 30 30 #include "Connection.h" 31 #include "ImageBufferFlushIdentifier.h" 31 32 #include "ImageBufferIdentifier.h" 32 33 #include "MessageReceiver.h" 33 34 #include "MessageSender.h" 35 #include "RemoteImageBufferMessageHandlerProxy.h" 34 36 #include "RenderingBackendIdentifier.h" 35 37 #include <WebCore/ColorSpace.h> 38 #include <WebCore/DisplayListItems.h> 36 39 #include <WebCore/FloatSize.h> 37 #include <WebCore/ImageBuffer.h>38 40 #include <WebCore/RenderingMode.h> 39 41 #include <wtf/HashMap.h> … … 45 47 46 48 class RemoteRenderingBackendProxy 47 : p rivateIPC::MessageSender49 : public IPC::MessageSender 48 50 , private IPC::MessageReceiver { 49 51 public: 50 52 static std::unique_ptr<RemoteRenderingBackendProxy> create(GPUConnectionToWebProcess&, RenderingBackendIdentifier); 51 53 virtual ~RemoteRenderingBackendProxy(); 54 55 RenderingBackendIdentifier renderingBackendIdentifier() const { return m_renderingBackendIdentifier; } 52 56 53 57 private: … … 61 65 void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override; 62 66 67 // Messages to be received. 63 68 void createImageBuffer(const WebCore::FloatSize& logicalSize, WebCore::RenderingMode, float resolutionScale, WebCore::ColorSpace, ImageBufferIdentifier); 64 69 void releaseImageBuffer(ImageBufferIdentifier); 70 void flushImageBufferDrawingContext(const WebCore::DisplayList::DisplayList&, ImageBufferFlushIdentifier, ImageBufferIdentifier); 65 71 66 using ImageBufferM ap = HashMap<ImageBufferIdentifier, std::unique_ptr<WebCore::ImageBuffer>>;67 ImageBufferM ap m_imageBufferMap;72 using ImageBufferMessageHandlerMap = HashMap<ImageBufferIdentifier, std::unique_ptr<RemoteImageBufferMessageHandlerProxy>>; 73 ImageBufferMessageHandlerMap m_imageBufferMessageHandlerMap; 68 74 WeakPtr<GPUConnectionToWebProcess> m_gpuConnectionToWebProcess; 69 75 RenderingBackendIdentifier m_renderingBackendIdentifier; -
trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackendProxy.messages.in
r257542 r257730 26 26 void CreateImageBuffer(WebCore::FloatSize logicalSize, WebCore::RenderingMode renderingMode, float resolutionScale, WebCore::ColorSpace colorSpace, WebKit::ImageBufferIdentifier imageBufferIdentifier) 27 27 void ReleaseImageBuffer(WebKit::ImageBufferIdentifier imageBufferIdentifier) 28 void FlushImageBufferDrawingContext(WebCore::DisplayList::DisplayList displayList, WebKit::ImageBufferFlushIdentifier flushIdentifier, WebKit::ImageBufferIdentifier imageBufferIdentifier) 28 29 } 29 30 -
trunk/Source/WebKit/Scripts/webkit/messages.py
r257612 r257730 226 226 'WebKit::AudioMediaStreamTrackRendererIdentifier', 227 227 'WebKit::ContentWorldIdentifier', 228 'WebKit::ImageBufferBackendHandle', 229 'WebKit::ImageBufferFlushIdentifier', 228 230 'WebKit::ImageBufferIdentifier', 229 231 'WebKit::LayerHostingContextID', -
trunk/Source/WebKit/Sources.txt
r257606 r257730 25 25 GPUProcess/GPUConnectionToWebProcess.cpp 26 26 GPUProcess/GPUProcessCreationParameters.cpp 27 GPUProcess/graphics/RemoteImageBufferMessageHandlerProxy.cpp 27 28 GPUProcess/graphics/RemoteRenderingBackendProxy.cpp 28 29 GPUProcess/media/RemoteAudioTrackProxy.cpp … … 536 537 WebProcess/GPU/GPUProcessConnection.cpp 537 538 WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp 539 WebProcess/GPU/graphics/RemoteImageBufferMessageHandler.cpp 538 540 WebProcess/GPU/graphics/RemoteRenderingBackend.cpp 539 541 WebProcess/GPU/media/AudioTrackPrivateRemote.cpp -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r257680 r257730 3819 3819 550640A424071C2100AAE045 /* RemoteRenderingBackendProxy.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = RemoteRenderingBackendProxy.messages.in; sourceTree = "<group>"; }; 3820 3820 550640A524071CC000AAE045 /* ImageBufferIdentifier.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ImageBufferIdentifier.h; sourceTree = "<group>"; }; 3821 55AD09422408A02E00DE4D2F /* RemoteImageBufferProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteImageBufferProxy.h; sourceTree = "<group>"; }; 3822 55AD09432408A0E600DE4D2F /* PlatformRemoteImageBufferProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlatformRemoteImageBufferProxy.h; sourceTree = "<group>"; }; 3823 55AD09442408ABB300DE4D2F /* ImageBufferFlushIdentifier.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ImageBufferFlushIdentifier.h; sourceTree = "<group>"; }; 3821 3824 570AB8F220AE3BD700B8BE87 /* SecKeyProxyStore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SecKeyProxyStore.h; sourceTree = "<group>"; }; 3822 3825 570AB90020B2517400B8BE87 /* AuthenticationChallengeProxyCocoa.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = AuthenticationChallengeProxyCocoa.mm; sourceTree = "<group>"; }; … … 4082 4085 71A676A522C62318007D6295 /* WKTouchActionGestureRecognizer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKTouchActionGestureRecognizer.mm; path = ios/WKTouchActionGestureRecognizer.mm; sourceTree = "<group>"; }; 4083 4086 71FB810A2260627A00323677 /* WebsiteSimulatedMouseEventsDispatchPolicy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebsiteSimulatedMouseEventsDispatchPolicy.h; sourceTree = "<group>"; }; 4087 7227800B2408BD7D007D376B /* PlatformRemoteImageBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlatformRemoteImageBuffer.h; sourceTree = "<group>"; }; 4088 7227800C24097A02007D376B /* RemoteImageBufferMessageHandler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteImageBufferMessageHandler.cpp; sourceTree = "<group>"; }; 4089 7227800D24097A02007D376B /* RemoteImageBufferMessageHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteImageBufferMessageHandler.h; sourceTree = "<group>"; }; 4090 722780112409906E007D376B /* RemoteImageBufferMessageHandlerProxy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteImageBufferMessageHandlerProxy.cpp; sourceTree = "<group>"; }; 4091 722780122409906E007D376B /* RemoteImageBufferMessageHandlerProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteImageBufferMessageHandlerProxy.h; sourceTree = "<group>"; }; 4084 4092 727A7F342407857D004D2931 /* ImageBufferShareableIOSurfaceBackend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageBufferShareableIOSurfaceBackend.cpp; sourceTree = "<group>"; }; 4085 4093 727A7F352407857F004D2931 /* ImageBufferShareableIOSurfaceBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageBufferShareableIOSurfaceBackend.h; sourceTree = "<group>"; }; … … 4088 4096 727A7F38240788F0004D2931 /* PlatformImageBufferShareableBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformImageBufferShareableBackend.h; sourceTree = "<group>"; }; 4089 4097 727A7F39240788F1004D2931 /* ImageBufferBackendHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageBufferBackendHandle.h; sourceTree = "<group>"; }; 4098 727A7F492408AEE6004D2931 /* RemoteImageBuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteImageBuffer.h; sourceTree = "<group>"; }; 4090 4099 728E86EF1795188C0087879E /* WebColorPickerMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebColorPickerMac.h; sourceTree = "<group>"; }; 4091 4100 728E86F01795188C0087879E /* WebColorPickerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebColorPickerMac.mm; sourceTree = "<group>"; }; … … 7746 7755 727A7F3324078527004D2931 /* cocoa */, 7747 7756 727A7F39240788F1004D2931 /* ImageBufferBackendHandle.h */, 7757 55AD09442408ABB300DE4D2F /* ImageBufferFlushIdentifier.h */, 7748 7758 550640A524071CC000AAE045 /* ImageBufferIdentifier.h */, 7749 7759 727A7F37240788F0004D2931 /* ImageBufferShareableBitmapBackend.cpp */, 7750 7760 727A7F36240788F0004D2931 /* ImageBufferShareableBitmapBackend.h */, 7751 7761 727A7F38240788F0004D2931 /* PlatformImageBufferShareableBackend.h */, 7762 7227800B2408BD7D007D376B /* PlatformRemoteImageBuffer.h */, 7763 727A7F492408AEE6004D2931 /* RemoteImageBuffer.h */, 7764 7227800C24097A02007D376B /* RemoteImageBufferMessageHandler.cpp */, 7765 7227800D24097A02007D376B /* RemoteImageBufferMessageHandler.h */, 7752 7766 5506409D2407160900AAE045 /* RemoteRenderingBackend.cpp */, 7753 7767 5506409E2407160900AAE045 /* RemoteRenderingBackend.h */, … … 7761 7775 isa = PBXGroup; 7762 7776 children = ( 7777 55AD09432408A0E600DE4D2F /* PlatformRemoteImageBufferProxy.h */, 7778 722780112409906E007D376B /* RemoteImageBufferMessageHandlerProxy.cpp */, 7779 722780122409906E007D376B /* RemoteImageBufferMessageHandlerProxy.h */, 7780 55AD09422408A02E00DE4D2F /* RemoteImageBufferProxy.h */, 7763 7781 550640A224071A6100AAE045 /* RemoteRenderingBackendProxy.cpp */, 7764 7782 550640A324071A6100AAE045 /* RemoteRenderingBackendProxy.h */, -
trunk/Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.cpp
r257606 r257730 43 43 WTF_MAKE_ISO_ALLOCATED_IMPL(ImageBufferShareableBitmapBackend); 44 44 45 std::unique_ptr<ImageBufferShareableBitmapBackend> ImageBufferShareableBitmapBackend::create(const FloatSize& size, float resolutionScale, ColorSpace colorSpace )45 std::unique_ptr<ImageBufferShareableBitmapBackend> ImageBufferShareableBitmapBackend::create(const FloatSize& size, float resolutionScale, ColorSpace colorSpace, const HostWindow*) 46 46 { 47 47 IntSize backendSize = calculateBackendSize(size, resolutionScale); -
trunk/Source/WebKit/WebProcess/GPU/graphics/ImageBufferShareableBitmapBackend.h
r257606 r257730 40 40 WTF_MAKE_NONCOPYABLE(ImageBufferShareableBitmapBackend); 41 41 public: 42 static std::unique_ptr<ImageBufferShareableBitmapBackend> create(const WebCore::FloatSize& logicalSize, const float resolutionScale, WebCore::ColorSpace );42 static std::unique_ptr<ImageBufferShareableBitmapBackend> create(const WebCore::FloatSize& logicalSize, const float resolutionScale, WebCore::ColorSpace, const WebCore::HostWindow*); 43 43 static std::unique_ptr<ImageBufferShareableBitmapBackend> create(const WebCore::FloatSize& logicalSize, const WebCore::IntSize& internalSize, float resolutionScale, WebCore::ColorSpace, ImageBufferBackendHandle); 44 44 -
trunk/Source/WebKit/WebProcess/GPU/graphics/PlatformRemoteImageBuffer.h
r257729 r257730 1 1 /* 2 * Copyright (C) 2020 Apple Inc. All rights reserved.2 * Copyright (C) 2020 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 26 26 #pragma once 27 27 28 #include "DisplayList.h" 29 #include "GraphicsContext.h" 28 #if ENABLE(GPU_PROCESS) 30 29 31 namespace WebCore { 32 namespace DisplayList { 30 #include "PlatformImageBufferShareableBackend.h" 31 #include "RemoteImageBuffer.h" 33 32 34 class DrawingContext { 35 public: 36 DrawingContext(const FloatSize& logicalSize); 33 namespace WebKit { 37 34 38 GraphicsContext& context() const { return const_cast<DrawingContext&>(*this).m_context; } 39 DisplayList& displayList() { return m_displayList; } 40 const DisplayList& displayList() const { return m_displayList; } 41 const DisplayList* replayedDisplayList() const { return m_replayedDisplayList.get(); } 35 using UnacceleratedRemoteImageBuffer = RemoteImageBuffer<UnacceleratedImageBufferShareableBackend>; 36 using AcceleratedRemoteImageBuffer = RemoteImageBuffer<AcceleratedImageBufferShareableBackend>; 42 37 43 void setTracksDisplayListReplay(bool); 44 void replayDisplayList(GraphicsContext&); 38 } // namespace WebKit 45 39 46 protected: 47 GraphicsContext m_context; 48 DisplayList m_displayList; 49 std::unique_ptr<DisplayList> m_replayedDisplayList; 50 bool m_tracksDisplayListReplay { false }; 51 }; 52 53 } // DisplayList 54 } // WebCore 40 #endif // ENABLE(GPU_PROCESS) -
trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferMessageHandler.h
r257729 r257730 1 1 /* 2 * Copyright (C) 2020 Apple Inc. All rights reserved.2 * Copyright (C) 2020 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 28 28 #if ENABLE(GPU_PROCESS) 29 29 30 #include "ImageBufferFlushIdentifier.h" 30 31 #include "ImageBufferIdentifier.h" 31 #include "MessageReceiver.h"32 #include "MessageSender.h"33 #include "RenderingBackendIdentifier.h"34 32 #include <WebCore/ColorSpace.h> 33 #include <WebCore/DisplayList.h> 35 34 #include <WebCore/FloatSize.h> 36 #include <WebCore/ImageBuffer.h>37 35 #include <WebCore/RenderingMode.h> 38 #include <wtf/HashMap.h>39 36 40 37 namespace WebKit { 41 38 42 class RemoteRenderingBackend 43 : private IPC::MessageSender 44 , private IPC::MessageReceiver {39 class RemoteRenderingBackend; 40 41 class RemoteImageBufferMessageHandler { 45 42 public: 46 static std::unique_ptr<RemoteRenderingBackend> create();43 virtual ~RemoteImageBufferMessageHandler(); 47 44 48 ~RemoteRenderingBackend();45 ImageBufferIdentifier imageBufferIdentifier() const { return m_imageBufferIdentifier; } 49 46 50 // IPC::MessageSender. 51 IPC::Connection* messageSenderConnection() const override; 52 uint64_t messageSenderDestinationID() const override; 47 // Messages to be received. See RemoteRenderingBackend.messages.in. 48 virtual void createBackend(const WebCore::FloatSize& logicalSize, const WebCore::IntSize& backendSize, float resolutionScale, WebCore::ColorSpace, ImageBufferBackendHandle) = 0; 53 49 54 std::unique_ptr<WebCore::ImageBuffer> createImageBuffer(const WebCore::FloatSize&, WebCore::RenderingMode, float resolutionScale, WebCore::ColorSpace); 55 void releaseImageBuffer(ImageBufferIdentifier); 50 void commitFlushContext(ImageBufferFlushIdentifier); 51 52 protected: 53 RemoteImageBufferMessageHandler(const WebCore::FloatSize&, WebCore::RenderingMode, float resolutionScale, WebCore::ColorSpace, RemoteRenderingBackend&); 54 55 // Messages to be sent. See RemoteRenderingBackendProxy.messages.in. 56 void flushDrawingContext(const WebCore::DisplayList::DisplayList&); 56 57 57 58 private: 58 RemoteRenderingBackend();59 60 using ImageBufferMap = HashMap<ImageBufferIdentifier, WebCore::ImageBuffer*>; 61 ImageBuffer Map m_imageBufferMap;62 RenderingBackendIdentifier m_renderingBackendIdentifier { RenderingBackendIdentifier::generate() };59 WeakPtr<RemoteRenderingBackend> m_remoteRenderingBackend; 60 ImageBufferIdentifier m_imageBufferIdentifier { ImageBufferIdentifier::generate() }; 61 62 ImageBufferFlushIdentifier m_sentFlushIdentifier; 63 ImageBufferFlushIdentifier m_receivedFlushIdentifier; 63 64 }; 64 65 -
trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackend.cpp
r257542 r257730 30 30 31 31 #include "GPUProcessConnection.h" 32 #include "PlatformRemoteImageBuffer.h" 32 33 #include "RemoteRenderingBackendMessages.h" 33 34 #include "RemoteRenderingBackendProxyMessages.h" … … 72 73 } 73 74 74 std::unique_ptr<ImageBuffer> RemoteRenderingBackend::createImageBuffer(const FloatSize& , RenderingMode renderingMode, float, ColorSpace)75 std::unique_ptr<ImageBuffer> RemoteRenderingBackend::createImageBuffer(const FloatSize& size, RenderingMode renderingMode, float resolutionScale, ColorSpace colorSpace) 75 76 { 76 switch (renderingMode) { 77 case RenderingMode::RemoteAccelerated: 78 case RenderingMode::RemoteUnaccelerated: 79 // FIXME: Create the remote ImageBuffer 80 return nullptr; 77 if (renderingMode == RenderingMode::RemoteAccelerated) { 78 if (auto imageBuffer = AcceleratedRemoteImageBuffer::create(size, renderingMode, resolutionScale, colorSpace, *this)) { 79 m_imageBufferMessageHandlerMap.add(imageBuffer->imageBufferIdentifier(), imageBuffer.get()); 80 return imageBuffer; 81 } 82 } 81 83 82 default: 83 ASSERT_NOT_REACHED(); 84 if (renderingMode == RenderingMode::RemoteAccelerated || renderingMode == RenderingMode::RemoteUnaccelerated) { 85 if (auto imageBuffer = UnacceleratedRemoteImageBuffer::create(size, renderingMode, resolutionScale, colorSpace, *this)) { 86 m_imageBufferMessageHandlerMap.add(imageBuffer->imageBufferIdentifier(), imageBuffer.get()); 87 return imageBuffer; 88 } 84 89 } 85 90 … … 90 95 { 91 96 // CreateImageBuffer message should have been received before this one. 92 bool found = m_imageBufferM ap.remove(imageBufferIdentifier);97 bool found = m_imageBufferMessageHandlerMap.remove(imageBufferIdentifier); 93 98 ASSERT_UNUSED(found, found); 99 } 94 100 95 send(Messages::RemoteRenderingBackendProxy::ReleaseImageBuffer(imageBufferIdentifier), m_renderingBackendIdentifier); 101 void RemoteRenderingBackend::createImageBufferBackend(const FloatSize& logicalSize, const IntSize& backendSize, float resolutionScale, ColorSpace colorSpace, ImageBufferBackendHandle handle, ImageBufferIdentifier imageBufferIdentifier) 102 { 103 if (auto imageBuffer = m_imageBufferMessageHandlerMap.get(imageBufferIdentifier)) 104 imageBuffer->createBackend(logicalSize, backendSize, resolutionScale, colorSpace, WTFMove(handle)); 105 } 106 107 void RemoteRenderingBackend::commitImageBufferFlushContext(ImageBufferFlushIdentifier flushIdentifier, ImageBufferIdentifier imageBufferIdentifier) 108 { 109 if (auto imageBuffer = m_imageBufferMessageHandlerMap.get(imageBufferIdentifier)) 110 imageBuffer->commitFlushContext(flushIdentifier); 96 111 } 97 112 -
trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackend.h
r257583 r257730 28 28 #if ENABLE(GPU_PROCESS) 29 29 30 #include "ImageBufferBackendHandle.h" 31 #include "ImageBufferFlushIdentifier.h" 30 32 #include "ImageBufferIdentifier.h" 31 33 #include "MessageReceiver.h" 32 34 #include "MessageSender.h" 35 #include "RemoteImageBufferMessageHandler.h" 33 36 #include "RenderingBackendIdentifier.h" 34 37 #include <WebCore/ColorSpace.h> 38 #include <WebCore/DisplayList.h> 35 39 #include <WebCore/FloatSize.h> 36 #include <WebCore/ImageBuffer.h>37 40 #include <WebCore/RenderingMode.h> 38 41 #include <wtf/HashMap.h> 42 #include <wtf/WeakPtr.h> 39 43 40 44 namespace WebKit { 41 45 42 46 class RemoteRenderingBackend 43 : private IPC::MessageSender 44 , private IPC::MessageReceiver { 47 : public IPC::MessageSender 48 , private IPC::MessageReceiver 49 , public CanMakeWeakPtr<RemoteRenderingBackend> { 45 50 public: 46 51 static std::unique_ptr<RemoteRenderingBackend> create(); … … 48 53 ~RemoteRenderingBackend(); 49 54 55 RenderingBackendIdentifier renderingBackendIdentifier() const { return m_renderingBackendIdentifier; } 56 50 57 // IPC::MessageSender. 51 58 IPC::Connection* messageSenderConnection() const override; 52 59 uint64_t messageSenderDestinationID() const override; 60 61 // IPC::MessageReceiver 62 void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override; 53 63 54 64 std::unique_ptr<WebCore::ImageBuffer> createImageBuffer(const WebCore::FloatSize&, WebCore::RenderingMode, float resolutionScale, WebCore::ColorSpace); … … 57 67 private: 58 68 RemoteRenderingBackend(); 59 60 using ImageBufferMap = HashMap<ImageBufferIdentifier, WebCore::ImageBuffer*>; 61 ImageBufferMap m_imageBufferMap; 69 70 // Messages to be received. 71 void createImageBufferBackend(const WebCore::FloatSize& logicalSize, const WebCore::IntSize& backendSize, float resolutionScale, WebCore::ColorSpace, ImageBufferBackendHandle, ImageBufferIdentifier); 72 void commitImageBufferFlushContext(ImageBufferFlushIdentifier, ImageBufferIdentifier); 73 74 using ImageBufferMessageHandlerMap = HashMap<ImageBufferIdentifier, RemoteImageBufferMessageHandler*>; 75 ImageBufferMessageHandlerMap m_imageBufferMessageHandlerMap; 62 76 RenderingBackendIdentifier m_renderingBackendIdentifier { RenderingBackendIdentifier::generate() }; 63 77 }; -
trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackend.messages.in
r257542 r257730 24 24 25 25 messages -> RemoteRenderingBackend NotRefCounted { 26 26 void CreateImageBufferBackend(WebCore::FloatSize logicalSize, WebCore::IntSize backendSize, float resolutionScale, WebCore::ColorSpace colorSpace, WebKit::ImageBufferBackendHandle handle, WebKit::ImageBufferIdentifier imageBufferIdentifier) 27 void CommitImageBufferFlushContext(WebKit::ImageBufferFlushIdentifier flushIdentifier, WebKit::ImageBufferIdentifier imageBufferIdentifier) 27 28 } 28 29 -
trunk/Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.cpp
r257606 r257730 38 38 WTF_MAKE_ISO_ALLOCATED_IMPL(ImageBufferShareableIOSurfaceBackend); 39 39 40 std::unique_ptr<ImageBufferShareableIOSurfaceBackend> ImageBufferShareableIOSurfaceBackend::create(const FloatSize& size, float resolutionScale, ColorSpace colorSpace )40 std::unique_ptr<ImageBufferShareableIOSurfaceBackend> ImageBufferShareableIOSurfaceBackend::create(const FloatSize& size, float resolutionScale, ColorSpace colorSpace, const HostWindow*) 41 41 { 42 42 IntSize backendSize = calculateBackendSize(size, resolutionScale); -
trunk/Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableIOSurfaceBackend.h
r257606 r257730 41 41 WTF_MAKE_NONCOPYABLE(ImageBufferShareableIOSurfaceBackend); 42 42 public: 43 static std::unique_ptr<ImageBufferShareableIOSurfaceBackend> create(const WebCore::FloatSize& logicalSize, const float resolutionScale, WebCore::ColorSpace );43 static std::unique_ptr<ImageBufferShareableIOSurfaceBackend> create(const WebCore::FloatSize& logicalSize, const float resolutionScale, WebCore::ColorSpace, const WebCore::HostWindow*); 44 44 static std::unique_ptr<ImageBufferShareableIOSurfaceBackend> create(const WebCore::FloatSize& logicalSize, const WebCore::IntSize& internalSize, float resolutionScale, WebCore::ColorSpace, ImageBufferBackendHandle); 45 45 -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp
r257693 r257730 892 892 #if ENABLE(GPU_PROCESS) 893 893 894 std::unique_ptr<ImageBuffer> WebChromeClient::createImageBuffer(const FloatSize& size, RenderingMode renderingMode, float resolutionScale, ColorSpace colorSpace) const 895 { 896 if (renderingMode != RenderingMode::RemoteAccelerated && renderingMode != RenderingMode::RemoteUnaccelerated) 897 return nullptr; 898 894 RemoteRenderingBackend& WebChromeClient::ensureRemoteRenderingBackend() const 895 { 899 896 if (!m_remoteRenderingBackend) 900 897 m_remoteRenderingBackend = RemoteRenderingBackend::create(); 901 return m_remoteRenderingBackend->createImageBuffer(size, renderingMode, resolutionScale, colorSpace);898 return *m_remoteRenderingBackend; 902 899 } 903 900 … … 911 908 else 912 909 mode = shouldAccelerate == ShouldAccelerate::Yes ? RenderingMode::Accelerated : RenderingMode::Unaccelerated; 913 return createImageBuffer(size, mode, resolutionScale, colorSpace);910 return ensureRemoteRenderingBackend().createImageBuffer(size, mode, resolutionScale, colorSpace); 914 911 } 915 912 -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h
r257677 r257730 235 235 236 236 #if ENABLE(GPU_PROCESS) 237 RemoteRenderingBackend& ensureRemoteRenderingBackend() const; 237 238 std::unique_ptr<WebCore::ImageBuffer> createImageBuffer(const WebCore::FloatSize&, WebCore::ShouldAccelerate, WebCore::ShouldUseDisplayList, WebCore::RenderingPurpose, float resolutionScale, WebCore::ColorSpace) const final; 238 std::unique_ptr<WebCore::ImageBuffer> createImageBuffer(const WebCore::FloatSize&, WebCore::RenderingMode, float resolutionScale, WebCore::ColorSpace) const final;239 239 #endif 240 240
Note: See TracChangeset
for help on using the changeset viewer.