com.jogamp.opengl
Class GLRendererQuirks

java.lang.Object
  extended by com.jogamp.opengl.GLRendererQuirks

public class GLRendererQuirks
extends Object

GLRendererQuirks contains information of known bugs of various GL renderer. This information allows us to workaround them.

Using centralized quirk identifier enables us to locate code dealing w/ it and hence eases it's maintenance.


Field Summary
static int COUNT
          Number of quirks known.
static int GLFlushBeforeRelease
          The OpenGL Context needs a glFlush() before releasing it, otherwise driver may freeze: OSX < 10.7.3 - NVidia Driver.
static int GLNonCompliant
          Non compliant GL context, e.g.
static int GLSLBuggyDiscard
          GLSL discard command leads to undefined behavior or won't get compiled if being used.
static int NoDoubleBufferedBitmap
          On Windows no double buffered bitmaps are guaranteed to be available.
static int NoDoubleBufferedPBuffer
          Crashes XServer when using double buffered PBuffer with GL_RENDERER: Mesa DRI Intel(R) Sandybridge Desktop Mesa DRI Intel(R) Ivybridge Mobile - 3.0 Mesa 8.0.4 Gallium 0.4 on AMD CYPRESS For now, it is safe to disable it w/ hw-acceleration.
static int NoOffscreenBitmap
          No offscreen bitmap available, currently true for JOGL's OSX implementation.
static int NoSetSwapInterval
          Crashes application when trying to set EGL swap interval on Android 4.0.3 / Pandaboard ES / PowerVR SGX 540
static int NoSetSwapIntervalPostRetarget
          SIGSEGV on setSwapInterval() after changing the context's drawable w/ 'Mesa 8.0.4' dri2SetSwapInterval/DRI2 (soft & intel)
 
Constructor Summary
GLRendererQuirks(int[] quirks, int offset, int len)
           
 
Method Summary
 boolean exist(int quirk)
           
 String toString()
           
static String toString(int quirk)
           
 StringBuilder toString(StringBuilder sb)
           
static void validateQuirk(int quirk)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

NoDoubleBufferedPBuffer

public static final int NoDoubleBufferedPBuffer
Crashes XServer when using double buffered PBuffer with GL_RENDERER: For now, it is safe to disable it w/ hw-acceleration.

See Also:
Constant Field Values

NoDoubleBufferedBitmap

public static final int NoDoubleBufferedBitmap
On Windows no double buffered bitmaps are guaranteed to be available.

See Also:
Constant Field Values

NoSetSwapInterval

public static final int NoSetSwapInterval
Crashes application when trying to set EGL swap interval on Android 4.0.3 / Pandaboard ES / PowerVR SGX 540

See Also:
Constant Field Values

NoOffscreenBitmap

public static final int NoOffscreenBitmap
No offscreen bitmap available, currently true for JOGL's OSX implementation.

See Also:
Constant Field Values

NoSetSwapIntervalPostRetarget

public static final int NoSetSwapIntervalPostRetarget
SIGSEGV on setSwapInterval() after changing the context's drawable w/ 'Mesa 8.0.4' dri2SetSwapInterval/DRI2 (soft & intel)

See Also:
Constant Field Values

GLSLBuggyDiscard

public static final int GLSLBuggyDiscard
GLSL discard command leads to undefined behavior or won't get compiled if being used. Appears to happen on Nvidia Tegra2. FIXME: Constrain version.

See Also:
Constant Field Values

GLNonCompliant

public static final int GLNonCompliant
Non compliant GL context, e.g. due to a buggy implementation rendering it not suitable for use.

Mesa >= 9.0 (?), Intel driver, OpenGL 3.1 compatibility context is not compliant:

 GL_RENDERER: Mesa DRI Intel(R) Sandybridge Desktop 
 

See Also:
Constant Field Values

GLFlushBeforeRelease

public static final int GLFlushBeforeRelease
The OpenGL Context needs a glFlush() before releasing it, otherwise driver may freeze:

See Also:
Constant Field Values

COUNT

public static final int COUNT
Number of quirks known.

See Also:
Constant Field Values
Constructor Detail

GLRendererQuirks

public GLRendererQuirks(int[] quirks,
                        int offset,
                        int len)
                 throws IllegalArgumentException
Parameters:
quirks - an array of valid quirks
offset - offset in quirks array to start reading
len - number of quirks to read from offset within quirks array
Throws:
IllegalArgumentException - if one of the quirks is out of range
Method Detail

exist

public final boolean exist(int quirk)
                    throws IllegalArgumentException
Parameters:
quirk - the quirk to be tested
Returns:
true if quirk exist, otherwise false
Throws:
IllegalArgumentException - if quirk is out of range

toString

public final StringBuilder toString(StringBuilder sb)

toString

public final String toString()
Overrides:
toString in class Object

validateQuirk

public static void validateQuirk(int quirk)
                          throws IllegalArgumentException
Parameters:
quirk - the quirk to be validated, i.e. whether it is out of range
Throws:
IllegalArgumentException - if quirk is out of range

toString

public static final String toString(int quirk)
                             throws IllegalArgumentException
Parameters:
quirk - the quirk to be converted to String
Returns:
the String equivalent of this quirk
Throws:
IllegalArgumentException - if quirk is out of range


Copyright 2010 JogAmp Community.