/*
 * 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"
#include "include/gpu/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
