Changeset 277210 in webkit
- Timestamp:
- May 7, 2021, 4:46:04 PM (5 years ago)
- Location:
- trunk/Source
- Files:
-
- 3 added
- 13 edited
- 2 copied
-
WTF/ChangeLog (modified) (1 diff)
-
WTF/Scripts/Preferences/WebPreferencesInternal.yaml (modified) (1 diff)
-
WebKit/ChangeLog (modified) (1 diff)
-
WebKit/Shared/RemoteLayerTree/CGDisplayListImageBufferBackend.cpp (added)
-
WebKit/Shared/RemoteLayerTree/CGDisplayListImageBufferBackend.h (added)
-
WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h (modified) (3 diffs)
-
WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm (modified) (8 diffs)
-
WebKit/SourcesCocoa.txt (modified) (1 diff)
-
WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm (modified) (3 diffs)
-
WebKit/UIProcess/RemoteLayerTree/cocoa (added)
-
WebKit/UIProcess/RemoteLayerTree/cocoa/RemoteLayerTreeLayers.h (copied) (copied from trunk/Source/WebKit/WebProcess/GPU/graphics/ImageBufferBackendHandle.h ) (2 diffs)
-
WebKit/UIProcess/RemoteLayerTree/cocoa/RemoteLayerTreeLayers.mm (copied) (copied from trunk/Source/WebKit/WebProcess/GPU/graphics/ImageBufferBackendHandle.h ) (2 diffs)
-
WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm (modified) (2 diffs)
-
WebKit/WebKit.xcodeproj/project.pbxproj (modified) (10 diffs)
-
WebKit/WebProcess/GPU/graphics/ImageBufferBackendHandle.h (modified) (2 diffs)
-
WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp (modified) (1 diff)
-
WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h (modified) (2 diffs)
-
WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WTF/ChangeLog
r277168 r277210 1 2021-05-07 Tim Horton <timothy_horton@apple.com> 2 3 Add an experimental alternative display-list-based RemoteLayerBackingStore implementation 4 https://bugs.webkit.org/show_bug.cgi?id=225508 5 6 Reviewed by Sam Weinig. 7 8 * Scripts/Preferences/WebPreferencesInternal.yaml: 9 1 10 2021-05-07 Philippe Normand <pnormand@igalia.com> 2 11 -
trunk/Source/WTF/Scripts/Preferences/WebPreferencesInternal.yaml
r276948 r277210 739 739 default: true 740 740 741 UseCGDisplayListsForDOMRendering: 742 type: bool 743 humanReadableName: "Use CG Display Lists for DOM rendering" 744 humanReadableDescription: "Use CG Display Lists for DOM rendering" 745 webcoreBinding: none 746 condition: ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER) 747 exposed: [ WebKit ] 748 defaultValue: 749 WebKit: 750 default: false 751 741 752 UseGPUProcessForDOMRenderingEnabled: 742 753 type: bool -
trunk/Source/WebKit/ChangeLog
r277209 r277210 1 2021-05-07 Tim Horton <timothy_horton@apple.com> 2 3 Add an experimental alternative display-list-based RemoteLayerBackingStore implementation 4 https://bugs.webkit.org/show_bug.cgi?id=225508 5 6 Reviewed by Sam Weinig. 7 8 * Shared/RemoteLayerTree/CGDisplayListImageBufferBackend.cpp: Added. 9 (WebKit::CGDisplayListImageBufferBackend::calculateMemoryCost): 10 (WebKit::CGDisplayListImageBufferBackend::create): 11 (WebKit::CGDisplayListImageBufferBackend::CGDisplayListImageBufferBackend): 12 (WebKit::CGDisplayListImageBufferBackend::createImageBufferBackendHandle const): 13 (WebKit::CGDisplayListImageBufferBackend::context const): 14 (WebKit::CGDisplayListImageBufferBackend::backendSize const): 15 (WebKit::CGDisplayListImageBufferBackend::bytesPerRow const): 16 (WebKit::CGDisplayListImageBufferBackend::copyNativeImage const): 17 (WebKit::CGDisplayListImageBufferBackend::toBGRAData const): 18 (WebKit::CGDisplayListImageBufferBackend::getImageData const): 19 (WebKit::CGDisplayListImageBufferBackend::putImageData): 20 * Shared/RemoteLayerTree/CGDisplayListImageBufferBackend.h: Added. 21 Add an ImageBuffer backend backed by a CG display list. 22 23 * Shared/RemoteLayerTree/RemoteLayerBackingStore.h: 24 Add a new RemoteLayerBackingStore type that uses CGDisplayListImageBufferBackend. 25 26 * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm: 27 (WebKit::RemoteLayerBackingStore::encode const): 28 (WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer): 29 (WebKit::RemoteLayerBackingStore::supportsPartialRepaint): 30 Disable partial repaint if using display-list-based backing store, 31 because we don't currently have any way to mutate display lists. 32 33 (WebKit::RemoteLayerBackingStore::display): 34 (WebKit::RemoteLayerBackingStore::applyBackingStoreToLayer): 35 When applying a display-list-based backing store to a layer, we just 36 pass the encodede data directly to the layer, and tell it to use the 37 display list to render. 38 39 * SourcesCocoa.txt: 40 * UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm: 41 (WebKit::RemoteLayerTreeNode::createWithPlainLayer): 42 (-[WKPlainRemoteLayer description]): Deleted. 43 Move WKPlainRemoteLayer to RemoteLayerTreeLayers, and rename it to WKCompositingLayer. 44 It will now back all WKCompositingViews. 45 46 * UIProcess/RemoteLayerTree/cocoa/RemoteLayerTreeLayers.h: Added. 47 * UIProcess/RemoteLayerTree/cocoa/RemoteLayerTreeLayers.mm: Added. 48 (-[WKCompositingLayer description]): 49 (-[WKCompositingLayer _setWKContentsDisplayList:]): 50 (-[WKCompositingLayer _wkContentsDisplayList]): 51 (-[WKCompositingLayer drawInContext:]): 52 Make WKCompositingLayer replay the given display list in drawRect 53 (just because we're currently missing API to actually directly pass 54 the encoded display list data to CA). 55 56 * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm: 57 (+[WKCompositingView layerClass]): 58 Use WKCompositingLayer as the layer class for all WKCompositingViews. 59 60 * WebKit.xcodeproj/project.pbxproj: 61 * WebProcess/GPU/graphics/ImageBufferBackendHandle.h: 62 * WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp: 63 (WebKit::PlatformCALayerRemote::updateBackingStore): 64 * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h: 65 (WebKit::RemoteLayerTreeContext::useCGDisplayListsForDOMRendering const): 66 (WebKit::RemoteLayerTreeContext::setUseCGDisplayListsForDOMRendering): 67 * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: 68 (WebKit::RemoteLayerTreeDrawingArea::updatePreferences): 69 Plumb the internal feature flag from WebPreferences to RemoteLayerTreeContext 70 to PlatformCALayerRemote to RemoteLayerBackingStore; if the preference is 71 on and the feature is available, we'll always prefer display-list backed 72 surfaces over either of the bitmap types. 73 1 74 2021-05-07 Brent Fulgham <bfulgham@apple.com> 2 75 -
trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h
r277033 r277210 56 56 IOSurface, 57 57 Bitmap, 58 #if ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER) 59 CGDisplayList, 60 #endif 58 61 }; 59 62 … … 104 107 void swapToValidFrontBuffer(); 105 108 109 bool supportsPartialRepaint(); 110 106 111 WebCore::PixelFormat pixelFormat() const; 107 112 … … 147 152 template<> struct EnumTraits<WebKit::RemoteLayerBackingStore::Type> { 148 153 using values = EnumValues< 149 WebKit::RemoteLayerBackingStore::Type, 150 WebKit::RemoteLayerBackingStore::Type::IOSurface, 151 WebKit::RemoteLayerBackingStore::Type::Bitmap 154 WebKit::RemoteLayerBackingStore::Type 155 , WebKit::RemoteLayerBackingStore::Type::IOSurface 156 , WebKit::RemoteLayerBackingStore::Type::Bitmap 157 #if ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER) 158 , WebKit::RemoteLayerBackingStore::Type::CGDisplayList 159 #endif 152 160 >; 153 161 }; -
trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm
r277033 r277210 1 1 /* 2 * Copyright (C) 2013-20 18Apple Inc. All rights reserved.2 * Copyright (C) 2013-2021 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 28 28 29 29 #import "ArgumentCoders.h" 30 #import "CGDisplayListImageBufferBackend.h" 30 31 #import "MachPort.h" 31 32 #import "PlatformCALayerRemote.h" … … 33 34 #import "RemoteLayerBackingStoreCollection.h" 34 35 #import "RemoteLayerTreeContext.h" 36 #import "RemoteLayerTreeLayers.h" 35 37 #import "ShareableBitmap.h" 36 38 #import "WebCoreArgumentCoders.h" … … 46 48 #import <pal/spi/cocoa/QuartzCoreSPI.h> 47 49 50 #if ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER) 51 #import <WebKitAdditions/CGDisplayListImageBufferAdditions.h> 52 #endif 53 48 54 namespace WebKit { 49 55 … … 116 122 handle = static_cast<UnacceleratedImageBufferShareableBackend&>(*m_frontBuffer.imageBuffer->ensureBackendCreated()).createImageBufferBackendHandle(); 117 123 break; 124 #if ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER) 125 case Type::CGDisplayList: 126 handle = static_cast<CGDisplayListImageBufferBackend&>(*m_frontBuffer.imageBuffer->ensureBackendCreated()).createImageBufferBackendHandle(); 127 break; 128 #endif 118 129 } 119 130 } … … 210 221 m_frontBuffer.imageBuffer = WebCore::ConcreteImageBuffer<UnacceleratedImageBufferShareableBackend>::create(m_size, m_scale, WebCore::DestinationColorSpace::SRGB, pixelFormat(), nullptr); 211 222 break; 212 } 223 #if ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER) 224 case Type::CGDisplayList: 225 m_frontBuffer.imageBuffer = WebCore::ConcreteImageBuffer<CGDisplayListImageBufferBackend>::create(m_size, m_scale, WebCore::DestinationColorSpace::SRGB, pixelFormat(), nullptr); 226 break; 227 #endif 228 } 229 } 230 231 bool RemoteLayerBackingStore::supportsPartialRepaint() 232 { 233 switch (m_type) { 234 case Type::IOSurface: 235 case Type::Bitmap: 236 return true; 237 #if ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER) 238 case Type::CGDisplayList: 239 return false; 240 #endif 241 } 242 243 return true; 213 244 } 214 245 … … 230 261 231 262 WebCore::IntRect layerBounds(WebCore::IntPoint(), WebCore::expandedIntSize(m_size)); 232 if (!hasFrontBuffer() )263 if (!hasFrontBuffer() || !supportsPartialRepaint()) 233 264 m_dirtyRegion.unite(layerBounds); 234 265 … … 355 386 layer.contentsOpaque = m_isOpaque; 356 387 357 switch (m_type) { 358 case Type::IOSurface: 359 switch (contentsType) { 360 case LayerContentsType::IOSurface: { 361 auto surface = WebCore::IOSurface::createFromSendRight(WTFMove(WTF::get<MachSendRight>(*m_bufferHandle)), WebCore::sRGBColorSpaceRef()); 362 layer.contents = surface ? surface->asLayerContents() : nil; 363 break; 388 WTF::switchOn(*m_bufferHandle, 389 [&] (ShareableBitmap::Handle& handle) { 390 ASSERT(m_type == Type::Bitmap); 391 auto bitmap = ShareableBitmap::create(handle); 392 layer.contents = (__bridge id)bitmap->makeCGImageCopy().get(); 393 }, 394 [&] (MachSendRight& machSendRight) { 395 ASSERT(m_type == Type::IOSurface); 396 switch (contentsType) { 397 case LayerContentsType::IOSurface: { 398 auto surface = WebCore::IOSurface::createFromSendRight(WTFMove(machSendRight), WebCore::sRGBColorSpaceRef()); 399 layer.contents = surface ? surface->asLayerContents() : nil; 400 break; 401 } 402 case LayerContentsType::CAMachPort: 403 layer.contents = (__bridge id)adoptCF(CAMachPortCreate(machSendRight.leakSendRight())).get(); 404 break; 405 } 364 406 } 365 case LayerContentsType::CAMachPort: 366 layer.contents = (__bridge id)adoptCF(CAMachPortCreate(WTF::get<MachSendRight>(*m_bufferHandle).leakSendRight())).get(); 367 break; 407 #if ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER) 408 , [&] (IPC::SharedBufferCopy& buffer) { 409 ASSERT(m_type == Type::CGDisplayList); 410 ASSERT([layer isKindOfClass:[WKCompositingLayer class]]); 411 if (![layer isKindOfClass:[WKCompositingLayer class]]) 412 return; 413 [layer setValue:@1 forKeyPath:WKCGDisplayListEnabledKey]; 414 auto data = buffer.buffer()->createCFData(); 415 [(WKCompositingLayer *)layer _setWKContentsDisplayList:data.get()]; 368 416 } 369 break; 370 case Type::Bitmap: 371 auto bitmap = ShareableBitmap::create(WTF::get<ShareableBitmap::Handle>(*m_bufferHandle)); 372 layer.contents = (__bridge id)bitmap->makeCGImageCopy().get(); 373 break; 374 } 417 #endif 418 ); 375 419 } 376 420 -
trunk/Source/WebKit/SourcesCocoa.txt
r277171 r277210 541 541 UIProcess/Plugins/mac/PluginProcessProxyMac.mm 542 542 543 UIProcess/RemoteLayerTree/cocoa/RemoteLayerTreeLayers.mm 544 543 545 UIProcess/RemoteLayerTree/mac/ScrollerMac.mm 544 546 UIProcess/RemoteLayerTree/mac/ScrollerPairMac.mm -
trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm
r248846 r277210 27 27 #import "RemoteLayerTreeNode.h" 28 28 29 #import "RemoteLayerTreeLayers.h" 29 30 #import <QuartzCore/CALayer.h> 30 31 #import <WebCore/WebActionDisablingCALayerDelegate.h> … … 33 34 #import <UIKit/UIView.h> 34 35 #endif 35 36 @interface WKPlainRemoteLayer : CALayer37 @end38 39 @implementation WKPlainRemoteLayer40 - (NSString *)description41 {42 return WebKit::RemoteLayerTreeNode::appendLayerDescription(super.description, self);43 }44 @end45 36 46 37 namespace WebKit { … … 73 64 std::unique_ptr<RemoteLayerTreeNode> RemoteLayerTreeNode::createWithPlainLayer(WebCore::GraphicsLayer::PlatformLayerID layerID) 74 65 { 75 RetainPtr<CALayer> layer = adoptNS([[WK PlainRemoteLayer alloc] init]);66 RetainPtr<CALayer> layer = adoptNS([[WKCompositingLayer alloc] init]); 76 67 return makeUnique<RemoteLayerTreeNode>(layerID, WTFMove(layer)); 77 68 } -
trunk/Source/WebKit/UIProcess/RemoteLayerTree/cocoa/RemoteLayerTreeLayers.h
r277209 r277210 1 1 /* 2 * Copyright (C) 202 0Apple Inc. All rights reserved.2 * Copyright (C) 2021 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 #if ENABLE(GPU_PROCESS)28 #if PLATFORM(COCOA) 29 29 30 #include "ShareableBitmap.h" 31 #include <wtf/MachSendRight.h> 32 #include <wtf/Variant.h> 30 #import <Foundation/Foundation.h> 31 #import <QuartzCore/QuartzCore.h> 33 32 34 namespace WebKit { 33 @interface WKCompositingLayer : CALayer 35 34 36 using ImageBufferBackendHandle = Variant< 37 #if PLATFORM(COCOA) // FIXME: This is really about IOSurface. 38 MachSendRight, 35 #if ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER) 36 @property (nonatomic, retain, setter=_setWKContentsDisplayList:) __attribute__((NSObject)) CFDataRef _wkContentsDisplayList; 39 37 #endif 40 ShareableBitmap::Handle41 >;42 38 43 } // namespace WebKit 39 @end 44 40 45 #endif // ENABLE(GPU_PROCESS)41 #endif // PLATFORM(COCOA) -
trunk/Source/WebKit/UIProcess/RemoteLayerTree/cocoa/RemoteLayerTreeLayers.mm
r277209 r277210 1 1 /* 2 * Copyright (C) 202 0Apple Inc. All rights reserved.2 * Copyright (C) 2021 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 #pragma once 26 #import "config.h" 27 #import "RemoteLayerTreeLayers.h" 27 28 28 #if ENABLE(GPU_PROCESS)29 #if PLATFORM(COCOA) 29 30 30 #i nclude "ShareableBitmap.h"31 #i nclude <wtf/MachSendRight.h>32 #i nclude <wtf/Variant.h>31 #import "Logging.h" 32 #import "RemoteLayerTreeNode.h" 33 #import <pal/spi/cocoa/QuartzCoreSPI.h> 33 34 34 namespace WebKit { 35 #if ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER) 36 #import <WebKitAdditions/CGDisplayListImageBufferAdditions.h> 37 #endif 35 38 36 using ImageBufferBackendHandle = Variant< 37 #if PLATFORM(COCOA) // FIXME: This is really about IOSurface.38 MachSendRight,39 @implementation WKCompositingLayer { 40 #if ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER) 41 RetainPtr<CFDataRef> _contentsDisplayList; 39 42 #endif 40 ShareableBitmap::Handle 41 >; 43 } 42 44 43 } // namespace WebKit 45 - (NSString *)description 46 { 47 return WebKit::RemoteLayerTreeNode::appendLayerDescription(super.description, self); 48 } 44 49 45 #endif // ENABLE(GPU_PROCESS) 50 #if ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER) 51 - (void)_setWKContentsDisplayList:(CFDataRef)data 52 { 53 _contentsDisplayList = data; 54 [self setNeedsDisplay]; 55 } 56 57 - (CFDataRef)_wkContentsDisplayList 58 { 59 return _contentsDisplayList.get(); 60 } 61 62 - (void)drawInContext:(CGContextRef)context 63 { 64 if (!_contentsDisplayList) 65 return; 66 WKCGContextDrawCGCommandsEncodedData(context, _contentsDisplayList.get(), nullptr); 67 } 68 #endif // ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER) 69 70 @end 71 72 #endif // PLATFORM(COCOA) -
trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeViews.mm
r270712 r277210 31 31 #import "Logging.h" 32 32 #import "RemoteLayerTreeHost.h" 33 #import "RemoteLayerTreeLayers.h" 33 34 #import "RemoteLayerTreeNode.h" 34 35 #import "UIKitSPI.h" … … 314 315 @implementation WKCompositingView 315 316 317 + (Class)layerClass 318 { 319 return [WKCompositingLayer class]; 320 } 321 316 322 - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 317 323 { -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r277171 r277210 668 668 2D54C31B212F4DA60049C174 /* ProcessLauncher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE117F511DBB30900981615 /* ProcessLauncher.cpp */; }; 669 669 2D5C9D0619C81D8F00B3C5C1 /* WebPageOverlay.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D5C9D0419C81D8F00B3C5C1 /* WebPageOverlay.h */; }; 670 2D64824B2644B1AB00030335 /* RemoteLayerTreeLayers.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D6482492644B1AB00030335 /* RemoteLayerTreeLayers.h */; }; 670 671 2D6AB541192B1C4A003A9FD1 /* WKPDFPageNumberIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D6AB53F192B1C4A003A9FD1 /* WKPDFPageNumberIndicator.h */; }; 671 672 2D6B371B18A967AD0042AE80 /* _WKThumbnailView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D6B371918A967AD0042AE80 /* _WKThumbnailView.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 1829 1830 BCE469561214E6CB000B98EB /* WebFormSubmissionListenerProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE469521214E6CB000B98EB /* WebFormSubmissionListenerProxy.h */; }; 1830 1831 BCE4695A1214EDF4000B98EB /* WKFormSubmissionListener.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE469581214EDF4000B98EB /* WKFormSubmissionListener.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1832 BCE579A62634836700F5C5E9 /* CGDisplayListImageBufferBackend.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE579A42634836700F5C5E9 /* CGDisplayListImageBufferBackend.h */; }; 1833 BCE579A72634836700F5C5E9 /* CGDisplayListImageBufferBackend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCE579A52634836700F5C5E9 /* CGDisplayListImageBufferBackend.cpp */; }; 1831 1834 BCE81D8D1319F7EF00241910 /* FontInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE81D8B1319F7EF00241910 /* FontInfo.h */; }; 1832 1835 BCEE7AD012817988009827DA /* WebProcessProxyMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCEE7ACC12817988009827DA /* WebProcessProxyMessageReceiver.cpp */; }; … … 3228 3231 2D5C9D0319C81D8F00B3C5C1 /* WebPageOverlay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebPageOverlay.cpp; sourceTree = "<group>"; }; 3229 3232 2D5C9D0419C81D8F00B3C5C1 /* WebPageOverlay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPageOverlay.h; sourceTree = "<group>"; }; 3233 2D6482492644B1AB00030335 /* RemoteLayerTreeLayers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteLayerTreeLayers.h; sourceTree = "<group>"; }; 3234 2D64824A2644B1AB00030335 /* RemoteLayerTreeLayers.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RemoteLayerTreeLayers.mm; sourceTree = "<group>"; }; 3230 3235 2D6AB53F192B1C4A003A9FD1 /* WKPDFPageNumberIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKPDFPageNumberIndicator.h; path = ios/WKPDFPageNumberIndicator.h; sourceTree = "<group>"; }; 3231 3236 2D6AB540192B1C4A003A9FD1 /* WKPDFPageNumberIndicator.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKPDFPageNumberIndicator.mm; path = ios/WKPDFPageNumberIndicator.mm; sourceTree = "<group>"; }; … … 5509 5514 BCE469571214EDF4000B98EB /* WKFormSubmissionListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKFormSubmissionListener.cpp; sourceTree = "<group>"; }; 5510 5515 BCE469581214EDF4000B98EB /* WKFormSubmissionListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKFormSubmissionListener.h; sourceTree = "<group>"; }; 5516 BCE579A42634836700F5C5E9 /* CGDisplayListImageBufferBackend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CGDisplayListImageBufferBackend.h; sourceTree = "<group>"; }; 5517 BCE579A52634836700F5C5E9 /* CGDisplayListImageBufferBackend.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CGDisplayListImageBufferBackend.cpp; sourceTree = "<group>"; }; 5511 5518 BCE81D8A1319F7EF00241910 /* FontInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontInfo.cpp; sourceTree = "<group>"; }; 5512 5519 BCE81D8B1319F7EF00241910 /* FontInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontInfo.h; sourceTree = "<group>"; }; … … 7292 7299 isa = PBXGroup; 7293 7300 children = ( 7301 2D6482482644B1AB00030335 /* cocoa */, 7294 7302 2D1551AA1F5A9BA70006E3FE /* ios */, 7295 7303 E404906F21DE65D70037F0DB /* mac */, … … 7359 7367 isa = PBXGroup; 7360 7368 children = ( 7369 BCE579A52634836700F5C5E9 /* CGDisplayListImageBufferBackend.cpp */, 7370 BCE579A42634836700F5C5E9 /* CGDisplayListImageBufferBackend.h */, 7361 7371 2D47B56B1810714E003A3AEE /* RemoteLayerBackingStore.h */, 7362 7372 2D47B56A1810714E003A3AEE /* RemoteLayerBackingStore.mm */, … … 7374 7384 ); 7375 7385 path = RemoteLayerTree; 7386 sourceTree = "<group>"; 7387 }; 7388 2D6482482644B1AB00030335 /* cocoa */ = { 7389 isa = PBXGroup; 7390 children = ( 7391 2D6482492644B1AB00030335 /* RemoteLayerTreeLayers.h */, 7392 2D64824A2644B1AB00030335 /* RemoteLayerTreeLayers.mm */, 7393 ); 7394 path = cocoa; 7376 7395 sourceTree = "<group>"; 7377 7396 }; … … 11871 11890 41FABD2A1F4DE001006A6C97 /* CacheStorageEngineCache.h in Headers */, 11872 11891 41897EDA1F415D8A0016FA42 /* CacheStorageEngineConnection.h in Headers */, 11892 BCE579A62634836700F5C5E9 /* CGDisplayListImageBufferBackend.h in Headers */, 11873 11893 57B4B46020B504AC00D4AD79 /* ClientCertificateAuthenticationXPCConstants.h in Headers */, 11874 11894 F4FE0A3B24632B60002631E1 /* CocoaColor.h in Headers */, … … 12208 12228 0FF24A2E1879E4BC003ABF0C /* RemoteLayerTreeDrawingAreaProxyMessages.h in Headers */, 12209 12229 1AA3D75C1651B44F008713D0 /* RemoteLayerTreeHost.h in Headers */, 12230 2D64824B2644B1AB00030335 /* RemoteLayerTreeLayers.h in Headers */, 12210 12231 E4E57F6B21A83B1200345F3C /* RemoteLayerTreeNode.h in Headers */, 12211 12232 2DDE0AFA18298CC900F97EAA /* RemoteLayerTreePropertyApplier.h in Headers */, … … 14093 14114 2D92A785212B6AB100F493FD /* BlobDataFileReferenceWithSandboxExtension.cpp in Sources */, 14094 14115 517CF0E3163A486C00C2950F /* CacheStorageEngineConnectionMessageReceiver.cpp in Sources */, 14116 BCE579A72634836700F5C5E9 /* CGDisplayListImageBufferBackend.cpp in Sources */, 14095 14117 2D92A77D212B6A7100F493FD /* Connection.cpp in Sources */, 14096 14118 2D92A77F212B6A7100F493FD /* Decoder.cpp in Sources */, -
trunk/Source/WebKit/WebProcess/GPU/graphics/ImageBufferBackendHandle.h
r269824 r277210 29 29 30 30 #include "ShareableBitmap.h" 31 #include "SharedBufferCopy.h" 31 32 #include <wtf/MachSendRight.h> 32 33 #include <wtf/Variant.h> … … 35 36 36 37 using ImageBufferBackendHandle = Variant< 38 ShareableBitmap::Handle 37 39 #if PLATFORM(COCOA) // FIXME: This is really about IOSurface. 38 MachSendRight,40 , MachSendRight 39 41 #endif 40 ShareableBitmap::Handle 42 #if ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER) 43 , IPC::SharedBufferCopy 44 #endif 41 45 >; 42 46 -
trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.cpp
r277033 r277210 235 235 236 236 auto type = m_acceleratesDrawing ? RemoteLayerBackingStore::Type::IOSurface : RemoteLayerBackingStore::Type::Bitmap; 237 #if ENABLE(CG_DISPLAY_LIST_BACKED_IMAGE_BUFFER) 238 if (m_context->useCGDisplayListsForDOMRendering()) 239 type = RemoteLayerBackingStore::Type::CGDisplayList; 240 #endif 237 241 m_properties.backingStore->ensureBackingStore(type, m_properties.bounds.size(), m_properties.contentsScale, m_wantsDeepColorBackingStore, m_properties.opaque); 238 242 } -
trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h
r269824 r277210 81 81 82 82 RemoteRenderingBackendProxy& ensureRemoteRenderingBackendProxy(); 83 84 bool useCGDisplayListsForDOMRendering() const { return m_useCGDisplayListsForDOMRendering; } 85 void setUseCGDisplayListsForDOMRendering(bool useCGDisplayLists) { m_useCGDisplayListsForDOMRendering = useCGDisplayLists; } 83 86 84 87 #if PLATFORM(IOS_FAMILY) … … 107 110 108 111 bool m_nextRenderingUpdateRequiresSynchronousImageDecoding { false }; 112 113 bool m_useCGDisplayListsForDOMRendering { false }; 109 114 }; 110 115 -
trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm
r275792 r277210 39 39 #import "WebPageCreationParameters.h" 40 40 #import "WebPageProxyMessages.h" 41 #import "WebPreferencesKeys.h" 41 42 #import "WebProcess.h" 42 43 #import <QuartzCore/QuartzCore.h> … … 162 163 } 163 164 164 void RemoteLayerTreeDrawingArea::updatePreferences(const WebPreferencesStore& )165 void RemoteLayerTreeDrawingArea::updatePreferences(const WebPreferencesStore& preferences) 165 166 { 166 167 Settings& settings = m_webPage.corePage()->settings(); … … 171 172 172 173 m_rootLayer->setShowDebugBorder(settings.showDebugBorders()); 174 175 m_remoteLayerTreeContext->setUseCGDisplayListsForDOMRendering(preferences.getBoolValueForKey(WebPreferencesKey::useCGDisplayListsForDOMRenderingKey())); 173 176 174 177 DebugPageOverlays::settingsChanged(*m_webPage.corePage());
Note:
See TracChangeset
for help on using the changeset viewer.