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