Hash :
1ff6a6f2
Author :
Date :
2023-11-27T13:08:29
Pass the attribute map to egl::Sync::initialize. The attribute map was typically passed to the impl objects in the constructors. Instead, pass it to the initialize function. This removes the need for many member variables in different backends and opens up the future optimization of re-using sync objects by calling initialize on them with new attributes. Bug: angleproject:8430 Change-Id: If69970462cfed39d9a205034adb5ddd937c5ea31 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5063335 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@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 54 55 56 57 58 59
//
// 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 AttributeMap;
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,
const egl::AttributeMap &attribs) = 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 signal(const egl::Display *display, const gl::Context *context, EGLint mode);
virtual egl::Error getStatus(const egl::Display *display, EGLint *outStatus) = 0;
virtual egl::Error copyMetalSharedEventANGLE(const egl::Display *display,
void **outEvent) const;
virtual egl::Error dupNativeFenceFD(const egl::Display *display, EGLint *fdOut) const;
};
} // namespace rx
#endif // LIBANGLE_RENDERER_EGLSYNCIMPL_H_