Bug 97 - Flickering when using ATI_WORKAROUND
Summary: Flickering when using ATI_WORKAROUND
Status: VERIFIED FIXED
Alias: None
Product: Jogl
Classification: JogAmp
Component: core (show other bugs)
Version: 1
Hardware: All all
: P3 normal
Assignee: Sven Gothel
URL:
Depends on:
Blocks:
 
Reported: 2004-07-21 03:16 CEST by Sven Gothel
Modified: 2010-03-24 07:46 CET (History)
0 users

See Also:
Type: DEFECT
SCM Refs:
Workaround: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sven Gothel 2010-03-24 07:46:46 CET


---- Reported by giles7777 2004-07-21 15:16:22 ----

My Geforce 440 go gets severe flickering when using the ATI_WORKAROUND path. 
Simple demo's of Aviatrix3d do not show this, but full scenes using Xj3D do. 
I'll try to distill a smaller test case.



---- Additional Comments From kbr 2005-01-27 19:34:19 ----

I recently had occasion to install Xj3D and can reproduce this problem on my
NVidia Quadro FX Go700 on Windows XP. I think it might be related to the widget
hierarchy Xj3D composes, but I'll look into it.




---- Additional Comments From kbr 2005-01-28 17:27:12 ----

The root cause was that JOGL's single-threaded workaround had a bug
where if automatic swap buffer support was disabled, the user's calls
to swapBuffers() were not being retargeted to run on the AWT event
queue thread, as calls to display() were.

The effect of this was that the OpenGL rendering was not necessarily
guaranteed to complete before swapBuffers() was called, unless a
glFlush() / glFinish() pair was inserted. Interestingly, testing
showed that inserting the glFlush() / glFinish() just before the call
to swapBuffers(), which was executing on the user's thread rather than
the AWT event dispatch thread, did not cause the rendering output to
complete properly. This implies either a bug in the implementation of
glFlush() / glFinish() on the testing platform or a misunderstanding
on my part of how these APIs behave. Putting the flush/finish after
all of the OpenGL work done by the user in their display() routine
worked correctly.

Regardless, the intent of the single-threaded workaround was to cause
all OpenGL-related work to be done on the event dispatch thread, which
it now does. This fixes the reported problem.




--- Bug imported by sgothel@jausoft.com 2010-03-24 07:46 EDT  ---

This bug was previously known as _bug_ 97 at https://jogl.dev.java.net/bugs/show_bug.cgi?id=97