Changeset 273288 in webkit
- Timestamp:
- Feb 22, 2021 4:31:56 PM (3 years ago)
- Location:
- trunk/Source
- Files:
-
- 22 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WTF/ChangeLog
r273244 r273288 1 2021-02-22 Chris Dumez <cdumez@apple.com> 2 3 Prepare for memory ownership transfer in the GPUProcess 4 https://bugs.webkit.org/show_bug.cgi?id=222122 5 6 Reviewed by Simon Fraser. 7 8 * wtf/PlatformHave.h: 9 Add feature flag for TASK_IDENTITY_TOKEN as this API was only 10 introduced very recently. 11 12 * wtf/MachSendRight.h: 13 * wtf/cocoa/MachSendRight.cpp: 14 (WTF::MachSendRight::MachSendRight): 15 (WTF::MachSendRight::operator=): 16 Add a copy constructor to MachSendRight for convenience. 17 1 18 2021-02-22 Sam Weinig <weinig@apple.com> 2 19 -
trunk/Source/WTF/wtf/MachSendRight.h
r248546 r273288 39 39 40 40 MachSendRight() = default; 41 WTF_EXPORT_PRIVATE MachSendRight(const MachSendRight&); 41 42 WTF_EXPORT_PRIVATE MachSendRight(MachSendRight&&); 42 43 WTF_EXPORT_PRIVATE ~MachSendRight(); 43 44 45 WTF_EXPORT_PRIVATE MachSendRight& operator=(const MachSendRight&); 44 46 WTF_EXPORT_PRIVATE MachSendRight& operator=(MachSendRight&&); 45 47 -
trunk/Source/WTF/wtf/PlatformHave.h
r273184 r273288 302 302 #endif 303 303 304 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 110300) \ 305 || (((PLATFORM(IOS) && !PLATFORM(IOS_FAMILY_SIMULATOR)) || PLATFORM(MACCATALYST)) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 140500) \ 306 || (PLATFORM(WATCHOS) && !PLATFORM(IOS_FAMILY_SIMULATOR) && __WATCH_OS_VERSION_MAX_ALLOWED >= 70500) \ 307 || (PLATFORM(APPLETV) && !PLATFORM(IOS_FAMILY_SIMULATOR) && __TV_OS_VERSION_MAX_ALLOWED >= 140500) 308 #define HAVE_TASK_IDENTITY_TOKEN 1 309 #endif 310 304 311 #if PLATFORM(MAC) 305 312 #define HAVE_NS_ACTIVITY 1 -
trunk/Source/WTF/wtf/cocoa/MachSendRight.cpp
r249273 r273288 101 101 } 102 102 103 MachSendRight::MachSendRight(const MachSendRight& other) 104 : m_port(other.m_port) 105 { 106 retainSendRight(m_port); 107 } 108 103 109 MachSendRight::~MachSendRight() 104 110 { … … 111 117 releaseSendRight(m_port); 112 118 m_port = other.leakSendRight(); 119 } 120 121 return *this; 122 } 123 124 MachSendRight& MachSendRight::operator=(const MachSendRight& other) 125 { 126 if (this != &other) { 127 m_port = other.sendRight(); 128 retainSendRight(m_port); 113 129 } 114 130 -
trunk/Source/WebKit/ChangeLog
r273286 r273288 1 2021-02-22 Chris Dumez <cdumez@apple.com> 2 3 Prepare for memory ownership transfer in the GPUProcess 4 https://bugs.webkit.org/show_bug.cgi?id=222122 5 6 Reviewed by Simon Fraser. 7 8 Prepare for memory ownership transfer in the GPUProcess: 9 1. Have the WebProcess create a task identity token and pass it to the GPUProcess 10 when connecting to it. The WebProcess' task identity token is then stored on 11 the GPUConnectionToWebProcess object. 12 2. Add the entitlement to the GPUProcess that is needed to transfer memory ownership 13 to another process. 14 15 This is a first step towards having the GPUProcess transfer memory ownership of its 16 IOSurfaces and Metal textures to the WebProcesses it is serving. 17 18 * GPUProcess/GPUConnectionToWebProcess.cpp: 19 (WebKit::GPUConnectionToWebProcess::create): 20 (WebKit::GPUConnectionToWebProcess::GPUConnectionToWebProcess): 21 * GPUProcess/GPUConnectionToWebProcess.h: 22 (WebKit::GPUConnectionToWebProcess::webProcessIdentityToken const): 23 * GPUProcess/GPUProcess.cpp: 24 (WebKit::GPUProcess::createGPUConnectionToWebProcess): 25 * GPUProcess/GPUProcess.h: 26 * GPUProcess/GPUProcess.messages.in: 27 * Scripts/process-entitlements.sh: 28 * Shared/GPUProcessConnectionParameters.h: Copied from Source/WTF/wtf/MachSendRight.h. 29 (WebKit::GPUProcessConnectionParameters::encode const): 30 (WebKit::GPUProcessConnectionParameters::decode): 31 * UIProcess/GPU/GPUProcessProxy.cpp: 32 (WebKit::GPUProcessProxy::getGPUProcessConnection): 33 * UIProcess/GPU/GPUProcessProxy.h: 34 * UIProcess/WebProcessPool.cpp: 35 (WebKit::WebProcessPool::getGPUProcessConnection): 36 * UIProcess/WebProcessPool.h: 37 * UIProcess/WebProcessProxy.cpp: 38 (WebKit::WebProcessProxy::getGPUProcessConnection): 39 * UIProcess/WebProcessProxy.h: 40 * UIProcess/WebProcessProxy.messages.in: 41 * WebKit.xcodeproj/project.pbxproj: 42 * WebProcess/WebProcess.cpp: 43 (WebKit::WebProcess::platformInitializeGPUProcessConnectionParameters): 44 (WebKit::WebProcess::getGPUProcessConnection): 45 * WebProcess/WebProcess.h: 46 * WebProcess/cocoa/WebProcessCocoa.mm: 47 (WebKit::WebProcess::platformInitializeGPUProcessConnectionParameters): 48 1 49 2021-02-22 Per Arne Vollan <pvollan@apple.com> 2 50 -
trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp
r273204 r273288 33 33 #include "GPUProcess.h" 34 34 #include "GPUProcessConnectionMessages.h" 35 #include "GPUProcessConnectionParameters.h" 35 36 #include "GPUProcessMessages.h" 36 37 #include "GPUProcessProxyMessages.h" … … 163 164 #endif 164 165 165 Ref<GPUConnectionToWebProcess> GPUConnectionToWebProcess::create(GPUProcess& gpuProcess, WebCore::ProcessIdentifier webProcessIdentifier, IPC::Connection::Identifier connectionIdentifier, PAL::SessionID sessionID )166 { 167 return adoptRef(*new GPUConnectionToWebProcess(gpuProcess, webProcessIdentifier, connectionIdentifier, sessionID ));168 } 169 170 GPUConnectionToWebProcess::GPUConnectionToWebProcess(GPUProcess& gpuProcess, WebCore::ProcessIdentifier webProcessIdentifier, IPC::Connection::Identifier connectionIdentifier, PAL::SessionID sessionID )166 Ref<GPUConnectionToWebProcess> GPUConnectionToWebProcess::create(GPUProcess& gpuProcess, WebCore::ProcessIdentifier webProcessIdentifier, IPC::Connection::Identifier connectionIdentifier, PAL::SessionID sessionID, GPUProcessConnectionParameters&& parameters) 167 { 168 return adoptRef(*new GPUConnectionToWebProcess(gpuProcess, webProcessIdentifier, connectionIdentifier, sessionID, WTFMove(parameters))); 169 } 170 171 GPUConnectionToWebProcess::GPUConnectionToWebProcess(GPUProcess& gpuProcess, WebCore::ProcessIdentifier webProcessIdentifier, IPC::Connection::Identifier connectionIdentifier, PAL::SessionID sessionID, GPUProcessConnectionParameters&& parameters) 171 172 : m_connection(IPC::Connection::createServerConnection(connectionIdentifier, *this)) 172 173 , m_gpuProcess(gpuProcess) 173 174 , m_webProcessIdentifier(webProcessIdentifier) 175 #if HAVE(TASK_IDENTITY_TOKEN) 176 , m_webProcessIdentityToken(WTFMove(parameters.webProcessIdentityToken)) 177 #endif 174 178 , m_remoteMediaPlayerManagerProxy(makeUnique<RemoteMediaPlayerManagerProxy>(*this)) 175 179 , m_sessionID(sessionID) -
trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h
r273204 r273288 42 42 #include <pal/SessionID.h> 43 43 #include <wtf/Logger.h> 44 #include <wtf/MachSendRight.h> 44 45 #include <wtf/ThreadSafeRefCounted.h> 45 46 … … 71 72 class RemoteSampleBufferDisplayLayerManager; 72 73 class UserMediaCaptureManagerProxy; 74 struct GPUProcessConnectionParameters; 73 75 struct RemoteAudioSessionConfiguration; 74 76 … … 78 80 , IPC::Connection::Client { 79 81 public: 80 static Ref<GPUConnectionToWebProcess> create(GPUProcess&, WebCore::ProcessIdentifier, IPC::Connection::Identifier, PAL::SessionID );82 static Ref<GPUConnectionToWebProcess> create(GPUProcess&, WebCore::ProcessIdentifier, IPC::Connection::Identifier, PAL::SessionID, GPUProcessConnectionParameters&&); 81 83 virtual ~GPUConnectionToWebProcess(); 82 84 … … 103 105 #endif 104 106 107 #if HAVE(TASK_IDENTITY_TOKEN) 108 task_id_token_t webProcessIdentityToken() const { return static_cast<task_id_token_t>(m_webProcessIdentityToken.sendRight()); } 109 #endif 110 105 111 #if ENABLE(ENCRYPTED_MEDIA) 106 112 RemoteCDMFactoryProxy& cdmFactoryProxy(); … … 124 130 125 131 private: 126 GPUConnectionToWebProcess(GPUProcess&, WebCore::ProcessIdentifier, IPC::Connection::Identifier, PAL::SessionID );132 GPUConnectionToWebProcess(GPUProcess&, WebCore::ProcessIdentifier, IPC::Connection::Identifier, PAL::SessionID, GPUProcessConnectionParameters&&); 127 133 128 134 #if ENABLE(WEB_AUDIO) … … 185 191 Ref<GPUProcess> m_gpuProcess; 186 192 const WebCore::ProcessIdentifier m_webProcessIdentifier; 193 #if HAVE(TASK_IDENTITY_TOKEN) 194 MachSendRight m_webProcessIdentityToken; 195 #endif 187 196 #if ENABLE(WEB_AUDIO) 188 197 std::unique_ptr<RemoteAudioDestinationManager> m_remoteAudioDestinationManager; -
trunk/Source/WebKit/GPUProcess/GPUProcess.cpp
r273212 r273288 34 34 #include "DataReference.h" 35 35 #include "GPUConnectionToWebProcess.h" 36 #include "GPUProcessConnectionParameters.h" 36 37 #include "GPUProcessCreationParameters.h" 37 38 #include "GPUProcessSessionParameters.h" … … 83 84 } 84 85 85 void GPUProcess::createGPUConnectionToWebProcess(ProcessIdentifier identifier, PAL::SessionID sessionID, CompletionHandler<void(Optional<IPC::Attachment>&&)>&& completionHandler)86 void GPUProcess::createGPUConnectionToWebProcess(ProcessIdentifier identifier, PAL::SessionID sessionID, GPUProcessConnectionParameters&& parameters, CompletionHandler<void(Optional<IPC::Attachment>&&)>&& completionHandler) 86 87 { 87 88 auto ipcConnection = createIPCConnectionPair(); … … 91 92 } 92 93 93 auto newConnection = GPUConnectionToWebProcess::create(*this, identifier, ipcConnection->first, sessionID );94 auto newConnection = GPUConnectionToWebProcess::create(*this, identifier, ipcConnection->first, sessionID, WTFMove(parameters)); 94 95 95 96 #if ENABLE(MEDIA_STREAM) -
trunk/Source/WebKit/GPUProcess/GPUProcess.h
r273212 r273288 44 44 45 45 class GPUConnectionToWebProcess; 46 struct GPUProcessConnectionParameters; 46 47 struct GPUProcessCreationParameters; 47 48 struct GPUProcessSessionParameters; … … 103 104 // Message Handlers 104 105 void initializeGPUProcess(GPUProcessCreationParameters&&); 105 void createGPUConnectionToWebProcess(WebCore::ProcessIdentifier, PAL::SessionID, CompletionHandler<void(Optional<IPC::Attachment>&&)>&&);106 void createGPUConnectionToWebProcess(WebCore::ProcessIdentifier, PAL::SessionID, GPUProcessConnectionParameters&&, CompletionHandler<void(Optional<IPC::Attachment>&&)>&&); 106 107 void addSession(PAL::SessionID, GPUProcessSessionParameters&&); 107 108 void removeSession(PAL::SessionID); -
trunk/Source/WebKit/GPUProcess/GPUProcess.messages.in
r273212 r273288 26 26 InitializeGPUProcess(struct WebKit::GPUProcessCreationParameters processCreationParameters) 27 27 28 CreateGPUConnectionToWebProcess(WebCore::ProcessIdentifier processIdentifier, PAL::SessionID sessionID ) -> (Optional<IPC::Attachment> connectionIdentifier) Async28 CreateGPUConnectionToWebProcess(WebCore::ProcessIdentifier processIdentifier, PAL::SessionID sessionID, struct WebKit::GPUProcessConnectionParameters parameters) -> (Optional<IPC::Attachment> connectionIdentifier) Async 29 29 30 30 ProcessDidTransitionToForeground() -
trunk/Source/WebKit/Scripts/process-entitlements.sh
r273034 r273288 52 52 fi 53 53 54 plistbuddy Add :com.apple.private.memory.ownership_transfer bool YES 54 55 plistbuddy Add :com.apple.rootless.storage.WebKitGPUSandbox bool YES 55 56 plistbuddy Add :com.apple.QuartzCore.webkit-end-points bool YES … … 171 172 plistbuddy Add :com.apple.runningboard.assertions.webkit bool YES 172 173 plistbuddy Add :com.apple.QuartzCore.webkit-end-points bool YES 174 plistbuddy Add :com.apple.private.memory.ownership_transfer bool YES 173 175 } 174 176 … … 242 244 plistbuddy Add :com.apple.private.coremedia.pidinheritance.allow bool YES 243 245 plistbuddy Add :com.apple.private.memorystatus bool YES 246 plistbuddy Add :com.apple.private.memory.ownership_transfer bool YES 244 247 plistbuddy Add :com.apple.private.network.socket-delegate bool YES 245 248 plistbuddy Add :com.apple.runningboard.assertions.webkit bool YES -
trunk/Source/WebKit/Shared/GPUProcessConnectionParameters.h
r273287 r273288 1 1 /* 2 * Copyright (C) 20 14-2018Apple 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 PLATFORM(COCOA)28 #if ENABLE(GPU_PROCESS) 29 29 30 #include < mach/mach_port.h>30 #include <wtf/MachSendRight.h> 31 31 32 namespace W TF{32 namespace WebKit { 33 33 34 class MachSendRight { 35 WTF_MAKE_FAST_ALLOCATED; 36 public: 37 WTF_EXPORT_PRIVATE static MachSendRight adopt(mach_port_t); 38 WTF_EXPORT_PRIVATE static MachSendRight create(mach_port_t); 34 struct GPUProcessConnectionParameters { 35 #if HAVE(TASK_IDENTITY_TOKEN) 36 MachSendRight webProcessIdentityToken; 37 #endif 39 38 40 MachSendRight() = default; 41 WTF_EXPORT_PRIVATE MachSendRight(MachSendRight&&); 42 WTF_EXPORT_PRIVATE ~MachSendRight(); 39 void encode(IPC::Encoder& encoder) const 40 { 41 #if HAVE(TASK_IDENTITY_TOKEN) 42 encoder << webProcessIdentityToken; 43 #else 44 UNUSED_PARAM(encoder); 45 #endif 46 } 43 47 44 WTF_EXPORT_PRIVATE MachSendRight& operator=(MachSendRight&&); 48 static Optional<GPUProcessConnectionParameters> decode(IPC::Decoder& decoder) 49 { 50 #if HAVE(TASK_IDENTITY_TOKEN) 51 Optional<MachSendRight> webProcessIdentityToken; 52 decoder >> webProcessIdentityToken; 53 if (!webProcessIdentityToken) 54 return WTF::nullopt; 55 #else 56 UNUSED_PARAM(decoder); 57 #endif 45 58 46 explicit operator bool() const { return m_port != MACH_PORT_NULL; } 47 48 mach_port_t sendRight() const { return m_port; } 49 50 WTF_EXPORT_PRIVATE MachSendRight copySendRight() const; 51 WTF_EXPORT_PRIVATE mach_port_t leakSendRight() WARN_UNUSED_RETURN; 52 53 private: 54 explicit MachSendRight(mach_port_t); 55 56 mach_port_t m_port { MACH_PORT_NULL }; 59 return GPUProcessConnectionParameters { 60 #if HAVE(TASK_IDENTITY_TOKEN) 61 WTFMove(*webProcessIdentityToken), 62 #endif 63 }; 64 } 57 65 }; 58 66 59 WTF_EXPORT_PRIVATE void deallocateSendRightSafely(mach_port_t); 67 } // namespace WebKit 60 68 61 } 62 63 using WTF::MachSendRight; 64 using WTF::deallocateSendRightSafely; 65 66 #endif 69 #endif // ENABLE(GPU_PROCESS) -
trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp
r273212 r273288 31 31 #include "DrawingAreaProxy.h" 32 32 #include "GPUProcessConnectionInfo.h" 33 #include "GPUProcessConnectionParameters.h" 33 34 #include "GPUProcessCreationParameters.h" 34 35 #include "GPUProcessMessages.h" … … 229 230 } 230 231 231 void GPUProcessProxy::getGPUProcessConnection(WebProcessProxy& webProcessProxy, Messages::WebProcessProxy::GetGPUProcessConnection::DelayedReply&& reply)232 void GPUProcessProxy::getGPUProcessConnection(WebProcessProxy& webProcessProxy, const GPUProcessConnectionParameters& parameters, Messages::WebProcessProxy::GetGPUProcessConnection::DelayedReply&& reply) 232 233 { 233 234 addSession(webProcessProxy.websiteDataStore()); … … 240 241 241 242 RELEASE_LOG(ProcessSuspension, "%p - GPUProcessProxy is taking a background assertion because a web process is requesting a connection", this); 242 sendWithAsyncReply(Messages::GPUProcess::CreateGPUConnectionToWebProcess { webProcessProxy.coreProcessIdentifier(), webProcessProxy.sessionID() }, [this, weakThis = makeWeakPtr(*this), reply = WTFMove(reply)](auto&& identifier) mutable {243 sendWithAsyncReply(Messages::GPUProcess::CreateGPUConnectionToWebProcess { webProcessProxy.coreProcessIdentifier(), webProcessProxy.sessionID(), parameters }, [this, weakThis = makeWeakPtr(*this), reply = WTFMove(reply)](auto&& identifier) mutable { 243 244 if (!weakThis) { 244 245 RELEASE_LOG_ERROR(Process, "GPUProcessProxy::getGPUProcessConnection: GPUProcessProxy deallocated during connection establishment"); -
trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.h
r273212 r273288 50 50 class WebProcessProxy; 51 51 class WebsiteDataStore; 52 struct GPUProcessConnectionParameters; 52 53 struct GPUProcessCreationParameters; 53 54 … … 61 62 ~GPUProcessProxy(); 62 63 63 void getGPUProcessConnection(WebProcessProxy&, Messages::WebProcessProxy::GetGPUProcessConnectionDelayedReply&&);64 void getGPUProcessConnection(WebProcessProxy&, const GPUProcessConnectionParameters&, Messages::WebProcessProxy::GetGPUProcessConnectionDelayedReply&&); 64 65 65 66 ProcessThrottler& throttler() final { return m_throttler; } -
trunk/Source/WebKit/UIProcess/WebProcessPool.cpp
r273212 r273288 41 41 #include "DownloadProxyMessages.h" 42 42 #include "GPUProcessConnectionInfo.h" 43 #include "GPUProcessConnectionParameters.h" 43 44 #include "GamepadData.h" 44 45 #include "HighPerformanceGraphicsUsageSampler.h" … … 512 513 } 513 514 514 void WebProcessPool::getGPUProcessConnection(WebProcessProxy& webProcessProxy, Messages::WebProcessProxy::GetGPUProcessConnection::DelayedReply&& reply)515 { 516 ensureGPUProcess().getGPUProcessConnection(webProcessProxy, [this, weakThis = makeWeakPtr(*this), webProcessProxy = makeWeakPtr(webProcessProxy), reply = WTFMove(reply)] (auto& connectionInfo) mutable {515 void WebProcessPool::getGPUProcessConnection(WebProcessProxy& webProcessProxy, GPUProcessConnectionParameters&& parameters, Messages::WebProcessProxy::GetGPUProcessConnection::DelayedReply&& reply) 516 { 517 ensureGPUProcess().getGPUProcessConnection(webProcessProxy, parameters, [this, weakThis = makeWeakPtr(*this), parameters, webProcessProxy = makeWeakPtr(webProcessProxy), reply = WTFMove(reply)] (auto& connectionInfo) mutable { 517 518 if (UNLIKELY(!IPC::Connection::identifierIsValid(connectionInfo.identifier()) && webProcessProxy && weakThis)) { 518 519 WEBPROCESSPOOL_RELEASE_LOG_ERROR(Process, "getGPUProcessConnection: Failed first attempt, retrying"); 519 ensureGPUProcess().getGPUProcessConnection(*webProcessProxy, WTFMove(reply));520 ensureGPUProcess().getGPUProcessConnection(*webProcessProxy, parameters, WTFMove(reply)); 520 521 return; 521 522 } -
trunk/Source/WebKit/UIProcess/WebProcessPool.h
r273082 r273288 110 110 class WebPageProxy; 111 111 class WebProcessCache; 112 struct GPUProcessConnectionParameters; 112 113 struct GPUProcessCreationParameters; 113 114 struct NetworkProcessCreationParameters; … … 359 360 void gpuProcessCrashed(ProcessID); 360 361 361 void getGPUProcessConnection(WebProcessProxy&, Messages::WebProcessProxy::GetGPUProcessConnectionDelayedReply&&);362 void getGPUProcessConnection(WebProcessProxy&, GPUProcessConnectionParameters&&, Messages::WebProcessProxy::GetGPUProcessConnectionDelayedReply&&); 362 363 363 364 GPUProcessProxy& ensureGPUProcess(); -
trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp
r273196 r273288 775 775 776 776 #if ENABLE(GPU_PROCESS) 777 void WebProcessProxy::getGPUProcessConnection( Messages::WebProcessProxy::GetGPUProcessConnection::DelayedReply&& reply)778 { 779 m_processPool->getGPUProcessConnection(*this, WTFMove( reply));777 void WebProcessProxy::getGPUProcessConnection(GPUProcessConnectionParameters&& parameters, Messages::WebProcessProxy::GetGPUProcessConnection::DelayedReply&& reply) 778 { 779 m_processPool->getGPUProcessConnection(*this, WTFMove(parameters), WTFMove(reply)); 780 780 } 781 781 -
trunk/Source/WebKit/UIProcess/WebProcessProxy.h
r272550 r273288 99 99 enum class WebsiteDataType : uint32_t; 100 100 struct BackForwardListItemState; 101 struct GPUProcessConnectionParameters; 101 102 struct UserMessage; 102 103 struct WebNavigationDataStore; … … 464 465 465 466 #if ENABLE(GPU_PROCESS) 466 void getGPUProcessConnection( Messages::WebProcessProxy::GetGPUProcessConnectionDelayedReply&&);467 void getGPUProcessConnection(GPUProcessConnectionParameters&&, Messages::WebProcessProxy::GetGPUProcessConnectionDelayedReply&&); 467 468 #endif 468 469 -
trunk/Source/WebKit/UIProcess/WebProcessProxy.messages.in
r269906 r273288 40 40 41 41 #if ENABLE(GPU_PROCESS) 42 GetGPUProcessConnection( ) -> (struct WebKit::GPUProcessConnectionInfo connectionInfo) Synchronous42 GetGPUProcessConnection(struct WebKit::GPUProcessConnectionParameters parameters) -> (struct WebKit::GPUProcessConnectionInfo connectionInfo) Synchronous 43 43 #endif 44 44 -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r273204 r273288 427 427 1CBBE4A019B66C53006B7D81 /* WebInspectorUIMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1CBBE49E19B66C53006B7D81 /* WebInspectorUIMessageReceiver.cpp */; }; 428 428 1CBBE4A119B66C53006B7D81 /* WebInspectorUIMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CBBE49F19B66C53006B7D81 /* WebInspectorUIMessages.h */; }; 429 1D47658625CCA416007AF312 /* RemoteImageDecoderAVFProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D47658425CCA416007AF312 /* RemoteImageDecoderAVFProxy.h */; };430 1D47659325CCCE93007AF312 /* RemoteImageDecoderAVFProxyMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D47659025CCCE93007AF312 /* RemoteImageDecoderAVFProxyMessages.h */; };431 1D47659425CCCE93007AF312 /* RemoteImageDecoderAVFProxyMessagesReplies.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D47659125CCCE93007AF312 /* RemoteImageDecoderAVFProxyMessagesReplies.h */; };432 1D47659C25CE74AD007AF312 /* RemoteImageDecoderAVFManagerMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D47659925CE74AC007AF312 /* RemoteImageDecoderAVFManagerMessages.h */; };433 1D47659D25CE74AD007AF312 /* RemoteImageDecoderAVFManagerMessagesReplies.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D47659A25CE74AC007AF312 /* RemoteImageDecoderAVFManagerMessagesReplies.h */; };434 1D4765A125CF5740007AF312 /* RemoteImageDecoderAVFManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D47659F25CF5740007AF312 /* RemoteImageDecoderAVFManager.h */; };435 429 1D4D737023A9E54700717A25 /* RemoteMediaResourceManagerMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1D4D736B23A9DF5500717A25 /* RemoteMediaResourceManagerMessageReceiver.cpp */; }; 436 430 1D4D737123A9E56200717A25 /* RemoteMediaResourceManagerMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D4D736C23A9DF6000717A25 /* RemoteMediaResourceManagerMessages.h */; }; … … 957 951 460F48901F996F7100CF4B87 /* WebSWContextManagerConnectionMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 460F488E1F996F6C00CF4B87 /* WebSWContextManagerConnectionMessages.h */; }; 958 952 4613A74425D32CCF00A5033A /* WKBlankOverlayView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4613A74225D32CB800A5033A /* WKBlankOverlayView.h */; }; 953 4614F13225DED875007006E7 /* GPUProcessConnectionParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 46AC532425DED81E003B57EC /* GPUProcessConnectionParameters.h */; }; 959 954 461CCCA5231485A700B659B9 /* UIRemoteObjectRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 463236852314833F00A48FA7 /* UIRemoteObjectRegistry.h */; }; 960 955 461CCCA6231485AA00B659B9 /* WebRemoteObjectRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 46323683231481EF00A48FA7 /* WebRemoteObjectRegistry.h */; }; … … 3850 3845 46A2B6061E5675A200C3DEDA /* BackgroundProcessResponsivenessTimer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BackgroundProcessResponsivenessTimer.cpp; sourceTree = "<group>"; }; 3851 3846 46A2B6071E5675A200C3DEDA /* BackgroundProcessResponsivenessTimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BackgroundProcessResponsivenessTimer.h; sourceTree = "<group>"; }; 3847 46AC532425DED81E003B57EC /* GPUProcessConnectionParameters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GPUProcessConnectionParameters.h; sourceTree = "<group>"; }; 3852 3848 46B0524422668D2300265B97 /* WebDeviceOrientationAndMotionAccessController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebDeviceOrientationAndMotionAccessController.h; sourceTree = "<group>"; }; 3853 3849 46B0524522668D2400265B97 /* WebDeviceOrientationAndMotionAccessController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebDeviceOrientationAndMotionAccessController.cpp; sourceTree = "<group>"; }; … … 6594 6590 1A14F8E01D74C834006CBEC6 /* FrameInfoData.h */, 6595 6591 5C121E8324101F7000486F9B /* FrameTreeNodeData.h */, 6592 46AC532425DED81E003B57EC /* GPUProcessConnectionParameters.h */, 6596 6593 F40BBB40257FF46E0067463A /* GPUProcessWakeupMessageArguments.h */, 6597 6594 1AC75A1A1B3368270056745B /* HangDetectionDisabler.h */, … … 11749 11746 BC06F43A12DBCCFB002D78DE /* GeolocationPermissionRequestProxy.h in Headers */, 11750 11747 2DA944A41884E4F000ED86DB /* GestureTypes.h in Headers */, 11748 4614F13225DED875007006E7 /* GPUProcessConnectionParameters.h in Headers */, 11751 11749 F40BBB41257FF46E0067463A /* GPUProcessWakeupMessageArguments.h in Headers */, 11752 11750 2DA049B8180CCD0A00AAFA9E /* GraphicsLayerCARemote.h in Headers */, -
trunk/Source/WebKit/WebProcess/WebProcess.cpp
r273183 r273288 34 34 #include "DrawingArea.h" 35 35 #include "EventDispatcher.h" 36 #include "GPUProcessConnectionParameters.h" 36 37 #include "InjectedBundle.h" 37 38 #include "LibWebRTCNetwork.h" … … 1143 1144 #if ENABLE(GPU_PROCESS) 1144 1145 1145 static GPUProcessConnectionInfo getGPUProcessConnection(IPC::Connection& connection) 1146 { 1146 #if !PLATFORM(COCOA) 1147 void WebProcess::platformInitializeGPUProcessConnectionParameters(GPUProcessConnectionParameters&) 1148 { 1149 } 1150 #endif 1151 1152 GPUProcessConnectionInfo WebProcess::getGPUProcessConnection(IPC::Connection& connection) 1153 { 1154 GPUProcessConnectionParameters parameters; 1155 platformInitializeGPUProcessConnectionParameters(parameters); 1156 1147 1157 GPUProcessConnectionInfo connectionInfo; 1148 if (!connection.sendSync(Messages::WebProcessProxy::GetGPUProcessConnection( ), Messages::WebProcessProxy::GetGPUProcessConnection::Reply(connectionInfo), 0)) {1158 if (!connection.sendSync(Messages::WebProcessProxy::GetGPUProcessConnection(parameters), Messages::WebProcessProxy::GetGPUProcessConnection::Reply(connectionInfo), 0)) { 1149 1159 // If we failed the first time, retry once. The attachment may have become invalid 1150 1160 // before it was received by the web process if the network process crashed. 1151 if (!connection.sendSync(Messages::WebProcessProxy::GetGPUProcessConnection( ), Messages::WebProcessProxy::GetGPUProcessConnection::Reply(connectionInfo), 0))1161 if (!connection.sendSync(Messages::WebProcessProxy::GetGPUProcessConnection(parameters), Messages::WebProcessProxy::GetGPUProcessConnection::Reply(connectionInfo), 0)) 1152 1162 CRASH(); 1153 1163 } -
trunk/Source/WebKit/WebProcess/WebProcess.h
r273082 r273288 128 128 class WebPage; 129 129 class WebPageGroupProxy; 130 struct GPUProcessConnectionInfo; 131 struct GPUProcessConnectionParameters; 130 132 struct UserMessage; 131 133 struct WebProcessCreationParameters; … … 555 557 #endif 556 558 559 #if ENABLE(GPU_PROCESS) 560 static GPUProcessConnectionInfo getGPUProcessConnection(IPC::Connection&); 561 static void platformInitializeGPUProcessConnectionParameters(GPUProcessConnectionParameters&); 562 #endif 563 557 564 #if ENABLE(VIDEO) 558 565 void suspendAllMediaBuffering(); -
trunk/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm
r273270 r273288 27 27 #import "WebProcess.h" 28 28 29 #import "GPUProcessConnectionParameters.h" 29 30 #import "LegacyCustomProtocolManager.h" 30 31 #import "LogInitialization.h" … … 1217 1218 } 1218 1219 1220 #if ENABLE(GPU_PROCESS) 1221 void WebProcess::platformInitializeGPUProcessConnectionParameters(GPUProcessConnectionParameters& parameters) 1222 { 1223 #if HAVE(TASK_IDENTITY_TOKEN) 1224 task_id_token_t identityToken; 1225 kern_return_t kr = task_create_identity_token(mach_task_self(), &identityToken); 1226 if (kr == KERN_SUCCESS) 1227 parameters.webProcessIdentityToken = MachSendRight::adopt(identityToken); 1228 else 1229 RELEASE_LOG_ERROR(Process, "Call to task_create_identity_token() failed: %{private}s (%x)", mach_error_string(kr), kr); 1230 #else 1231 UNUSED_PARAM(parameters); 1232 #endif 1233 } 1234 #endif 1235 1219 1236 #if PLATFORM(MAC) 1220 1237 void WebProcess::systemWillPowerOn()
Note: See TracChangeset
for help on using the changeset viewer.