mirror of
https://github.com/godotengine/godot-angle-static.git
synced 2026-01-06 02:09:55 +03:00
ANGLE tests loading wrong opengl32.dll
ANGLE tests try to load opengl32.dll from ANGLE directory instead of system Bug: angleproject:3645 Change-Id: I3a8cea37252d13e915ff54ae6bbac920db16e4c4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1688544 Commit-Queue: Clemen Deng <clemendeng@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
This commit is contained in:
@@ -64,7 +64,8 @@ SampleApplication::SampleApplication(std::string name,
|
||||
}
|
||||
|
||||
// Load EGL library so we can initialize the display.
|
||||
mEntryPointsLib.reset(angle::OpenSharedLibrary(ANGLE_EGL_LIBRARY_NAME));
|
||||
mEntryPointsLib.reset(
|
||||
angle::OpenSharedLibrary(ANGLE_EGL_LIBRARY_NAME, angle::SearchType::ApplicationDir));
|
||||
|
||||
mEGLWindow = EGLWindow::New(glesMajorVersion, glesMinorVersion);
|
||||
mTimer.reset(CreateTimer());
|
||||
|
||||
@@ -51,7 +51,15 @@ class Library : angle::NonCopyable
|
||||
}
|
||||
};
|
||||
|
||||
Library *OpenSharedLibrary(const char *libraryName);
|
||||
// Use SYSTEM_DIR to bypass loading ANGLE libraries with the same name as system DLLS
|
||||
// (e.g. opengl32.dll)
|
||||
enum class SearchType
|
||||
{
|
||||
ApplicationDir,
|
||||
SystemDir
|
||||
};
|
||||
|
||||
Library *OpenSharedLibrary(const char *libraryName, SearchType searchType);
|
||||
|
||||
// Returns true if the process is currently being debugged.
|
||||
bool IsDebuggerAttached();
|
||||
|
||||
@@ -248,7 +248,7 @@ class PosixLibrary : public Library
|
||||
void *mModule = nullptr;
|
||||
};
|
||||
|
||||
Library *OpenSharedLibrary(const char *libraryName)
|
||||
Library *OpenSharedLibrary(const char *libraryName, SearchType searchType)
|
||||
{
|
||||
return new PosixLibrary(libraryName);
|
||||
}
|
||||
|
||||
@@ -245,13 +245,21 @@ bool RunApp(const std::vector<const char *> &args,
|
||||
class Win32Library : public Library
|
||||
{
|
||||
public:
|
||||
Win32Library(const char *libraryName)
|
||||
Win32Library(const char *libraryName, SearchType searchType)
|
||||
{
|
||||
char buffer[MAX_PATH];
|
||||
int ret = snprintf(buffer, MAX_PATH, "%s.%s", libraryName, GetSharedLibraryExtension());
|
||||
if (ret > 0 && ret < MAX_PATH)
|
||||
{
|
||||
mModule = LoadLibraryA(buffer);
|
||||
switch (searchType)
|
||||
{
|
||||
case SearchType::ApplicationDir:
|
||||
mModule = LoadLibraryA(buffer);
|
||||
break;
|
||||
case SearchType::SystemDir:
|
||||
mModule = LoadLibraryExA(buffer, nullptr, LOAD_LIBRARY_SEARCH_SYSTEM32);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -279,9 +287,9 @@ class Win32Library : public Library
|
||||
HMODULE mModule = nullptr;
|
||||
};
|
||||
|
||||
Library *OpenSharedLibrary(const char *libraryName)
|
||||
Library *OpenSharedLibrary(const char *libraryName, SearchType searchType)
|
||||
{
|
||||
return new Win32Library(libraryName);
|
||||
return new Win32Library(libraryName, searchType);
|
||||
}
|
||||
|
||||
bool IsDirectory(const char *filename)
|
||||
|
||||
@@ -33,7 +33,8 @@ void EnsureEGLLoaded()
|
||||
if (gLoaded)
|
||||
return;
|
||||
|
||||
gEntryPointsLib.reset(angle::OpenSharedLibrary(ANGLE_GLESV2_LIBRARY_NAME));
|
||||
gEntryPointsLib.reset(
|
||||
angle::OpenSharedLibrary(ANGLE_GLESV2_LIBRARY_NAME, angle::SearchType::ApplicationDir));
|
||||
angle::LoadEGL_EGL(GlobalLoad);
|
||||
if (!EGL_GetPlatformDisplay)
|
||||
{
|
||||
|
||||
@@ -731,7 +731,8 @@ class ProgramBinariesAcrossPlatforms : public testing::TestWithParam<PlatformsWi
|
||||
FAIL() << "Failed to create OS window";
|
||||
}
|
||||
|
||||
mEntryPointsLib.reset(angle::OpenSharedLibrary(ANGLE_EGL_LIBRARY_NAME));
|
||||
mEntryPointsLib.reset(
|
||||
angle::OpenSharedLibrary(ANGLE_EGL_LIBRARY_NAME, angle::SearchType::ApplicationDir));
|
||||
}
|
||||
|
||||
EGLWindow *createAndInitEGLWindow(angle::PlatformParameters ¶m)
|
||||
|
||||
@@ -364,7 +364,8 @@ ANGLERenderTest::ANGLERenderTest(const std::string &name, const RenderTestParams
|
||||
{
|
||||
case angle::GLESDriverType::AngleEGL:
|
||||
mGLWindow = EGLWindow::New(testParams.majorVersion, testParams.minorVersion);
|
||||
mEntryPointsLib.reset(angle::OpenSharedLibrary(ANGLE_EGL_LIBRARY_NAME));
|
||||
mEntryPointsLib.reset(angle::OpenSharedLibrary(ANGLE_EGL_LIBRARY_NAME,
|
||||
angle::SearchType::ApplicationDir));
|
||||
break;
|
||||
case angle::GLESDriverType::SystemEGL:
|
||||
std::cerr << "Not implemented." << std::endl;
|
||||
@@ -373,7 +374,8 @@ ANGLERenderTest::ANGLERenderTest(const std::string &name, const RenderTestParams
|
||||
case angle::GLESDriverType::SystemWGL:
|
||||
#if defined(ANGLE_USE_UTIL_LOADER) && defined(ANGLE_PLATFORM_WINDOWS)
|
||||
mGLWindow = WGLWindow::New(testParams.majorVersion, testParams.minorVersion);
|
||||
mEntryPointsLib.reset(angle::OpenSharedLibrary("opengl32"));
|
||||
mEntryPointsLib.reset(
|
||||
angle::OpenSharedLibrary("opengl32", angle::SearchType::ApplicationDir));
|
||||
#else
|
||||
std::cout << "WGL driver not available. Skipping test." << std::endl;
|
||||
mSkipTest = true;
|
||||
|
||||
@@ -63,7 +63,8 @@ EGLMakeCurrentPerfTest::EGLMakeCurrentPerfTest()
|
||||
mOSWindow = OSWindow::New();
|
||||
mOSWindow->initialize("EGLMakeCurrent Test", 64, 64);
|
||||
|
||||
mEGLLibrary.reset(angle::OpenSharedLibrary(ANGLE_EGL_LIBRARY_NAME));
|
||||
mEGLLibrary.reset(
|
||||
angle::OpenSharedLibrary(ANGLE_EGL_LIBRARY_NAME, angle::SearchType::ApplicationDir));
|
||||
|
||||
angle::LoadProc getProc =
|
||||
reinterpret_cast<angle::LoadProc>(mEGLLibrary->getSymbol("eglGetProcAddress"));
|
||||
|
||||
@@ -1340,7 +1340,7 @@ Library *ANGLETestEnvironment::GetEGLLibrary()
|
||||
#if defined(ANGLE_USE_UTIL_LOADER)
|
||||
if (!gEGLLibrary)
|
||||
{
|
||||
gEGLLibrary.reset(OpenSharedLibrary(ANGLE_EGL_LIBRARY_NAME));
|
||||
gEGLLibrary.reset(OpenSharedLibrary(ANGLE_EGL_LIBRARY_NAME, SearchType::ApplicationDir));
|
||||
}
|
||||
#endif // defined(ANGLE_USE_UTIL_LOADER)
|
||||
return gEGLLibrary.get();
|
||||
@@ -1351,7 +1351,7 @@ Library *ANGLETestEnvironment::GetWGLLibrary()
|
||||
#if defined(ANGLE_USE_UTIL_LOADER) && defined(ANGLE_PLATFORM_WINDOWS)
|
||||
if (!gWGLLibrary)
|
||||
{
|
||||
gWGLLibrary.reset(OpenSharedLibrary("opengl32"));
|
||||
gWGLLibrary.reset(OpenSharedLibrary("opengl32", SearchType::SystemDir));
|
||||
}
|
||||
#endif // defined(ANGLE_USE_UTIL_LOADER) && defined(ANGLE_PLATFORM_WINDOWS)
|
||||
return gWGLLibrary.get();
|
||||
|
||||
@@ -33,7 +33,8 @@ bool IsANGLEConfigSupported(const PlatformParameters ¶m, OSWindow *osWindow)
|
||||
std::unique_ptr<angle::Library> eglLibrary;
|
||||
|
||||
#if defined(ANGLE_USE_UTIL_LOADER)
|
||||
eglLibrary.reset(angle::OpenSharedLibrary(ANGLE_EGL_LIBRARY_NAME));
|
||||
eglLibrary.reset(
|
||||
angle::OpenSharedLibrary(ANGLE_EGL_LIBRARY_NAME, angle::SearchType::ApplicationDir));
|
||||
#endif
|
||||
|
||||
EGLWindow *eglWindow = EGLWindow::New(param.majorVersion, param.minorVersion);
|
||||
@@ -48,7 +49,8 @@ bool IsANGLEConfigSupported(const PlatformParameters ¶m, OSWindow *osWindow)
|
||||
bool IsWGLConfigSupported(const PlatformParameters ¶m, OSWindow *osWindow)
|
||||
{
|
||||
#if defined(ANGLE_PLATFORM_WINDOWS) && defined(ANGLE_USE_UTIL_LOADER)
|
||||
std::unique_ptr<angle::Library> openglLibrary(angle::OpenSharedLibrary("opengl32"));
|
||||
std::unique_ptr<angle::Library> openglLibrary(
|
||||
angle::OpenSharedLibrary("opengl32", angle::SearchType::SystemDir));
|
||||
|
||||
WGLWindow *wglWindow = WGLWindow::New(param.majorVersion, param.minorVersion);
|
||||
ConfigParameters configParams;
|
||||
|
||||
Reference in New Issue
Block a user