| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
now-unnecessary semaphore and heuristics
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@247 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
| |
window system's recommended choice
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@242 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixed Issue 124: SIGSEGV on Fedora Core 3 / NVIDIA
Stability problems have been reported on all three of JOGL's major
supported platforms (Windows, Linux and Mac OS X) whose root cause is
multithreading-related bugs in vendors' OpenGL drivers.
On Windows, the most recent version of NVidia's drivers (66.93) when
run on a GeForce 6800 causes a blue screen of death upon exit from the
simplest JOGL demo (Gears).
On Linux, JVM crashes have been reported upon exit of certain test
cases on NVidia hardware. The same test case causes a report of an
unexpected async reply from Xlib on ATI hardware (at the last time of
testing -- I no longer have access to a Linux machine with ATI
hardware because all of their currently available drivers crash the X
server on my machine).
On Mac OS X, low-level warnings from Cocoa are printed in
multithreaded JOGL situations which can lead to JVM crashes.
All of these problems' root cause is that the current OpenGL drivers
on the market, or supporting software built on them, were not designed
to be used in a multithreaded fashion. Most C programs which use
OpenGL are either single-threaded or perform all of their OpenGL work
from a single thread. JOGL was originally designed to support OpenGL
rendering from arbitrary threads and appropriate synchronization was
introduced into the library to handle this. However, we have had to
scale back this support as stability issues have been encountered.
The most recent round of reported bugs, including the PC crash upon
exit of the JOGL demos, is serious enough that we must take drastic
measures. Support was introduced in earlier JOGL releases to move all
of the OpenGL work performed by JOGL and users' code via the
GLEventListener on to the AWT event dispatch thread. It turns out that
doing this works around all of the above reported bugs. In JOGL 1.1
b08 and 1.1 b09, code changes were made to make this single-threaded
support more correct; this checkin includes another small set of such
changes, including some to the GLPbuffer implementation, and changes
the default of the flag controlling this support to true.
-Djogl.1thread=true is now the default. -Djogl.1thread=auto restores
the behavior of previous releases, which was to enable the
single-threaded mode only with ATI cards. This auto-detection
mechanism was not robust enough and adding cases for the crashes above
was not feasible. -Djogl.1thread=false disables the single-threaded
workaround. Older synonyms for this system property,
JOGL_SINGLE_THREADED_WORKAROUND and ATI_WORKAROUND, remain in the
source base for the time being. Changing the value of any of these
system properties is not recommended.
The expected performance impact of these changes is minimal. In
earlier JOGL releases it appeared that the overhead of making a
context current and releasing it each frame was very significant and a
key differentiator in being able to match C performance. More recent
tests seem to indicate that this is no longer the case, at least with
current hardware. Regardless, we must achieve stability in order for
the library to be useful and this seems to be the best means of
achieving that goal.
We believe that the compatibility impact of these changes for existing
JOGL applications will also be minimal. For correctly-written JOGL
applications, the only visible change in behavior should be that the
values of thread-local variables accessed through the
java.lang.ThreadLocal class may change since the actual thread on
which the GLEventListener's callbacks will be executed may have
changed. Multithreaded JOGL applications performing complex
inter-thread synchronization may see subtle differences in behavior.
We hope that such applications and the developers writing them will be
able to handle this change in behavior without much trouble.
We will continue to work with graphics card vendors to improve the
stability of their OpenGL drivers. Until that happens, we believe this
change will yield the best possible improvement in stability and
portability for applications using JOGL.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@241 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
| |
that it will be more stable on some cards
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@240 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
| |
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@239 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
| |
always returns true
Fixed the Windows implementation of this routine to check for the
presence of the WGL_ARB_pbuffer and WGL_ARB_pixel_format extensions.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@238 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
| |
Last portion of fix. Fixed typo in one loop in scale_internal_byte and
scale_internal_ubyte routines, correcting visual artifacts. Fixed
truncated comments.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@236 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
| |
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@235 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was a bug in the SGI GLU sample implementation and was reproduced
by converting the attached test program to C and compiling in the code
from the sample implementation. This bug was already fixed in the Mesa
sources as bug 2510 and the patch was found at
http://cvs.freedesktop.org/mesa/Mesa/src/glu/sgi/libutil/mipmap.c?rev=1.6&view=log
by Googling for the terms "mipmap.c last row". The fix is to add a
test-and-clamp for the highest row read from the texture.
There is still a problem with visual artifacts when scaling
non-power-of-two textures that this test case reproduces and that is
continuing to be investigated.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@234 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
| |
Fixed / worked around problem found by user mustang on the javagaming
forums where if a recursive makeCurrent failed, it would incorrectly
end up freeing the parent context. Not completely confident of this
bug fix, but definitely fixes the mentioned problem and doesn't appear
to break any of the demos.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@233 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
| |
where GLJPanel.display() wasn't synchronous but should have been
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@231 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
| |
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@230 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
| |
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@228 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
| |
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@227 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
| |
Setting of the GL_PACK_LSB_FIRST property confused the drivers even
though it didn't apply to the frame buffer readback (it applies only
for bitmap data, and we were reading bytes.)
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@226 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
| |
Applied suggested patch from submitter.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@225 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
| |
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@224 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
| |
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@223 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
| |
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@222 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
| |
to the wrong source buffer and were halving to the wrong size.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@221 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
scaling operations. Added new ForceProcAddressGen directive to GlueGen
to force the addresses of the C routines to be fetched even though the
functions were being ignored by the core JavaEmitter. Cut down on the
number of variants of gluScaleImage and associated routines. Changed
the Java signatures of the affected methods to take Buffer again
instead of ByteBuffer (as was done during prototyping) to attempt to
maintain binary compatibility with current JOGL programs. Fixed bug /
problem in gluScaleImage implementation where incorrect scaling of
pixel values was being applied in Image.empty_image(); there may be
additional problems here for other pixel types. Put debugging code in
BuildMipmap under jogl.debug.BuildMipmap System property.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@215 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
| |
Added a workaround in X11GLContext for bug in ATI's drivers where they
report only GLX 1.2 support, but actually do support pbuffers.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@214 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
| |
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@213 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
| |
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@212 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
| |
Enabled hardware acceleration for GLJPanel by default after testing on
Windows and Linux platforms.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@211 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
| |
pbuffer case. Doesn't seem to (and shouldn't) affect the normal
onscreen case. Added additional debugging output.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@210 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixed Issue 61: Make debug variables load from system properties
Added a hardware acceleration path for GLJPanel implemented using the
GLPbuffer interfaces. If instantiation of the pbuffer fails, the
GLJPanel implementation attempts to catch the resulting exception and
fall back on the existing software rendering path.
The new code has been successfully tested on Windows. This checkin
attempts to make the needed changes to the pbuffer implementation on
other platforms, but the GLJPanel continues to use software rendering
until all platforms can be tested.
Additionally, references to static final DEBUG flags have been made
settable via system properties. "jogl.verbose" enables certain
printing statements. "jogl.debug" enables all debugging printing.
"jogl.debug.GLContext" enables the debug printing inside the GLContext
class. The system property names are chosen by convention and are not
enforced.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@209 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
| |
mipmap code
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@208 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
| |
Updated heuristic of when to block waiting for the animator to stop.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@205 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
| |
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@204 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
| |
portions of GlueGen for more flexibility. Also fixed source-level
problems associated with making GLCapabilities' clone() not throw
CloneNotSupportedException.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@202 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
set pixel format"
This is probably due to JOGL trying to request a double-buffered pixel
format for the offscreen surface. To prevent applications from having
to explicitly set the DoubleBuffered property of the GLCapabilities to
false, the GLCanvas now clones the incoming GLCapabilities and
disables double-buffering before requesting the underlying GLContext.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@200 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(ATI-specific)
The root cause of this bug was not the new DummyGL code, but severe
bugs in ATI's OpenGL drivers where it appears that if an OpenGL
context is ever made current on more than one thread during the
lifetime of an application, problems begin to occur such as the
SetPixelFormat call failing on the just the next newly-created HDC, or
all subsequent SetPixelFormat calls failing on all
subsequently-created HDCs. This was occurring because the
single-threaded ATI workaround's automatic detection mechanism was not
being enabled until the first time a context was made current, but by
then it was typically too late; the context was made current on the
end user's thread during e.g. Frame.show(), and if it was ever made
current on another thread (like the AWT event queue thread, which is
where all OpenGL operations are performed when the single-threaded
workaround is enabled) then the problems would begin.
The failure has only been seen on Windows so far; ATI's drivers on X11
seem to be better behaved. The workaround is to check for the presence
of ATI's drivers very early during JOGL's initialization, by looking
in the system directory for atioglxx.dll, and enabling the
single-threaded workaround if it was found. This workaround causes the
attached test case to work properly.
Also added some more debugging code to make diagnosing problems like
these easier in the future.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@196 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@195 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
| |
Incorporated patch, slightly modified to not perturb the Linux build
in any way.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@194 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
window is visible
The issue (or a related one) is still present in the current JOGL
build, although the symptom was different: a deadlock upon startup of
the application. When the OpenGL context is created in the
WindowsOnscreenGLContext implementation, it causes
Component.getGraphicsConfiguration() to be called, which causes the
AWT tree lock to be grabbed. Under some circumstances, another thread
can already hold the AWT tree lock and call GLContext.invokeGL(),
which leads to a classic deadlock. Resolved this by eagerly grabbing
the tree lock under some circumstances (not all the time) before
entering the synchronized invokeGL in (only) the Windows onscreen
context implementation.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@193 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The stub_includes headers and GlueGen config files have been changed
to make X identifiers and similar values appear to Java to be 64-bit
values on all platforms, rather than changing between 32-bit and
64-bit values depending on the architecture. This allows the shared
Java code in the JOGL X11 implementation to work on both 32- and
64-bit architectures, which is an important step toward having
complete 64-bit support in JOGL. Compared to the suggested patch,
there is no longer a need to duplicate the sources in
net.java.games.jogl.impl.x11 because the Java sources are now 64-bit
clean. The change to use dlsym on Linux/AMD64 instead of
glXGetProcAddressARB has been conditionalized under a run-time flag.
Most of the build.xml and all of the GlueGen changes were incorporated
unchanged. Thanks to the original authors of the patch for this work.
At this point "ant linux.amd64" should build a working JOGL. However,
it can not yet be incorporated into the distribution's platform-
independent jogl.jar; in order to do this, the generation of the
StructAccessors for the JAWT and some other X11 data structures by
GlueGen will need to be conditionalized depending on the platform so
that the 32-bit versions go in one directory, the 64-bit versions in
another, and a run-time check is done to determine which version to
instantiate. There are also a few remaining cleanups to generated glue
code such as net.java.games.jogl.impl.x11.GLX.XGetVisualInfo(), which
needs to be made platform-independent by calling the
XVisualInfo.size() accessor rather than hardwiring in the size of the
data structure (although the real solution will probably need to be
more complicated since there will probably be two XVisualInfo
implementations in the jar file).
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@190 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
| |
Exception with wglGetPixelFormatAttribivARB
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@188 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
| |
and a small README about the procedures being used during the port
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@180 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
| |
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@179 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
| |
Upgraded version number to 1.1 b08.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@176 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
| |
was not being drawn if filled and untextured.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@175 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
| |
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@174 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
| |
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@173 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
| |
Incorporated the LWJGL team's port of the GLU quadric and projection
routines to be able to eliminate calls to the native GLU library for
these cases, which was problematic on certain Linux distributions.
Still need to port at least some of the mipmap routines and the NURBS
tesselator.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@172 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
|
| |
The central try/finally cause in GLException.invokeGL() called
GLContext.free() after catching and rethrowing the end user's
exception from the GLEventListenerdisplay() routine, which caused the
end user's exception to be overwritten with the internal GLException.
Fixed this by initializing the cause of the internal exception, and
also continuing to propagate out the end user's exception.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@171 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
| |
Added needed synchronization around creation of dummy windows for
wglChoosePixelFormatARB calls. Fixed race condition in StaticGLInfo
initialization.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@170 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
| |
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@166 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
| |
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@163 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
| |
optimization when ATI_WORKAROUND=false.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@161 232f8b59-042b-4e1e-8c03-345bb8c30851
|