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

Reply via email to