[HOpenGL] HOpenGL and --enable-threaded-rts
Andrew J Bromage
Thu, 20 Jun 2002 12:31:25 +1000
On Thu, Jun 20, 2002 at 12:54:25AM +0200, Wolfgang Thaller wrote:
> ? I don't follow you. OpenGL can deal with multiple contexts, and it
> keeps the current context in thread-local state, so it can even deal
> with multiple contexts at the same time. We can't prevent OpenGL from
> using thread-local state. The "first version" of the proposed solution
> would only allow a single global context at one time for HOpenGL, and
> copy that to the thread-local state of every thread that executes
> haskell code.
I just had another idea. Would it be sufficient to exclusively bind a
thread to a specific (albeit arbitrary) OS thread on a temporary
basis, kind of like a lock or a transaction?
I've never seen an non-GLUT OpenGL program which needs the thread
local storage for long. Usually just for the duration of a single
update is sufficient. That way you keep the efficiency of Haskell's
thread scheduling where you can and bypass it where you can't.
Disclaimer: My experience is in visual effects. Our software ran at
"interactive" speeds, not "real time". The rules of other industries,
such as games, might be different.