Skip to content

A collection of fixes to get OpenGL working with old (before Ivy Bridge and Bay Trail) Intel GPU on Windows 10 for programs declaring Windows 10 compatibility

License

Notifications You must be signed in to change notification settings

SteelT1/save-legacy-intel-opengl

 
 

Repository files navigation

About Save Legacy Intel OpenGL

This repository is intended to be a catalog of fixes to get OpenGL working on Windows 10 for programs coded to advertise Window 10 compatibility on old Intel graphics controllers. The following graphics controllers generations are affected by this issue:

  • 3rd generation Graphics Media Accelerators except GMA 910 and 915 series; [1]
  • 4th generation Graphics Media Accelerators;
  • PowerVR edition Graphics Media Accelerators;
  • 1st and 2nd generations Intel HD Graphics.

Note [1]: Intel GMA 910 and 915 series released in 2004 and 2005 respectively didn't get WDDM driver which means they only work with Windows XP, Vista and 7 according to Wikipedia.

End-user guide

  • download the whole code as ZIP and extract it;
  • double-click the .cmd file intended for the program you want to fix OpenGL for [2],

[2] Some program fixes included are for software runtimes like Java. If your program is using such runtime make sure you apply the fix for the runtime first and see if the issue goes away. You don't want to waste both mine and your time with an invalid contribution like the individual from here did.

If a program has both 32-bit and 64-bit versions and you have only one of them installed, the one you don't have gets fixed in advance in case you install it at a later date see #1.

You don't need Application Compatibility Toolkit to install fixes. You only need the affected program and a copy of this repository codebase.

Why we have this issue

In order to fix any problem we must understand its root cause. In the early days of Windows 10 development Microsoft decided to change the Windows major version from 6 to 10. However Microsoft thought it is enough to provide software developers APIs to advertise Windows 10 compatibility. Programs that advertise compatibility get current OS version when they ask for it, others get the old 6.3 format. When implementing this Microsoft forgot about dynamic link libraries or maybe was unable to do anything about them. There is no similar mechanism(s) for DLLs as far as I know, they always inherit Windows version received by the programs that loads them. As a result of this, things go south when a program advertising Windows 10 compatibility loads a DLL that is not ready for current Windows 10 major version. Anything can happen but most likely the DLL just unloads right away. Intel OpenGL driver for iGPU generations listed above is the perfect example and as a result it unloads immediately.

Determine if a program is affected without running it (for advanced users)

It is possible to determine if a program is affected by inspecting its manifest if exists as shown in this video Play

Ways to fix this problem

  1. patch Intel OpenGL driver to recognize Windows 10 major version

Done by Marcinosoft for various Intel GPU generations. DLLs are scattered throughout this issue thread.

Pros:

  • it fixes all affected programs at once if enough effort is put into overcoming the cons.

Cons:

  • breaks digital signature of the OpenGL driver which needs fixing by removing it and replacing it with new code signature to retain compatibility with protected processes like Virtualbox;
  • if downloading a pre-patched copy from Internet (not recommended) it must be for your Intel GPU generation;
  • this is the riskiest method.
  1. Alter or remove the manifest of programs lacking OpenGL support (remove the tag that contains {8 unique identifier from the manifest)

Pros:

  • less risky than OpenGL driver patching.

Cons:

  • can only fix affected programs individually;
  • basic usage of binary editing tools is needed for embedded manifests;
  • it is still a manual process that is not mass deployment friendly;
  • basic HTML and XML knowledge is needed;
  • cannot fix protected processes like Virtualbox.
  1. Use Mesa3D as an alternative software renderer to Windows inbox OpenGL 1.1 software renderer. Install Mesa3D desktop OpenGL drivers using system-wide deployment tool.

Pros:

  • Supports OpenGL 3.3 while OpenGL supported by affected drivers even when fixed barely get to OpenGL 3.1;
  • it fixes all affected programs at once;
  • since it's a software rasterizer it works through RDP. GPU OpenGL doesn't work through RDP;
  • can be installed even if GPU OpenGL is working correctly, e.g. just to get RDP OpenGL support.

Cons:

  • not digitally signed but you can sign it with an Ascertia Free Try code signing certificate if you want;
  • far slower than the GPU since it is still a software renderer.
  1. create a compatibility shim with Win81RTMVersionLie fix for Intel OpenGL driver applied to affected programs individually (this is the method used by this project)

Pros:

  • cleanest method (it doesn't touch the program directly);
  • it is mass deployment friendly (we can create a repository of fixes with people picking the ones they need);
  • using its internal version of Compatibility Administrator Microsoft can create a master fix that works for all affected programs, it might even work in kernel mode and for programs using protected process APIs like Virtualbox. Feedback suggesting this enhancement is filed here.

Cons:

  • public version of Compatibility Administrator cannot fix kernel mode and protected processes like Virtualbox;
  • public version of Compatibility Administrator can only fix affected programs individually;
  • creation of fixes requires decent knowledge in using Compatibility Administrator tool.

Video tutorial on creating a compatibility shim with Win81RTMVersionLie fix is below Play

About

A collection of fixes to get OpenGL working with old (before Ivy Bridge and Bay Trail) Intel GPU on Windows 10 for programs declaring Windows 10 compatibility

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Batchfile 100.0%