| /* | 
 |  * 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 |