RemoteResourceCacheProxy.h [plain text]
#pragma once
#if ENABLE(GPU_PROCESS)
#include <WebCore/NativeImage.h>
#include <WebCore/RenderingResourceIdentifier.h>
#include <wtf/HashMap.h>
namespace WebCore {
class Font;
class ImageBuffer;
}
namespace WebKit {
class RemoteRenderingBackendProxy;
class RemoteResourceCacheProxy : public WebCore::NativeImage::Observer {
public:
RemoteResourceCacheProxy(RemoteRenderingBackendProxy&);
~RemoteResourceCacheProxy();
void cacheImageBuffer(WebCore::ImageBuffer&);
WebCore::ImageBuffer* cachedImageBuffer(WebCore::RenderingResourceIdentifier);
void releaseImageBuffer(WebCore::RenderingResourceIdentifier);
void cacheNativeImage(WebCore::NativeImage&);
using ImageBufferHashMap = HashMap<WebCore::RenderingResourceIdentifier, WeakPtr<WebCore::ImageBuffer>>;
const ImageBufferHashMap& imageBuffers() const { return m_imageBuffers; }
void cacheFont(WebCore::Font&);
void didFinalizeRenderingUpdate();
void releaseMemory();
private:
using NativeImageHashMap = HashMap<WebCore::RenderingResourceIdentifier, WeakPtr<WebCore::NativeImage>>;
void releaseNativeImage(WebCore::RenderingResourceIdentifier) override;
ImageBufferHashMap m_imageBuffers;
NativeImageHashMap m_nativeImages;
HashMap<WebCore::RenderingResourceIdentifier, uint64_t> m_fontIdentifierToLastRenderingUpdateVersionMap;
unsigned m_numberOfFontsUsedInCurrentRenderingUpdate { 0 };
uint64_t m_currentRenderingUpdateVersion { 1 };
RemoteRenderingBackendProxy& m_remoteRenderingBackendProxy;
};
}
#endif // ENABLE(GPU_PROCESS)