aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuan Camilo Prada <[email protected]>2013-06-21 10:48:17 +0200
committerSven Gothel <[email protected]>2013-06-21 10:48:17 +0200
commita053732720628d57d38bda401053833259bf1657 (patch)
tree94f36b20796c5077a43bfdac3dfcd837a19cfd47
parent4b7833fab73166338a3a2f27920a7b28a3e5e30f (diff)
Fix Bug 759: Add quirk GLNonCompliant for Mesa AMD GL >= 3.1 renderer.
-rw-r--r--src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java8
-rw-r--r--src/jogl/classes/jogamp/opengl/GLContextImpl.java8
2 files changed, 13 insertions, 3 deletions
diff --git a/src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java b/src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java
index 36893f5ec..9fe74ee97 100644
--- a/src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java
+++ b/src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java
@@ -73,7 +73,13 @@ public class GLRendererQuirks {
* <p>
* Mesa >= 9.0 (?), Intel driver, OpenGL 3.1 compatibility context is not compliant:
* <pre>
- * GL_RENDERER: Mesa DRI Intel(R) Sandybridge Desktop
+ * GL_RENDERER: 'Mesa .* Intel(R) Sandybridge Desktop'
+ * </pre>
+ * </p>
+ * <p>
+ * Mesa >= 9.0 (?), AMD driver, OpenGL 3.1 core and compatibility context is not compliant:
+ * <pre>
+ * GL_RENDERER: 'Gallium 0.4 on AMD RS880'
* </pre>
* </p>
*/
diff --git a/src/jogl/classes/jogamp/opengl/GLContextImpl.java b/src/jogl/classes/jogamp/opengl/GLContextImpl.java
index 6254b6f44..d6f97662e 100644
--- a/src/jogl/classes/jogamp/opengl/GLContextImpl.java
+++ b/src/jogl/classes/jogamp/opengl/GLContextImpl.java
@@ -1515,6 +1515,8 @@ public abstract class GLContextImpl extends GLContext {
int i = 0;
final String MesaSP = "Mesa ";
+ final String MesaRendererAMDsp = " AMD ";
+ final String MesaRendererIntelsp = "Intel(R)";
final boolean hwAccel = 0 == ( ctp & GLContext.CTX_IMPL_ACCEL_SOFT );
final boolean compatCtx = 0 != ( ctp & GLContext.CTX_PROFILE_COMPAT );
final boolean isDriverMesa = glRenderer.contains(MesaSP) || glRenderer.contains("Gallium ");
@@ -1639,7 +1641,7 @@ public abstract class GLContextImpl extends GLContext {
}
quirks[i++] = quirk;
}
- if( hwAccel /* glRenderer.contains("Intel(R)") || glRenderer.contains("AMD ") */ )
+ if( hwAccel /* glRenderer.contains( MesaRendererIntelsp ) || glRenderer.contains( MesaRendererAMDsp ) */ )
{
final int quirk = GLRendererQuirks.NoDoubleBufferedPBuffer;
if(DEBUG) {
@@ -1647,7 +1649,9 @@ public abstract class GLContextImpl extends GLContext {
}
quirks[i++] = quirk;
}
- if( glRenderer.contains("Intel(R)") && compatCtx && ( major > 3 || major == 3 && minor >= 1 ) )
+ if( ( (glRenderer.contains( MesaRendererIntelsp ) && compatCtx) || glRenderer.contains( MesaRendererAMDsp ) ) &&
+ ( major > 3 || major == 3 && minor >= 1 )
+ )
{
// FIXME: Apply vendor version constraints!
final int quirk = GLRendererQuirks.GLNonCompliant;