[Scummvm-git-logs] scummvm master -> e9623740f0529fd06b3bdecb0cf657a74a4a6032

bluegr bluegr at gmail.com
Sun Aug 4 13:18:53 CEST 2019


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
e9623740f0 WIN32: Add a default application manifest


Commit: e9623740f0529fd06b3bdecb0cf657a74a4a6032
    https://github.com/scummvm/scummvm/commit/e9623740f0529fd06b3bdecb0cf657a74a4a6032
Author: Antoniou Athanasios (a.antoniou79 at gmail.com)
Date: 2019-08-04T14:18:50+03:00

Commit Message:
WIN32: Add a default application manifest

This fixes an OpenGL renderer issue for builds with MSYS2/Mingw64 or MSYS2/Mingw32

The issue pertains to MSYS2 adding a default manifest file (default-manifest.o) to the executable

The bug is for PC systems with GPU drivers that were not properly supported for Windows 10 
systems, like Intel HD Graphics series 1st and 2nd generations. In those systems, launching a 
game in ScummVM (built with MSYS2/Mingw) with the OpenGL renderer would cause the game 
screen to be a white blank image, and various warnings would be output to the console, eg.
"WARNING: GL ERROR: GL_INVALID_ENUM on glTexSubImage2D(0x0DE1, 0, 0, area.top, src.w, area.height(), _glFormat, _glType, src.gere.cpp:167)!"
This was due to MSYS2/Mingw builds trying to load the (poorly supported) GPU driver while advertising support for Windows 10 in their
embedded default Manifest file. Hence, the GPU driver DLL (eg ig4icd64.dll) would be unloaded, causing the bug.

More information is available in the following links:
https://github.com/pal1000/save-legacy-intel-graphics
https://github.com/LWJGL/lwjgl/issues/119
https://github.com/msys2/MSYS2-packages/issues/454
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69880

Credits to sluicebox for the VS GenerateManifest flag

Changed paths:
  A dists/win32/scummvm.exe.manifest
    devtools/create_project/msbuild.cpp
    devtools/create_project/visualstudio.cpp
    dists/scummvm.rc


diff --git a/devtools/create_project/msbuild.cpp b/devtools/create_project/msbuild.cpp
index a2cde96..fe73509 100644
--- a/devtools/create_project/msbuild.cpp
+++ b/devtools/create_project/msbuild.cpp
@@ -398,6 +398,7 @@ void MSBuildProvider::createBuildProp(const BuildSetup &setup, bool isRelease, b
 	              "\t<PropertyGroup>\n"
 	              "\t\t<_PropertySheetDisplayName>" << setup.projectDescription << "_" << configuration << outputBitness << "</_PropertySheetDisplayName>\n"
 	              "\t\t<LinkIncremental>" << (isRelease ? "false" : "true") << "</LinkIncremental>\n"
+	              "\t\t<GenerateManifest>false</GenerateManifest>\n"
 	              "\t</PropertyGroup>\n"
 	              "\t<ItemDefinitionGroup>\n"
 	              "\t\t<ClCompile>\n";
diff --git a/devtools/create_project/visualstudio.cpp b/devtools/create_project/visualstudio.cpp
index 44bbf6b..ba0d103 100644
--- a/devtools/create_project/visualstudio.cpp
+++ b/devtools/create_project/visualstudio.cpp
@@ -289,6 +289,7 @@ void VisualStudioProvider::createBuildProp(const BuildSetup &setup, bool isRelea
 		              "\t<Tool\n"
 		              "\t\tName=\"VCLinkerTool\"\n"
 		              "\t\tLinkIncremental=\"1\"\n"
+		              "\t\tGenerateManifest=\"false\"\n"
 		              "\t\tIgnoreDefaultLibraryNames=\"\"\n"
 		              "\t\tSetChecksum=\"true\"\n";
 	} else {
@@ -305,6 +306,7 @@ void VisualStudioProvider::createBuildProp(const BuildSetup &setup, bool isRelea
 		              "\t<Tool\n"
 		              "\t\tName=\"VCLinkerTool\"\n"
 		              "\t\tLinkIncremental=\"2\"\n"
+		              "\t\tGenerateManifest=\"false\"\n"
 		              "\t\tGenerateDebugInformation=\"true\"\n"
 		              "\t\tIgnoreDefaultLibraryNames=\"libcmt.lib\"\n";
 	}
diff --git a/dists/scummvm.rc b/dists/scummvm.rc
index c7846fe..d7b1b3b 100644
--- a/dists/scummvm.rc
+++ b/dists/scummvm.rc
@@ -12,6 +12,7 @@
 #define IDI_COUNT 1002
 #define ID_GDF_XML __GDF_XML
 
+CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "dists/win32/scummvm.exe.manifest"
 IDI_ICON               ICON    DISCARDABLE     "icons/scummvm.ico"
 IDI_COUNT              ICON    DISCARDABLE     "icons/count.ico"
 
@@ -31,13 +32,13 @@ fonts.dat              FILE    "dists/engine-data/fonts.dat"
 #endif
 
 #if PLUGIN_ENABLED_STATIC(ACCESS)
-access.dat           FILE    "dists/engine-data/access.dat"
+access.dat             FILE    "dists/engine-data/access.dat"
 #endif
 #if PLUGIN_ENABLED_STATIC(CRYO)
 cryo.dat               FILE    "dists/engine-data/cryo.dat"
 #endif
 #if PLUGIN_ENABLED_STATIC(CRYOMNI3D)
-cryomni3d.dat               FILE    "dists/engine-data/cryomni3d.dat"
+cryomni3d.dat          FILE    "dists/engine-data/cryomni3d.dat"
 #endif
 #if PLUGIN_ENABLED_STATIC(DRASCULA)
 drascula.dat           FILE    "dists/engine-data/drascula.dat"
@@ -82,7 +83,7 @@ toon.dat               FILE    "dists/engine-data/toon.dat"
 wintermute.zip         FILE    "dists/engine-data/wintermute.zip"
 #endif
 #if PLUGIN_ENABLED_STATIC(XEEN)
-xeen.ccs         FILE    "dists/engine-data/xeen.ccs"
+xeen.ccs               FILE    "dists/engine-data/xeen.ccs"
 #endif
 #if PLUGIN_ENABLED_STATIC(AGI)
 pred.dic               FILE    "dists/pred.dic"
diff --git a/dists/win32/scummvm.exe.manifest b/dists/win32/scummvm.exe.manifest
new file mode 100644
index 0000000..76d99c7
--- /dev/null
+++ b/dists/win32/scummvm.exe.manifest
@@ -0,0 +1,9 @@
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
+    <security>
+      <requestedPrivileges>
+        <requestedExecutionLevel level="asInvoker"/>
+      </requestedPrivileges>
+    </security>
+  </trustInfo>
+</assembly>





More information about the Scummvm-git-logs mailing list