Skip to content

[Model Element] Enforce a default memory limit on entity loads #47346

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

achan00
Copy link
Contributor

@achan00 achan00 commented Jun 29, 2025

c0d5482

[Model Element] Enforce a default memory limit on entity loads
https://bugs.webkit.org/show_bug.cgi?id=295167
rdar://145610624

Reviewed by Mike Wyrzykowski.

Specify enforceMemoryConstraints and memoryLimit in load options when loading
the model entities. The default memory limit that ModelProcessModelPlayerProxy
uses is 100MB. For testing/debugging purposes, this memory limit can be
overridden with the WebKitDebugModelEntityMemoryLimit runtime default.

* Source/WebKit/ModelProcess/ModelConnectionToWebProcess.cpp:
(WebKit::ModelConnectionToWebProcess::debugEntityMemoryLimit const):
* Source/WebKit/ModelProcess/ModelConnectionToWebProcess.h:
* Source/WebKit/ModelProcess/ModelProcess.cpp:
(WebKit::ModelProcess::initializeModelProcess):
Store the entity memory limit from the model process creation parameters.
* Source/WebKit/ModelProcess/ModelProcess.h:
* Source/WebKit/ModelProcess/ModelProcessCreationParameters.h:
* Source/WebKit/ModelProcess/ModelProcessCreationParameters.serialization.in:
* Source/WebKit/ModelProcess/ModelProcessModelPlayerManagerProxy.cpp:
(WebKit::ModelProcessModelPlayerManagerProxy::createModelPlayer):
* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.h:
* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.mm:
(WebKit::RKModelLoaderUSD::load):
Pass the entity memory limit to -[WKRKEntity loadFromData:...]. If no
memory limit is specified, pass in 0 to tell WKRKEntity to load without limit.
(WebKit::loadREModelUsingRKUSDLoader):
(WebKit::ModelProcessModelPlayerProxy::create):
(WebKit::ModelProcessModelPlayerProxy::ModelProcessModelPlayerProxy):
(WebKit::ModelProcessModelPlayerProxy::load):
Pass the entity memory limit to loadREModelUsingRKUSDLoader(). If no memory
limit is set, pass in the default which is 100MB.
* Source/WebKit/UIProcess/Model/cocoa/ModelProcessProxyCocoa.mm:
(WebKit::ModelProcessProxy::updateModelProcessCreationParameters):
* Source/WebKit/WebKitSwift/RealityKit/WKRKEntity.h:
* Source/WebKit/WebKitSwift/RealityKit/WKRKEntity.swift:
(WKRKEntity.load(from:withAttributionTaskID:entityMemoryLimit:)):
(WKRKEntity.load(from:withAttributionTaskID:)): Deleted.

Canonical link: https://commits.webkit.org/296796@main

a5eea27

Misc iOS, visionOS, tvOS & watchOS macOS Linux Windows
✅ 🧪 style ✅ 🛠 ios ✅ 🛠 mac ✅ 🛠 wpe ✅ 🛠 win
✅ 🛠 ios-sim ✅ 🛠 mac-AS-debug ✅ 🧪 wpe-wk2 ⏳ 🧪 win-tests
✅ 🧪 webkitperl ✅ 🧪 ios-wk2 ✅ 🧪 api-mac ✅ 🧪 api-wpe
✅ 🧪 ios-wk2-wpt ✅ 🛠 wpe-cairo
✅ 🧪 api-ios ✅ 🧪 mac-wk2 ✅ 🛠 gtk
✅ 🛠 vision ✅ 🧪 mac-AS-debug-wk2 ✅ 🧪 gtk-wk2
✅ 🛠 vision-sim ✅ 🧪 mac-wk2-stress ✅ 🧪 api-gtk
✅ 🛠 🧪 merge ✅ 🧪 vision-wk2 ✅ 🧪 mac-intel-wk2 ✅ 🛠 playstation
✅ 🛠 tv ✅ 🛠 mac-safer-cpp
✅ 🛠 tv-sim
✅ 🛠 watch
✅ 🛠 watch-sim

