/*
 * Copyright 2016 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#ifndef FenceSync_DEFINED
#define FenceSync_DEFINED

#include "include/core/SkTypes.h"

namespace sk_gpu_test {

using PlatformFence = uint64_t;
static constexpr PlatformFence kInvalidFence = 0;

/*
 * This class provides an interface to interact with fence syncs. A fence sync is an object that the
 * client can insert into the GPU command stream, and then at any future time, wait until all
 * commands that were issued before the fence have completed.
 */
class FenceSync {
public:
    virtual PlatformFence SK_WARN_UNUSED_RESULT insertFence() const = 0;
    virtual bool waitFence(PlatformFence) const = 0;
    virtual void deleteFence(PlatformFence) const = 0;

    virtual bool validate() const { return true; }

    virtual ~FenceSync() {}
};

}  // namespace sk_gpu_test

#endif
