From 99f91f8b28d42cdf341533736e878056bcae4708 Mon Sep 17 00:00:00 2001
From: Julien Gouesse
Date: Wed, 1 Oct 2014 17:53:32 +0200
Subject: Fix of the bug 1078
---
.../classes/com/jogamp/opengl/GLRendererQuirks.java | 20 ++++++++++++++++++--
src/jogl/classes/jogamp/opengl/GLContextImpl.java | 7 +++++++
.../windows/wgl/WindowsWGLGraphicsConfiguration.java | 5 +++--
3 files changed, 28 insertions(+), 4 deletions(-)
(limited to 'src')
diff --git a/src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java b/src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java
index e8039edf1..a0a7021ac 100644
--- a/src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java
+++ b/src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java
@@ -340,9 +340,25 @@ public class GLRendererQuirks {
*
*/
public static final int BuggyColorRenderbuffer = 18;
+
+ /**
+ * Some Intel drivers under Windows wrongly claims to support pbuffers
+ * with accumulation buffers. Then, the creation of a pbuffer fails:
+ * javax.media.opengl.GLException: pbuffer creation error: Couldn't find a suitable pixel format
+ *
+ * Appears on:
+ *
+ * - GL_VENDOR Intel
+ * - GL_RENDERER Intel Bear Lake B
+ * - GL_VERSION 1.4.0 - Build 8.14.10.1930
+ *
+ *
+ *
+ */
+ public static final int NoPBufferWithAccum = 19;
/** Return the number of known quirks. */
- public static final int getCount() { return 19; }
+ public static final int getCount() { return 20; }
private static final String[] _names = new String[] { "NoDoubleBufferedPBuffer", "NoDoubleBufferedBitmap", "NoSetSwapInterval",
"NoOffscreenBitmap", "NoSetSwapIntervalPostRetarget", "GLSLBuggyDiscard",
@@ -350,7 +366,7 @@ public class GLRendererQuirks {
"NeedCurrCtx4ARBPixFmtQueries", "NeedCurrCtx4ARBCreateContext",
"NoFullFBOSupport", "GLSLNonCompliant", "GL4NeedsGL3Request",
"GLSharedContextBuggy", "GLES3ViaEGLES2Config", "SingletonEGLDisplayOnly",
- "NoMultiSamplingBuffers", "BuggyColorRenderbuffer"
+ "NoMultiSamplingBuffers", "BuggyColorRenderbuffer", "NoPBufferWithAccum"
};
private static final IdentityHashMap stickyDeviceQuirks = new IdentityHashMap();
diff --git a/src/jogl/classes/jogamp/opengl/GLContextImpl.java b/src/jogl/classes/jogamp/opengl/GLContextImpl.java
index 01478a422..02557b7e1 100644
--- a/src/jogl/classes/jogamp/opengl/GLContextImpl.java
+++ b/src/jogl/classes/jogamp/opengl/GLContextImpl.java
@@ -1841,6 +1841,13 @@ public abstract class GLContextImpl extends GLContext {
quirks.addQuirk( quirk );
}
}
+ if (glVendor.equals("Intel") && glRenderer.equals("Intel Bear Lake B")) {
+ final int quirk = GLRendererQuirks.NoPBufferWithAccum;
+ if(DEBUG) {
+ System.err.println("Quirk: "+GLRendererQuirks.toString(quirk)+": cause: OS "+Platform.getOSType()+", [Vendor "+glVendor+" and Renderer "+glRenderer+"]");
+ }
+ quirks.addQuirk( quirk );
+ }
} else if( Platform.OSType.ANDROID == Platform.getOSType() ) {
//
// ANDROID
diff --git a/src/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLGraphicsConfiguration.java b/src/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLGraphicsConfiguration.java
index 465b5f560..ee868b1c0 100644
--- a/src/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLGraphicsConfiguration.java
+++ b/src/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLGraphicsConfiguration.java
@@ -50,6 +50,7 @@ import javax.media.opengl.GLProfile;
import com.jogamp.common.nio.Buffers;
import com.jogamp.nativewindow.MutableGraphicsConfiguration;
+import com.jogamp.opengl.GLRendererQuirks;
import jogamp.nativewindow.windows.DWM_BLURBEHIND;
import jogamp.nativewindow.windows.GDI;
@@ -476,10 +477,10 @@ public class WindowsWGLGraphicsConfiguration extends MutableGraphicsConfiguratio
}
iattributes.put(niattribs++, WGLExt.WGL_DEPTH_BITS_ARB);
iattributes.put(niattribs++, caps.getDepthBits());
- if (caps.getAccumRedBits() > 0 ||
+ if (!sharedResource.getRendererQuirks().exist(GLRendererQuirks.NoPBufferWithAccum) && (caps.getAccumRedBits() > 0 ||
caps.getAccumGreenBits() > 0 ||
caps.getAccumBlueBits() > 0 ||
- caps.getAccumAlphaBits() > 0) {
+ caps.getAccumAlphaBits() > 0)) {
iattributes.put(niattribs++, WGLExt.WGL_ACCUM_BITS_ARB);
iattributes.put(niattribs++, ( caps.getAccumRedBits() +
caps.getAccumGreenBits() +
--
cgit v1.2.3