Single Threaded Rendering in Java 6

I happened to overlook that feature before,

so I wanted to post it here, as others may have too.

Single Threaded Rendering (STR): This feature moves Java 2D from a model of rendering immediately on aribtrary threads to one where we queue up requests at the Java level and execute them (slightly) later at the native level on a single thread. This feature is not as visible as many of the others in Mustang because it's not enabled by default. STR is implemented in the OpenGL rendering pipeline only, which is not on by default (due to various driver and hardware issues). But besides being extremely cool from a graphics software perspective (there are lots of issues of graphics state and large and complex primitive handling that had to be solved along the way), STR offers significant improvements both for the current OpenGL pipeline and for future rendering pipelines that will use this approach. OpenGL rendering benefits both in robustness (multi-threaded rendering in OpenGL tends to be a driver killer for many video cards) and performance (batching up rendering requests saves significantly in both JNI and OpenGL API overhead). In the future, we will use the STR approach in other rendering pipelines (such as the default DirectX renderer on Windows) and expect to see similar benefits.
For more on this feature, check out Chris Campbell's STR-Crazy and STR-Crazier blogs.

Although jME seems to handle the issues, if there really are some, flawlessly...

Anyone knows if jME could benefit from that ?


Basically they're saying multithreaded rendering with OpenGL is both tricky, buggy, and it's actually faster not to do that.

So yes, no surprise, we do all our OpenGL rendering from one thread.

ah ok,

thanks for clearing that up…