xref: /aosp_15_r20/external/skia/src/gpu/graphite/GraphiteResourceKey.cpp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1 /*
2  * Copyright 2022 Google LLC
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #include "src/gpu/graphite/GraphiteResourceKey.h"
9 
10 namespace skgpu::graphite {
11 
GenerateResourceType()12 ResourceType GraphiteResourceKey::GenerateResourceType() {
13     static std::atomic<int32_t> nextType{ResourceKey::kInvalidDomain + 1};
14 
15     int32_t type = nextType.fetch_add(1, std::memory_order_relaxed);
16     if (type > SkTo<int32_t>(UINT16_MAX)) {
17         SK_ABORT("Too many Graphite Resource Types");
18     }
19 
20     return static_cast<ResourceType>(type);
21 }
22 
23 } // namespace skgpu::graphite
24 
25