3

I do all of my development on a fairly up-to-date machine, but some of my users use machines from the stone age. It's easy enough to virtualize older operating systems and different CPU architectures, but I haven't found any way to virtualize older GPUs.

When you're developing a program targeting an older version of OpenGL, how do you know if it will work on machines with older GPUs (lower OpenGL versions and fewer available extensions)?

Are there GPU emulators? Ways to turn off certain features on your GPU?

Follow up:

What about using an extension loader generated for a specific version of the API? For example, if I generate a glad files for OpenGL version 2.1 will that limit my context version even if my driver supports higher versions?

Neal Kruis
  • 2,055
  • 3
  • 26
  • 49
  • near the top of your shaders are indicators of OpenGL release ... just make these match desired capacity ... for example 330 core – Scott Stensland Mar 16 '17 at 23:34
  • You check which version/extension "fancy things" are from before you use them, you maybe try it on an older machine you have lying around, and you read users' crash reports when it doesn't work. That's if it's not terribly important. For actually good testing you might want to use actual machines with actual old graphics cards. – user253751 Mar 17 '17 at 03:03

3 Answers3

2

try NVEmulate from nvidia I start use it ages ago to emulate newer GPU's I did not have at my disposal but it can be used also the other way around (downgrade your GPU). It only emulates nvidia GPU's each version of exe has different chips supported.

Your problem is that on old gfx cards there is only old versions of gfx drivers and those are usually the main problem not the gfx card itself. That you can not test at all unless using proper emulator ... because old drivers are not compatible with new cards and vice versa.

I am going around this problem by turning off advanced stuff like multi context for "bad" cards like Intel HD or GLSL and some extensions for old ATI as thy have all screwy OpenGL implementations on Windows ... Each brand has its own quirks and if you are using OpenGL I recommend to target nvidia GPU's. To be fair AMD really step up and made their (former ATI) cards usable what ATI has failed to manage for ages). If you are targeting DirecX then AMD is the way as nvidia has bugs in DirectX implementation for change (usable but contains internal leaks causing slow downs and crashes over time so you need to restart App time to time you know the dark texture bug after playing some game for 2 hours ...)

PS. some gfx bugs are not gfx related for example AMD drivers are extremly susceptible to memory leaks anywhere in app (even if they have nothing to do with gfx) creating unrelated havoc and very hard to debug.

related:

Community
  • 1
  • 1
Spektre
  • 49,595
  • 11
  • 110
  • 380
0

As far as I know, it isn't possible to cover all posibilities.

When you develop your app you'd better know the requisites, which include minimum OS version, minimum OpenGL version, RAM, VRAM.
Handling core functions is often not well implemented in hardware... extensions may be a nightmare.

Ripi2
  • 7,031
  • 1
  • 17
  • 33
0

ubuntu

sudo add-apt-repository ppa:paulo-miguel-dias/mesa
sudo apt update
sudo apt upgrade

and in case of conflicts use dpkg -r ... . say "mesa-vulkan needs mesa9 so nothing installed"

sudo dpkg  -r mesa-vulkan 

to drop out.

export LIBGL_ALWAYS_SOFTWARE=1
.....

in terminal

Alexey
  • 1
  • 1