Why is an OpenGL positional (spot) light interfering with non-positional light

I have a legacy OpenGL fixed-pipeline app which has been ported from Windows (32-bit) to MacOS 64-bit.

The problem is that if I have a scene with a non-positional light, everything works great. If I add a positional spotlight the two lights interact, and I get incorrect results.

This problem does not occur on X86_64 Macs. It does occur when the app is X86_64 running under Rosetta or native ARM64.

So it's either an Apple Silicon OpenGL driver behaviour my code is triggering, or something with the on-chip Apple Silicon graphics.

Here is the "normal" case: the spotlight is to the right:

Here, I have moved the spotlight down (Y = 1). Notice the black areas on the cube. That's incorrect.

Now, I turn off the spotlight by commenting out the "makeALight" call for the spotlight (light 6). Now, the cube is evenly lit.

Here is the test code I use to generate the lights. You will need to install glfw with brew to build it.

Why is an OpenGL positional (spot) light interfering with non-positional light
 
 
Q