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 "include/gpu/GrBackendSemaphore.h" 12 13 /** 14 * Represents a semaphore-like GPU synchronization object. 15 */ 16 class GrSemaphore { 17 public: ~GrSemaphore()18 virtual ~GrSemaphore() {} 19 20 // The derived class can return its GrBackendSemaphore. This is used when flushing with signal 21 // semaphores so we can set the client's GrBackendSemaphore object after we've created the 22 // internal semaphore. 23 virtual GrBackendSemaphore backendSemaphore() const = 0; 24 25 private: 26 friend class GrGpu; // for setIsOwned 27 // This is only used in GrGpu to handle the case where we created a semaphore that was meant to 28 // be borrowed, but we failed to submit it. So we must go back and switch the semaphore to owned 29 // so that it gets deleted. 30 virtual void setIsOwned() = 0; 31 }; 32 33 #endif 34