aboutsummaryrefslogtreecommitdiffstats
path: root/src/jogl/classes
diff options
context:
space:
mode:
authorJulien Gouesse <[email protected]>2014-10-01 17:53:32 +0200
committerJulien Gouesse <[email protected]>2014-10-01 17:53:32 +0200
commit99f91f8b28d42cdf341533736e878056bcae4708 (patch)
treeadce59b093f2384fb43518310a26f367c1f5a4dd /src/jogl/classes
parent39cd0dfa0e46a3617b51e5b15a5fccedeae77f39 (diff)
Fix of the bug 1078
Diffstat (limited to 'src/jogl/classes')
-rw-r--r--src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java20
-rw-r--r--src/jogl/classes/jogamp/opengl/GLContextImpl.java7
-rw-r--r--src/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLGraphicsConfiguration.java5
3 files changed, 28 insertions, 4 deletions
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 {
* </p>
*/
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
+ * <p>
+ * Appears on:
+ * <ul>
+ * <li>GL_VENDOR Intel</li>
+ * <li>GL_RENDERER Intel Bear Lake B</li>
+ * <li>GL_VERSION 1.4.0 - Build 8.14.10.1930</li>
+ * </ul>
+ *
+ * </p>
+ */
+ 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<String, GLRendererQuirks> stickyDeviceQuirks = new IdentityHashMap<String, GLRendererQuirks>();
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() +