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
//
// 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.
//
// SyncEGL.h: Defines the rx::SyncEGL class, the EGL implementation of EGL sync objects.
#ifndef LIBANGLE_RENDERER_GL_EGL_SYNCEGL_H_
#define LIBANGLE_RENDERER_GL_EGL_SYNCEGL_H_
#include "libANGLE/renderer/EGLSyncImpl.h"
namespace egl
{
class AttributeMap;
}
namespace rx
{
class FunctionsEGL;
class SyncEGL final : public EGLSyncImpl
{
public:
SyncEGL(const FunctionsEGL *egl);
~SyncEGL() override;
void onDestroy(const egl::Display *display) override;
egl::Error initialize(const egl::Display *display,
const gl::Context *context,
EGLenum type,
const egl::AttributeMap &attribs) override;
egl::Error clientWait(const egl::Display *display,
const gl::Context *context,
EGLint flags,
EGLTime timeout,
EGLint *outResult) override;
egl::Error serverWait(const egl::Display *display,
const gl::Context *context,
EGLint flags) override;
egl::Error getStatus(const egl::Display *display, EGLint *outStatus) override;
egl::Error dupNativeFenceFD(const egl::Display *display, EGLint *result) const override;
private:
const FunctionsEGL *mEGL;
EGLSync mSync;
};
} // namespace rx
#endif // LIBANGLE_RENDERER_GL_EGL_IMAGEEGL_H_