| /* |
| * 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 |