diff --git a/src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java b/src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java
index f81d2f2..2c29885 100644
--- a/src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java
+++ b/src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java
@@ -341,8 +341,24 @@
*/
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;
+
/** Number of quirks known. */
- public static final int COUNT = 19;
+ public static final int COUNT = 20;
private static final String[] _names = new String[] { "NoDoubleBufferedPBuffer", "NoDoubleBufferedBitmap", "NoSetSwapInterval",
"NoOffscreenBitmap", "NoSetSwapIntervalPostRetarget", "GLSLBuggyDiscard",
@@ -350,7 +366,7 @@
"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 01478a4..f1dee79 100644
--- a/src/jogl/classes/jogamp/opengl/GLContextImpl.java
+++ b/src/jogl/classes/jogamp/opengl/GLContextImpl.java
@@ -1841,6 +1841,13 @@
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 465b5f5..ee868b1 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 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 @@
}
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() +