I have had this issue for a while: When running on an AMD card with an OpenGL debug context, the callstack is severed at the driver-level, when receiving debug-callbacks. Same code gives a full callstack on Nvidia.
While AMD do mention that it may not be present depending on where the error happens, evidently others are able to get a callstack on AMD-hardware. So I suspect my window- or context-creation may be off.
I have created a small test-program, resulting in a severed callstack on AMD, and a nice full callstack on Nvidia. Tested on latest 11.9 drivers on a 6970, win7-64.
http://pastebin.com/0QViHXhZ
You’re talking about synchronized ARB_debug_output, right?
Sounds a bit as if AMD don’t put debug info or rather stack unwind info into their drivers? Do they perhaps have separate debug drivers?
Alfonse - I am, not just the infolog.
I utilized that extension thinking it would be great. I used the async model and got nearly useless callbacks - pretty much just the glGetError() enum and the (human readable) string version of the same. Nearly useless, but at least I get to see every gl error, which is normally none. There’s a breakpoint watching that line of code like a hawk.
I thought I’d get great info by making it a “debug” device context. Turns out it made barely any difference (that I noticed anyways).
We’re supposed to be getting callstacks? I looked over the spec, and (as far as I remember) it was left completely wide open to implementers, meaning implementers did as little as they could get away with, which is just a glGetError enum.
(I’m running nvidia GTX580, latest drivers as of now)
Alfonse - I am, not just the infolog.
Then it’s an AMD driver bug. The main difference between the AMD and ARB debug_info extensions is that ARB_debug_info has a synchronous mode, while the AMD version does not. So it’s likely that AMD just did a short-cut in implementing the ARB version by directly porting it.
I used the async model and got nearly useless callbacks - pretty much just the glGetError() enum and the (human readable) string version of the same.
That’s because you’re on NVIDIA. AMD basically invented the debug_info extension, and the ARB adopted it. So they provide more useful info.
Also, NVIDIA drivers that support 4.2 apparently provide more useful debug information. So it’s just a temporary thing.