#include "src/gpu/ganesh/GrThreadSafeCache.h"
#include "include/core/SkSize.h"
#include "include/core/SkTypes.h"
#include "include/gpu/GpuTypes.h"
#include "include/gpu/ganesh/GrDirectContext.h"
#include "include/gpu/ganesh/GrTypes.h"
#include "include/private/base/SkTo.h"
#include "include/private/gpu/ganesh/GrTypesPriv.h"
#include "src/gpu/GpuTypesPriv.h"
#include "src/gpu/Swizzle.h"
#include "src/gpu/ganesh/GrCaps.h"
#include "src/gpu/ganesh/GrDirectContextPriv.h"
#include "src/gpu/ganesh/GrGpuBuffer.h"
#include "src/gpu/ganesh/GrProxyProvider.h"
#include "src/gpu/ganesh/GrRenderTargetProxy.h"
#include "src/gpu/ganesh/GrResourceCache.h"
#include "src/gpu/ganesh/GrSurface.h"
#include "src/gpu/ganesh/GrTexture.h"
#include <chrono>
#include <functional>
class GrResourceProvider;
class SkData;
enum class SkBackingFit;
GrThreadSafeCache::VertexData::~VertexData () { … }
GrThreadSafeCache::GrThreadSafeCache()
: … { … }
GrThreadSafeCache::~GrThreadSafeCache() { … }
#if defined(GPU_TEST_UTILS)
int GrThreadSafeCache::numEntries() const {
SkAutoSpinlock lock{fSpinLock};
return fUniquelyKeyedEntryMap.count();
}
size_t GrThreadSafeCache::approxBytesUsedForHash() const {
SkAutoSpinlock lock{fSpinLock};
return fUniquelyKeyedEntryMap.approxBytesUsed();
}
#endif
void GrThreadSafeCache::dropAllRefs() { … }
void GrThreadSafeCache::dropUniqueRefs(GrResourceCache* resourceCache) { … }
void GrThreadSafeCache::dropUniqueRefsOlderThan(skgpu::StdSteadyClock::time_point purgeTime) { … }
void GrThreadSafeCache::makeExistingEntryMRU(Entry* entry) { … }
std::tuple<GrSurfaceProxyView, sk_sp<SkData>> GrThreadSafeCache::internalFind(
const skgpu::UniqueKey& key) { … }
#ifdef SK_DEBUG
bool GrThreadSafeCache::has(const skgpu::UniqueKey& key) { … }
#endif
GrSurfaceProxyView GrThreadSafeCache::find(const skgpu::UniqueKey& key) { … }
std::tuple<GrSurfaceProxyView, sk_sp<SkData>> GrThreadSafeCache::findWithData(
const skgpu::UniqueKey& key) { … }
GrThreadSafeCache::Entry* GrThreadSafeCache::getEntry(const skgpu::UniqueKey& key,
const GrSurfaceProxyView& view) { … }
GrThreadSafeCache::Entry* GrThreadSafeCache::makeNewEntryMRU(Entry* entry) { … }
GrThreadSafeCache::Entry* GrThreadSafeCache::getEntry(const skgpu::UniqueKey& key,
sk_sp<VertexData> vertData) { … }
void GrThreadSafeCache::recycleEntry(Entry* dead) { … }
std::tuple<GrSurfaceProxyView, sk_sp<SkData>> GrThreadSafeCache::internalAdd(
const skgpu::UniqueKey& key,
const GrSurfaceProxyView& view) { … }
GrSurfaceProxyView GrThreadSafeCache::add(const skgpu::UniqueKey& key,
const GrSurfaceProxyView& view) { … }
std::tuple<GrSurfaceProxyView, sk_sp<SkData>> GrThreadSafeCache::addWithData(
const skgpu::UniqueKey& key,
const GrSurfaceProxyView& view) { … }
GrSurfaceProxyView GrThreadSafeCache::findOrAdd(const skgpu::UniqueKey& key,
const GrSurfaceProxyView& v) { … }
std::tuple<GrSurfaceProxyView, sk_sp<SkData>> GrThreadSafeCache::findOrAddWithData(
const skgpu::UniqueKey& key,
const GrSurfaceProxyView& v) { … }
sk_sp<GrThreadSafeCache::VertexData> GrThreadSafeCache::MakeVertexData(const void* vertices,
int vertexCount,
size_t vertexSize) { … }
sk_sp<GrThreadSafeCache::VertexData> GrThreadSafeCache::MakeVertexData(sk_sp<GrGpuBuffer> buffer,
int vertexCount,
size_t vertexSize) { … }
std::tuple<sk_sp<GrThreadSafeCache::VertexData>, sk_sp<SkData>>
GrThreadSafeCache::internalFindVerts(const skgpu::UniqueKey& key) { … }
std::tuple<sk_sp<GrThreadSafeCache::VertexData>, sk_sp<SkData>>
GrThreadSafeCache::findVertsWithData(const skgpu::UniqueKey& key) { … }
std::tuple<sk_sp<GrThreadSafeCache::VertexData>, sk_sp<SkData>> GrThreadSafeCache::internalAddVerts(
const skgpu::UniqueKey& key,
sk_sp<VertexData> vertData,
IsNewerBetter isNewerBetter) { … }
std::tuple<sk_sp<GrThreadSafeCache::VertexData>, sk_sp<SkData>> GrThreadSafeCache::addVertsWithData(
const skgpu::UniqueKey& key,
sk_sp<VertexData> vertData,
IsNewerBetter isNewerBetter) { … }
void GrThreadSafeCache::remove(const skgpu::UniqueKey& key) { … }
std::tuple<GrSurfaceProxyView, sk_sp<GrThreadSafeCache::Trampoline>>
GrThreadSafeCache::CreateLazyView(GrDirectContext* dContext,
GrColorType origCT,
SkISize dimensions,
GrSurfaceOrigin origin,
SkBackingFit fit) { … }