From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- gfx/angle/checkout/src/libANGLE/queryconversions.h | 138 +++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 gfx/angle/checkout/src/libANGLE/queryconversions.h (limited to 'gfx/angle/checkout/src/libANGLE/queryconversions.h') diff --git a/gfx/angle/checkout/src/libANGLE/queryconversions.h b/gfx/angle/checkout/src/libANGLE/queryconversions.h new file mode 100644 index 0000000000..7784c33e73 --- /dev/null +++ b/gfx/angle/checkout/src/libANGLE/queryconversions.h @@ -0,0 +1,138 @@ +// +// Copyright 2014 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. +// + +// queryconversions.h: Declaration of state query cast conversions + +#ifndef LIBANGLE_QUERY_CONVERSIONS_H_ +#define LIBANGLE_QUERY_CONVERSIONS_H_ + +#include "angle_gl.h" +#include "common/angleutils.h" + +namespace gl +{ +class Context; + +// Helper class for converting a GL type to a GLenum: +// We can't use CastStateValueEnum generally, because of GLboolean + GLubyte overlap. +// We restrict our use to CastFromStateValue and CastQueryValueTo, where it eliminates +// duplicate parameters. + +template +struct GLTypeToGLenum +{ + // static constexpr GLenum value; +}; + +template <> +struct GLTypeToGLenum +{ + static constexpr GLenum value = GL_INT; +}; +template <> +struct GLTypeToGLenum +{ + static constexpr GLenum value = GL_UNSIGNED_INT; +}; +template <> +struct GLTypeToGLenum +{ + static constexpr GLenum value = GL_BOOL; +}; +template <> +struct GLTypeToGLenum +{ + static constexpr GLenum value = GL_INT_64_ANGLEX; +}; +template <> +struct GLTypeToGLenum +{ + static constexpr GLenum value = GL_UINT_64_ANGLEX; +}; +template <> +struct GLTypeToGLenum +{ + static constexpr GLenum value = GL_FLOAT; +}; + +GLint CastMaskValue(GLuint value); + +template +QueryT CastFromGLintStateValue(GLenum pname, InternalT value); + +template +QueryT CastFromStateValue(GLenum pname, NativeT value); + +template +NativeT CastQueryValueTo(GLenum pname, QueryT value); + +template +GLenum ConvertToGLenum(GLenum pname, ParamType param) +{ + return static_cast(CastQueryValueTo(pname, param)); +} + +template +GLenum ConvertToGLenum(ParamType param) +{ + return ConvertToGLenum(GL_NONE, param); +} + +template +OutType ConvertGLenum(GLenum param) +{ + return static_cast(param); +} + +template +void ConvertGLenumValue(InType param, OutType *out) +{ + *out = ConvertGLenum(static_cast(param)); +} + +template +void ConvertPackedEnum(PackedEnumType param, OutType *out) +{ + *out = static_cast(ToGLenum(param)); +} + +template +GLint ConvertToGLint(ParamType param) +{ + return CastQueryValueTo(GL_NONE, param); +} + +template +bool ConvertToBool(ParamType param) +{ + return param != GL_FALSE; +} + +template +GLboolean ConvertToGLBoolean(ParamType param) +{ + return param ? GL_TRUE : GL_FALSE; +} + +// The GL state query API types are: bool, int, uint, float, int64, uint64 +template +void CastStateValues(const Context *context, + GLenum nativeType, + GLenum pname, + unsigned int numParams, + QueryT *outParams); + +// The GL state query API types are: bool, int, uint, float, int64, uint64 +template +void CastIndexedStateValues(Context *context, + GLenum nativeType, + GLenum pname, + GLuint index, + unsigned int numParams, + QueryT *outParams); +} // namespace gl + +#endif // LIBANGLE_QUERY_CONVERSIONS_H_ -- cgit v1.2.3