Hash :
9049d321
Author :
Date :
2019-03-27T14:08:44
Vulkan: Pass the current context to egl Sync operations. The EGL_KHR_fence_sync spec says that if a flush is needed before waiting on the sync, it's done on the current context for the current thread. This helps simplify the multithreading design, we don't need to worry about flusing on a context that may no longer exist or is executing on a different thread. It does allow infinite waits because the context with the fence is never flushed but the spec allows this. BUG=angleproject:2464 Change-Id: I8bf2f93c408fee2dae95caa5bb9c76ba67687931 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1542256 Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
//
// Copyright 2019 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.
//
// EGLSyncImpl.h: Defines the rx::EGLSyncImpl class.
#ifndef LIBANGLE_RENDERER_EGLSYNCIMPL_H_
#define LIBANGLE_RENDERER_EGLSYNCIMPL_H_
#include "libANGLE/Error.h"
#include "common/angleutils.h"
#include "angle_gl.h"
namespace egl
{
class Display;
} // namespace egl
namespace gl
{
class Context;
} // namespace gl
namespace rx
{
class EGLSyncImpl : angle::NonCopyable
{
public:
EGLSyncImpl() {}
virtual ~EGLSyncImpl() {}
virtual void onDestroy(const egl::Display *display) {}
virtual egl::Error initialize(const egl::Display *display,
const gl::Context *context,
EGLenum type) = 0;
virtual egl::Error clientWait(const egl::Display *display,
const gl::Context *context,
EGLint flags,
EGLTime timeout,
EGLint *outResult) = 0;
virtual egl::Error serverWait(const egl::Display *display,
const gl::Context *context,
EGLint flags) = 0;
virtual egl::Error getStatus(const egl::Display *display, EGLint *outStatus) = 0;
};
} // namespace rx
#endif // LIBANGLE_RENDERER_EGLSYNCIMPL_H_