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/Platform.cpp | 76 ++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 gfx/angle/checkout/src/libANGLE/Platform.cpp (limited to 'gfx/angle/checkout/src/libANGLE/Platform.cpp') diff --git a/gfx/angle/checkout/src/libANGLE/Platform.cpp b/gfx/angle/checkout/src/libANGLE/Platform.cpp new file mode 100644 index 0000000000..d798fd4e86 --- /dev/null +++ b/gfx/angle/checkout/src/libANGLE/Platform.cpp @@ -0,0 +1,76 @@ +// +// Copyright 2015 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. +// + +// Platform.cpp: Implementation methods for angle::Platform. + +#include + +#include + +#include "common/debug.h" + +namespace +{ +// TODO(jmadill): Make methods owned by egl::Display. +angle::PlatformMethods &PlatformMethods() +{ + static angle::PlatformMethods platformMethods; + return platformMethods; +} +} // anonymous namespace + +angle::PlatformMethods *ANGLEPlatformCurrent() +{ + return &PlatformMethods(); +} + +bool ANGLE_APIENTRY ANGLEGetDisplayPlatform(angle::EGLDisplayType display, + const char *const methodNames[], + unsigned int methodNameCount, + void *context, + void *platformMethods) +{ + angle::PlatformMethods **platformMethodsOut = + reinterpret_cast(platformMethods); + + // We allow for a lower input count of impl platform methods if the subset is correct. + if (methodNameCount > angle::g_NumPlatformMethods) + { + ERR() << "Invalid platform method count: " << methodNameCount << ", expected " + << angle::g_NumPlatformMethods << "."; + return false; + } + + for (unsigned int nameIndex = 0; nameIndex < methodNameCount; ++nameIndex) + { + const char *expectedName = angle::g_PlatformMethodNames[nameIndex]; + const char *actualName = methodNames[nameIndex]; + + // Skip deprecated methods. The names of these methods start with |placeholder|. + constexpr char kPlaceholder[] = "placeholder"; + if (strncmp(expectedName, kPlaceholder, sizeof(kPlaceholder) - 1) == 0) + { + continue; + } + if (strcmp(expectedName, actualName) != 0) + { + ERR() << "Invalid platform method name: " << actualName << ", expected " << expectedName + << "."; + return false; + } + } + + // TODO(jmadill): Store platform methods in display. + PlatformMethods().context = context; + *platformMethodsOut = &PlatformMethods(); + return true; +} + +void ANGLE_APIENTRY ANGLEResetDisplayPlatform(angle::EGLDisplayType display) +{ + // TODO(jmadill): Store platform methods in display. + PlatformMethods() = angle::PlatformMethods(); +} -- cgit v1.2.3