/* * 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 "include/gpu/GrBackendSemaphore.h" /** * Represents a semaphore-like GPU synchronization object. */ class GrSemaphore { public: virtual ~GrSemaphore() {} // 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; private: friend class GrGpu; // for setIsOwned // This is only used in GrGpu to handle the case where we created a semaphore that was meant to // be borrowed, but we failed to submit it. So we must go back and switch the semaphore to owned // so that it gets deleted. virtual void setIsOwned() = 0; }; #endif