// // Copyright 2016 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // SyncVk: // Defines the class interface for SyncVk, implementing SyncImpl. // #ifndef LIBANGLE_RENDERER_VULKAN_FENCESYNCVK_H_ #define LIBANGLE_RENDERER_VULKAN_FENCESYNCVK_H_ #include "libANGLE/renderer/EGLSyncImpl.h" #include "libANGLE/renderer/SyncImpl.h" #include "libANGLE/renderer/vulkan/vk_resource.h" namespace egl { class AttributeMap; } namespace rx { namespace vk { // Represents an invalid native fence FD. constexpr int kInvalidFenceFd = …; class ExternalFence final : angle::NonCopyable { … }; SharedExternalFence; MapVkResultToApiType; class SyncHelperInterface : angle::NonCopyable { … }; // Implementation of fence types - glFenceSync, and EGLSync(EGL_SYNC_FENCE_KHR). // The behaviors of SyncVk and EGLFenceSyncVk as fence syncs are currently // identical for the Vulkan backend, and this class implements both interfaces. class SyncHelper final : public vk::Resource, public SyncHelperInterface { … }; // Implementation of sync types: EGLSync(EGL_SYNC_ANDROID_NATIVE_FENCE_ANDROID). class SyncHelperNativeFence final : public SyncHelperInterface { … }; } // namespace vk // Implementor for glFenceSync. class SyncVk final : public SyncImpl { … }; // Implementor for EGLSync. class EGLSyncVk final : public EGLSyncImpl { … }; } // namespace rx #endif // LIBANGLE_RENDERER_VULKAN_FENCESYNCVK_H_