Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 15744fc841b91729773b960cc7ca0a0101708eb6
https://github.com/WebKit/WebKit/commit/15744fc841b91729773b960cc7ca0a0101708eb6
Author: Kimmo Kinnunen <[email protected]>
Date: 2026-08-14 (Fri, 14 Aug 2026)
Changed paths:
M Source/WebKit/GPUProcess/RemoteSharedResourceCache.cpp
M Source/WebKit/GPUProcess/RemoteSharedResourceCache.h
M Source/WebKit/GPUProcess/RemoteSharedResourceCache.messages.in
M Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.cpp
M Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.h
M Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.messages.in
A Source/WebKit/GPUProcess/graphics/RemoteNativeImageIdentifier.h
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in
M Source/WebKit/Platform/IPC/ObjectIdentifierReference.serialization.in
M Source/WebKit/Scripts/webkit/messages.py
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M Source/WebKit/WebProcess/GPU/GPUProcessConnection.cpp
M Source/WebKit/WebProcess/GPU/RemoteSharedResourceCacheProxy.cpp
M Source/WebKit/WebProcess/GPU/RemoteSharedResourceCacheProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteNativeImageProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteNativeImageProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h
M Tools/Scripts/generate-gpup-webgl
Log Message:
-----------
Track shared NativeImages in RemoteSharedResourceCache by reference
https://bugs.webkit.org/show_bug.cgi?id=321495
rdar://184591698
Reviewed by Simon Fraser.
Use IPC::ObjectIdentifierReferenceTracker instead of a plain
RenderingResourceIdentifier key so a
shared NativeImage can be read by another context without being
removed from the cache, and is only released once the WebContent
side handle (RemoteNativeImageProxy) is destroyed and all
outstanding reads have retired.
This works towards being able to create NativeImages from
WebGL, WebGPU contexts and then use these images as sources in these
contexts. Previously, when the references were not tracked, the
images were only usable in RemoteGraphicsContext it was attached to.
* Source/WebKit/GPUProcess/RemoteSharedResourceCache.cpp:
(WebKit::RemoteSharedResourceCache::addNativeImage):
(WebKit::RemoteSharedResourceCache::readNativeImage):
(WebKit::RemoteSharedResourceCache::releaseNativeImage):
(WebKit::RemoteSharedResourceCache::takeNativeImage): Deleted.
* Source/WebKit/GPUProcess/RemoteSharedResourceCache.h:
* Source/WebKit/GPUProcess/RemoteSharedResourceCache.messages.in:
* Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.cpp:
(WebKit::RemoteGraphicsContextGL::copyNativeImageYFlipped):
* Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.h:
* Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.messages.in:
* Source/WebKit/GPUProcess/graphics/RemoteNativeImageIdentifier.h: Added.
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::cacheNativeImageFromSharedNativeImage):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in:
* Source/WebKit/Platform/IPC/ObjectIdentifierReference.serialization.in:
* Source/WebKit/Scripts/webkit/messages.py:
(types_that_cannot_be_forward_declared):
(headers_for_type):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/GPU/GPUProcessConnection.cpp:
(WebKit::GPUProcessConnection::sharedResourceCache):
* Source/WebKit/WebProcess/GPU/RemoteSharedResourceCacheProxy.cpp:
(WebKit::RemoteSharedResourceCacheProxy::create):
(WebKit::RemoteSharedResourceCacheProxy::RemoteSharedResourceCacheProxy):
(WebKit::RemoteSharedResourceCacheProxy::releaseNativeImage):
* Source/WebKit/WebProcess/GPU/RemoteSharedResourceCacheProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:
(WebKit::RemoteGraphicsContextGLProxy::initializeIPC):
(WebKit::RemoteGraphicsContextGLProxy::copyNativeImageYFlipped):
* Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteNativeImageProxy.cpp:
(WebKit::RemoteNativeImageProxy::create):
(WebKit::RemoteNativeImageProxy::RemoteNativeImageProxy):
(WebKit::RemoteNativeImageProxy::~RemoteNativeImageProxy):
(WebKit::RemoteNativeImageProxy::attachResourceCache):
* Source/WebKit/WebProcess/GPU/graphics/RemoteNativeImageProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::cacheNativeImageFromSharedNativeImage):
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:
(WebKit::RemoteResourceCacheProxy::recordSharedNativeImageUse):
* Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:
* Tools/Scripts/generate-gpup-webgl:
Canonical link: https://commits.webkit.org/319163@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications