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()12ResourceType 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