| /* |
| * 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 |