After more investigation, I was able to trace this to a bug in my OpenGL
initialization logic.
The following (psuedocode) sequence, forces fglrx to revert to indirect
rendering:
dpy = XOpenDisplay()
visual = glXChooseVisual(dpy)
XCloseDisplay(dpy)
...
dpy2 = XOpenDisplay()
ctx = glXCreateContext(dpy2, visual) <-- fglrx reverts to indirect
rendering
...
Changing the code to use the same display connection for glXChooseVisual
and glXCreateContext solves this problem.
I do not know if what I was doing was wrong/prohibited in X11 (wasn't able
to find any relevant information on the net). It seems, however, that
there are other applications affected by this issue (VLC for example) -
although they may, or may not follow the same code pattern.
Please confirm if this solves the issue for you.