Re: [GtkGLExt] Multithreading vs glXMakeCurrent()



Multithreading with opengl is a bad idea, but only because of drivers using tls (thread local storage). Nvidia's driver is one such driver and a context can only be access/manipulated in the thread that created it. Essentially this means you must communicate with an opengl drawing/managing thread using message passing. The whole multithreading topic really leads to a nightmarish situation and difficult debugging given the sad state of affairs with many video card drivers, so if you want your program to run reliably on different computers, run all the direct gui code in a single thread. You might consider using processes instead of threads even, then tls cannot be an issue.

Norbert Schultz wrote:
Hi out there,

I have a strange multi threading problem using GtkGLextmm. Thread 1 creates a Gtk::GL::DrawingArea, does some initialization. Then Thread 1 (regular Actualisation) and Thread 2 (which handles all GTK Events) want to update things. But Thread2 cannot get a the start operations with
Glib::RefPtr<Gdk::GL::Context> context=m_glDrawingArea->get_gl_context();
Glib::RefPtr<Gdk::GL::Drawable>  drawable=m_glDrawingArea->get_gl_drawable();
drawable->gl_begin (context); // fails

At the console I receive just:
 GdkGLExt-WARNING **: glXMakeCurrent() failed

But this happens only to Thread2. Sometimes the situation is changed and only Thread 2 can paint. All OpenGL code fenced with a Lock so that only one Thread can do OpenGL actions at once. I think it's possible to put all the drawing commands into a third thread (and let Thread 1 and 2 call them for repainting operations) but before I do that I want to ask if someone has another idea?


According to the man page glXMakeCurrent() should generate an error when it fails, but I don't receive one (at least nobody kills my program, which seems usual on X11 errors without error handler).

Single threaded OpenGL seems to work, OS is a Gutsy AMD64 with current nVidia Drivers 169.09 on a Geforce8.

Greetings from France,
Norbert
_______________________________________________
gtkglext-list mailing list
gtkglext-list gnome org
http://mail.gnome.org/mailman/listinfo/gtkglext-list



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]