tzh
2024-08-22 c7d0944258c7d0943aa7b2211498fd612971ce27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/*
 * Copyright 2017 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */
 
#ifndef GrSemaphore_DEFINED
#define GrSemaphore_DEFINED
 
#include "GrBackendSemaphore.h"
#include "GrGpuResource.h"
 
/**
 * Represents a semaphore-like GPU synchronization object. This is a slightly odd fit for
 * GrGpuResource because we don't care about budgeting, recycling, or read/write references for
 * these. However, making it a GrGpuResource makes it simpler to handle releasing/abandoning these
 * along with other resources. If more cases like this arise we could consider moving some of the
 * unused functionality off of GrGpuResource.
 */
class GrSemaphore : public GrGpuResource {
public:
    // The derived class can return its GrBackendSemaphore. This is used when flushing with signal
    // semaphores so we can set the client's GrBackendSemaphore object after we've created the
    // internal semaphore.
    virtual GrBackendSemaphore backendSemaphore() const = 0;
 
    const char* getResourceType() const override { return "semaphore"; }
 
protected:
    explicit GrSemaphore(GrGpu* gpu) : INHERITED(gpu) {}
 
private:
    size_t onGpuMemorySize() const override { return 0; }
 
    typedef GrGpuResource INHERITED;
};
 
#endif