#include "include/core/SkData.h"
#include "include/core/SkRefCnt.h"
#include "include/gpu/ganesh/GrDirectContext.h"
#include "include/private/base/SkAssert.h"
#include "include/private/gpu/ganesh/GrTypesPriv.h"
#include "src/core/SkLRUCache.h"
#include "src/gpu/ganesh/GrCaps.h"
#include "src/gpu/ganesh/GrDirectContextPriv.h"
#include "src/gpu/ganesh/GrProgramDesc.h"
#include "src/gpu/ganesh/gl/GrGLGpu.h"
#include "src/gpu/ganesh/gl/GrGLProgram.h"
#include "src/gpu/ganesh/gl/builders/GrGLProgramBuilder.h"
#include <memory>
#include <utility>
class GrProgramInfo;
struct GrGLGpu::ProgramCache::Entry { … };
GrGLGpu::ProgramCache::ProgramCache(int runtimeProgramCacheSize)
: … { … }
GrGLGpu::ProgramCache::~ProgramCache() { … }
void GrGLGpu::ProgramCache::abandon() { … }
void GrGLGpu::ProgramCache::reset() { … }
sk_sp<GrGLProgram> GrGLGpu::ProgramCache::findOrCreateProgram(GrDirectContext* dContext,
const GrProgramInfo& programInfo) { … }
sk_sp<GrGLProgram> GrGLGpu::ProgramCache::findOrCreateProgram(GrDirectContext* dContext,
const GrProgramDesc& desc,
const GrProgramInfo& programInfo,
Stats::ProgramCacheResult* stat) { … }
sk_sp<GrGLProgram> GrGLGpu::ProgramCache::findOrCreateProgramImpl(GrDirectContext* dContext,
const GrProgramDesc& desc,
const GrProgramInfo& programInfo,
Stats::ProgramCacheResult* stat) { … }
bool GrGLGpu::ProgramCache::precompileShader(GrDirectContext* dContext,
const SkData& key,
const SkData& data) { … }