xref: /aosp_15_r20/external/skia/src/text/SlugFromBuffer.cpp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1 /*
2  * Copyright 2023 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 "include/core/SkRefCnt.h"
9 #include "include/core/SkSerialProcs.h"
10 #include "include/private/base/SkAssert.h"
11 #include "include/private/chromium/Slug.h"
12 #include "src/core/SkReadBuffer.h"
13 
14 #include <atomic>
15 #include <cstdint>
16 
17 // This file contains Slug methods that need to be defined on CPU and GPU builds, even though
18 // Slugs aren't fully implemented in the CPU backend (yet?)
19 
20 namespace sktext::gpu {
21 
MakeFromBuffer(SkReadBuffer & buffer)22 sk_sp<Slug> Slug::MakeFromBuffer(SkReadBuffer& buffer) {
23     auto procs = buffer.getDeserialProcs();
24     if (procs.fSlugProc) {
25         return procs.fSlugProc(buffer, procs.fSlugCtx);
26     }
27     SkDEBUGFAIL("Should have set serial procs");
28     return nullptr;
29 }
30 
NextUniqueID()31 uint32_t Slug::NextUniqueID() {
32     static std::atomic<uint32_t> nextUnique = 1;
33     return nextUnique++;
34 }
35 
36 }  // namespace sktext::gpu
37