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