From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- .../checkout/src/libANGLE/entry_points_utils.h | 127 +++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 gfx/angle/checkout/src/libANGLE/entry_points_utils.h (limited to 'gfx/angle/checkout/src/libANGLE/entry_points_utils.h') diff --git a/gfx/angle/checkout/src/libANGLE/entry_points_utils.h b/gfx/angle/checkout/src/libANGLE/entry_points_utils.h new file mode 100644 index 0000000000..c5a3178308 --- /dev/null +++ b/gfx/angle/checkout/src/libANGLE/entry_points_utils.h @@ -0,0 +1,127 @@ +// +// Copyright 2018 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. +// +// entry_point_utils: +// These helpers are used in GL/GLES entry point routines. + +#ifndef LIBANGLE_ENTRY_POINT_UTILS_H_ +#define LIBANGLE_ENTRY_POINT_UTILS_H_ + +#include "angle_gl.h" +#include "common/Optional.h" +#include "common/PackedEnums.h" +#include "common/angleutils.h" +#include "common/entry_points_enum_autogen.h" +#include "common/mathutil.h" +#include "libANGLE/Context.h" +#include "libANGLE/Display.h" + +namespace gl +{ +// A template struct for determining the default value to return for each entry point. +template +struct DefaultReturnValue; + +// Default return values for each basic return type. +template +struct DefaultReturnValue +{ + static constexpr GLint kValue = -1; +}; + +// This doubles as the GLenum return value. +template +struct DefaultReturnValue +{ + static constexpr GLuint kValue = 0; +}; + +template +struct DefaultReturnValue +{ + static constexpr GLboolean kValue = GL_FALSE; +}; + +template +struct DefaultReturnValue +{ + static constexpr ShaderProgramID kValue = {0}; +}; + +// Catch-all rules for pointer types. +template +struct DefaultReturnValue +{ + static constexpr const PointerType *kValue = nullptr; +}; + +template +struct DefaultReturnValue +{ + static constexpr PointerType *kValue = nullptr; +}; + +// Overloaded to return invalid index +template <> +struct DefaultReturnValue +{ + static constexpr GLuint kValue = GL_INVALID_INDEX; +}; + +// Specialized enum error value. +template <> +struct DefaultReturnValue +{ + static constexpr GLenum kValue = GL_WAIT_FAILED; +}; + +// glTestFenceNV should still return TRUE for an invalid fence. +template <> +struct DefaultReturnValue +{ + static constexpr GLboolean kValue = GL_TRUE; +}; + +template +constexpr ANGLE_INLINE ReturnType GetDefaultReturnValue() +{ + return DefaultReturnValue::kValue; +} + +#if ANGLE_CAPTURE_ENABLED +# define ANGLE_CAPTURE_GL(Func, ...) CaptureCallToFrameCapture(Capture##Func, __VA_ARGS__) +# define ANGLE_CAPTURE_EGL(Func, ...) CaptureCallToCaptureEGL(Capture##Func, __VA_ARGS__) +#else +# define ANGLE_CAPTURE_GL(...) +# define ANGLE_CAPTURE_EGL(...) +#endif // ANGLE_CAPTURE_ENABLED + +#define EGL_EVENT(EP, FMT, ...) EVENT(nullptr, EGL##EP, FMT, ##__VA_ARGS__) + +inline int CID(const Context *context) +{ + return context == nullptr ? 0 : static_cast(context->id().value); +} +} // namespace gl + +namespace egl +{ +inline int CID(EGLDisplay display, EGLContext context) +{ + auto *displayPtr = reinterpret_cast(display); + if (!Display::isValidDisplay(displayPtr)) + { + return -1; + } + auto *contextPtr = reinterpret_cast(context); + if (!displayPtr->isValidContext(contextPtr)) + { + return -1; + } + return gl::CID(contextPtr); +} +} // namespace egl + +#endif // LIBANGLE_ENTRY_POINT_UTILS_H_ -- cgit v1.2.3