Crash with GLShareContexts on good graphics card

Archives Forums/BlitzMax Bug Reports/Crash with GLShareContexts on good graphics card

ima747(Posted 2010) [#1]
I know there can be issues with GLShareContexts on lower end/older graphics cards, but I have an issue with a high end system.

Mac Pro with an ATI Radeon X1900 XT running 2 displays in PCIe Slot-1, and an NVIDIA GeForce 7300 GT running a 3rd screen fron PCIe Slot-2.

OS X 10.6.3

MaxGUI canvase(s) work fine. (single or multiple)
MaxGUI canvase(s) with GLShareContexts works fine (single or multiple)
Windowed Graphics works fine (Graphics() with depth set to 0)
Windowed graphics with GLShareContexts works fine
Full screen graphics works fine
* Full screen graphics with GLShareContexts causes the program to just exit.

Running with debug on produces:
invalid share context
invalid contex
Unable to create GL Context

The following will cause the crash
GLShareContexts()
Graphics(DesktopWidth(), DesktopHeight(), DesktopDepth())


Using different full screen resolutions/refreshes/depths doesn't fix it. Commenting out GLShareContexts() (as noted above) will work fine. Setting depth to 0 to use windowed mode works fine.

Digging through glgraphics.mod/glgraphics.macos.m and disabling shared contexts in _validateContext by changing
glContext=[[NSOpenGLContext alloc] initWithFormat:glFormat shareContext:_sharedContext];
to
glContext=[[NSOpenGLContext alloc] initWithFormat:glFormat shareContext:nil];
causes it to work, however that disables the shared contexts so it's not a fix.

I wrote a function to kill the shared context, which works but there is other graphics memory corruption as a result, and doesn't really solve the base problem.

[Update]
Further testing shows it only happens if both cards are being used. If you use just 1 or the other card it works fine. Probably a problem with the OS and different graphics drivers? Odd that it wouldn't have a problem moving a window from 1 head to another across cards though...


marksibly(Posted 2010) [#2]
Hi,

Why do you need to use GLShareContexts in fullscreen mode?

GLShareContexts was really intended for use with multiple canvases on the desktop. There's probably not I can do about your problem anyway as it's such a specific setup.

My recommendation would just be to not use GLShareContexts in fullscreen mode!