@achan00 achan00 requested a review from rr-codes as a code owner June 29, 2025 00:08
@achan00 achan00 self-assigned this Jun 29, 2025
@achan00 achan00 requested a review from cdumez as a code owner June 29, 2025 00:08
@achan00 achan00 added the WebKit Misc. For miscellaneous bugs in the WebKit framework (and not JavaScriptCore or WebCore). label Jun 29, 2025
@achan00 achan00 added the merge-queue Applied to send a pull request to merge-queue label Jun 30, 2025
https://bugs.webkit.org/show_bug.cgi?id=295167
rdar://145610624

Reviewed by Mike Wyrzykowski.

Specify enforceMemoryConstraints and memoryLimit in load options when loading
the model entities. The default memory limit that ModelProcessModelPlayerProxy
uses is 100MB. For testing/debugging purposes, this memory limit can be
overridden with the WebKitDebugModelEntityMemoryLimit runtime default.

* Source/WebKit/ModelProcess/ModelConnectionToWebProcess.cpp:
(WebKit::ModelConnectionToWebProcess::debugEntityMemoryLimit const):
* Source/WebKit/ModelProcess/ModelConnectionToWebProcess.h:
* Source/WebKit/ModelProcess/ModelProcess.cpp:
(WebKit::ModelProcess::initializeModelProcess):
Store the entity memory limit from the model process creation parameters.
* Source/WebKit/ModelProcess/ModelProcess.h:
* Source/WebKit/ModelProcess/ModelProcessCreationParameters.h:
* Source/WebKit/ModelProcess/ModelProcessCreationParameters.serialization.in:
* Source/WebKit/ModelProcess/ModelProcessModelPlayerManagerProxy.cpp:
(WebKit::ModelProcessModelPlayerManagerProxy::createModelPlayer):
* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.h:
* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.mm:
(WebKit::RKModelLoaderUSD::load):
Pass the entity memory limit to -[WKRKEntity loadFromData:...]. If no
memory limit is specified, pass in 0 to tell WKRKEntity to load without limit.
(WebKit::loadREModelUsingRKUSDLoader):
(WebKit::ModelProcessModelPlayerProxy::create):
(WebKit::ModelProcessModelPlayerProxy::ModelProcessModelPlayerProxy):
(WebKit::ModelProcessModelPlayerProxy::load):
Pass the entity memory limit to loadREModelUsingRKUSDLoader(). If no memory
limit is set, pass in the default which is 100MB.
* Source/WebKit/UIProcess/Model/cocoa/ModelProcessProxyCocoa.mm:
(WebKit::ModelProcessProxy::updateModelProcessCreationParameters):
* Source/WebKit/WebKitSwift/RealityKit/WKRKEntity.h:
* Source/WebKit/WebKitSwift/RealityKit/WKRKEntity.swift:
(WKRKEntity.load(from:withAttributionTaskID:entityMemoryLimit:)):
(WKRKEntity.load(from:withAttributionTaskID:)): Deleted.

Canonical link: https://commits.webkit.org/296796@main
@webkit-commit-queue webkit-commit-queue force-pushed the eng/Model-Element-Enforce-a-default-memory-limit-on-entity-loads branch from a5eea27 to c0d5482 Compare June 30, 2025 15:56
@webkit-commit-queue
Copy link
Collaborator

Committed 296796@main (c0d5482): https://commits.webkit.org/296796@main

Reviewed commits have been landed. Closing PR #47346 and removing active labels.

@webkit-commit-queue webkit-commit-queue merged commit c0d5482 into WebKit:main Jun 30, 2025
@webkit-commit-queue webkit-commit-queue removed the merge-queue Applied to send a pull request to merge-queue label Jun 30, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
WebKit Misc. For miscellaneous bugs in the WebKit framework (and not JavaScriptCore or WebCore).
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants