[webkit-changes] [WebKit/WebKit] d67761: [GPU Process] Cache all RenderingResources as one ...

Said Abou-Hallawa noreply at github.com
Mon May 8 14:19:48 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d67761f1060aca4aef599fb47020365003a5544d
      https://github.com/WebKit/WebKit/commit/d67761f1060aca4aef599fb47020365003a5544d
  Author: Said Abou-Hallawa <said at apple.com>
  Date:   2023-05-08 (Mon, 08 May 2023)

  Changed paths:
    M Source/WebCore/platform/graphics/DecomposedGlyphs.h
    M Source/WebCore/platform/graphics/Gradient.h
    M Source/WebCore/platform/graphics/NativeImage.h
    M Source/WebCore/platform/graphics/RenderingResource.h
    M Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h
    M Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h
    M Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp
    M Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp
    M Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h

  Log Message:
  -----------
  [GPU Process] Cache all RenderingResources as one type
https://bugs.webkit.org/show_bug.cgi?id=256408
<rdar://problem/108977457>

Reviewed by Simon Fraser.

This makes adding a new RenderingResource less pervasive. RenderingResources are
mainly cached to control their lifetime between WebProcess and GPUProcess. Their
concrete types are rarely used especially in WebProcess. So replace the pointers
to NativeImage, DecomposedGlyphs and Gradient to just a pointer to RenderingResource.
Add traits to these classes so RenderingResource can be casted to any of them.

* Source/WebCore/platform/graphics/DecomposedGlyphs.h:
(isType):
* Source/WebCore/platform/graphics/Gradient.h:
(isType):
* Source/WebCore/platform/graphics/NativeImage.h:
(isType):
* Source/WebCore/platform/graphics/RenderingResource.h:
(WebCore::RenderingResource::isNativeImage const):
(WebCore::RenderingResource::isGradient const):
(WebCore::RenderingResource::isDecomposedGlyphs const):
* Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h:
(WebCore::DisplayList::LocalResourceHeap::add):
* Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:
(WebKit::QualifiedResourceHeap::add):
(WebKit::QualifiedResourceHeap::getNativeImage const):
(WebKit::QualifiedResourceHeap::getDecomposedGlyphs const):
(WebKit::QualifiedResourceHeap::getGradient const):
(WebKit::QualifiedResourceHeap::removeRenderingResource):
(WebKit::QualifiedResourceHeap::releaseAllResources):
(WebKit::QualifiedResourceHeap::releaseAllImageResources):
(WebKit::QualifiedResourceHeap::checkInvariants const):
(WebKit::QualifiedResourceHeap::removeNativeImage): Deleted.
(WebKit::QualifiedResourceHeap::removeDecomposedGlyphs): Deleted.
(WebKit::QualifiedResourceHeap::removeGradient): Deleted.
* Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp:
(WebKit::RemoteResourceCache::releaseRenderingResource):
* Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:
(WebKit::RemoteResourceCacheProxy::~RemoteResourceCacheProxy):
(WebKit::RemoteResourceCacheProxy::clear):
(WebKit::RemoteResourceCacheProxy::imagesCount const):
(WebKit::RemoteResourceCacheProxy::cachedNativeImage const):
(WebKit::RemoteResourceCacheProxy::recordDecomposedGlyphsUse):
(WebKit::RemoteResourceCacheProxy::recordGradientUse):
(WebKit::RemoteResourceCacheProxy::recordNativeImageUse):
(WebKit::RemoteResourceCacheProxy::releaseRenderingResource):
(WebKit::RemoteResourceCacheProxy::clearRenderingResourceMap):
(WebKit::RemoteResourceCacheProxy::clearNativeImageMap):
(WebKit::RemoteResourceCacheProxy::remoteResourceCacheWasDestroyed):
(WebKit::RemoteResourceCacheProxy::releaseMemory):
(WebKit::RemoteResourceCacheProxy::clearDecomposedGlyphsMap): Deleted.
(WebKit::RemoteResourceCacheProxy::clearGradientMap): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:
(WebKit::RemoteResourceCacheProxy::imagesCount const): Deleted.

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




More information about the webkit-changes mailing list