blob: 6b5d1c1ec4511bcc7eebab9ef11482e962b3e30c [file] [edit]
/*
* Copyright 2024 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "include/gpu/graphite/PrecompileContext.h"
#include "src/gpu/graphite/ResourceProvider.h"
#include "src/gpu/graphite/SharedContext.h"
namespace skgpu::graphite {
#define ASSERT_SINGLE_OWNER SKGPU_ASSERT_SINGLE_OWNER(&fSingleOwner)
PrecompileContext::~PrecompileContext() {
ASSERT_SINGLE_OWNER
}
PrecompileContext::PrecompileContext(sk_sp<SharedContext> sharedContext)
: fSharedContext(sharedContext) {
// ResourceProviders are not thread-safe. Here we create a ResourceProvider
// specifically for the thread on which precompilation will occur.
static constexpr size_t kEmptyBudget = 0;
fResourceProvider =
fSharedContext->makeResourceProvider(&fSingleOwner, SK_InvalidGenID, kEmptyBudget);
}
void PrecompileContext::purgePipelinesNotUsedInMs(std::chrono::milliseconds msNotUsed) {
ASSERT_SINGLE_OWNER
auto purgeTime = skgpu::StdSteadyClock::now() - msNotUsed;
fSharedContext->globalCache()->purgePipelinesNotUsedSince(purgeTime);
}
} // namespace skgpu::graphite