I struggled many hours recently with subroutines and I didn't manage to make them ok under OS X with a GeForce GPU.
I added a new simple demo that shows a pqtorus rendered three times, each time with a different subroutine (texture, phong, phong+texture).
The demo is available in the code sample pack (http://www.geeks3d.com/glslhacker/cs/):
host_api/gl-400-arb-shader-subroutine/demo_gl4_v3.xml
The latest GLSL Hacker 0.7.2.0 (http://www.geeks3d.com/forums/index.php/topic,3729.0.html) is recommended.
The demo works fine on Windows. On OS X, the demo works fine for Intel and AMD GPUs but not for NVIDIA GPUs. With the GT650M / OSX, the same subroutine is used to shade all meshes and that's the bug. I suspect a bug on OSX with GeForce GPUs because the demo works fine everywhere else. But since it's a NVIDIA related issue, my code can be also guilty...
OK - NVIDIA GeForce GTX 660 - R337.50 - Win7 64-bit
(http://www.ozone3d.net/public/jegx/201410/glslhacker_opengl4_subroutines_gtx660_win64_ok.jpg)
OK - Intel HD 4000 - OS X 10.9
(http://www.ozone3d.net/public/jegx/201410/glslhacker_opengl4_subroutines_intel_hd4000_osx_ok.jpg)
OK - AMD Radeon HD 6870 - OS X 10.9 (Hackintosh)
(http://www.ozone3d.net/public/jegx/201410/glslhacker_opengl4_subroutines_radeon_hd6870_osx_ok.jpg)
ERROR - NVIDIA GeForce GT 650M (Macbook Retina Mid-2012) - OS X 10.9
(http://www.ozone3d.net/public/jegx/201410/glslhacker_opengl4_subroutines_geforce_gt650m_osx_error.jpg)
you know there is new MacOS 10.10 ready and even a big jump in Nvidia Web drivers to 343:
http://us.download.nvidia.com/Mac/Quadro_Certified/343.01.01f01/WebDriver-343.01.01f01.pkg
can you test if fixes the issues?
will be good to know..
I will try to update the NV driver, but I don't know if the Quadro driver will be ok for the GT650M.
Will try also OSX 10.10 asap...
OS X 10.10 Yosemite + NVIDIA R343.01: not better!
(http://www.ozone3d.net/public/jegx/201410/osx_yosemite_geforce_gtx780_opengl4_subroutines_error.jpg)
Linux Mint 17 64-bit + R331.104 + GTX 680: works fine!
(http://www.ozone3d.net/public/jegx/201411/glslhacker_subroutines_linux_gtx680.jpg)