blob: f20552023d86b924bccf3553d5333da4054556d2 [file] [log] [blame]
/*
* 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