From 35f719673b2c55b0766e6c9187961db7153d7d26 Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Sat, 7 Sep 2019 01:08:05 +0200 Subject: Bug 1391: Cleanup to submit fix: Update known Quirk range; BuggyColorRenderbuffer enables NoFullFBOSupport --- .../com/jogamp/opengl/GLDrawableFactory.java | 3 +-- .../classes/com/jogamp/opengl/GLRendererQuirks.java | 21 +++++++++++++++++---- src/jogl/classes/jogamp/opengl/GLContextImpl.java | 12 +++++++----- 3 files changed, 25 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/jogl/classes/com/jogamp/opengl/GLDrawableFactory.java b/src/jogl/classes/com/jogamp/opengl/GLDrawableFactory.java index 1fe42a332..113c28775 100644 --- a/src/jogl/classes/com/jogamp/opengl/GLDrawableFactory.java +++ b/src/jogl/classes/com/jogamp/opengl/GLDrawableFactory.java @@ -404,8 +404,7 @@ public abstract class GLDrawableFactory { * @see GLRendererQuirks */ public final boolean hasRendererQuirk(final AbstractGraphicsDevice device, final GLProfile glp, final int quirk) { - final GLRendererQuirks glrq = getRendererQuirks(device, glp); - return null != glrq ? glrq.exist(quirk) : false; + return GLRendererQuirks.exist(getRendererQuirks(device, glp), quirk); } /** diff --git a/src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java b/src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java index a2dc6832e..6f0aa2186 100644 --- a/src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java +++ b/src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java @@ -1,5 +1,5 @@ /** - * Copyright 2012 JogAmp Community. All rights reserved. + * Copyright 2012 - 2019 JogAmp Community. All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are * permitted provided that the following conditions are met: @@ -88,7 +88,7 @@ public class GLRendererQuirks { } /** - * Crashes XServer when using double buffered PBuffer with GL_RENDERER: + * Crashes XServer when using double buffered PBuffer with hardware GL_RENDERER on Mesa < 18.2.2: * * *

- * Also enabled via {@link #BuggyColorRenderbuffer}. + * Note: Also enabled via {@link #BuggyColorRenderbuffer}. *

*/ public static final int NoFullFBOSupport = 11; @@ -674,6 +674,19 @@ public class GLRendererQuirks { return 0 != ( ( 1 << quirkBit ) & ( ~_bitmaskOverrideIgnore & ( _bitmask | _bitmaskOverrideForce ) ) ); } + /** + * Convenient static method to call {@link #exist(int)} on the given {@code quirks} + * with an added {@code null} check. + * @param quirks {@link GLRendererQuirks} instance, maybe {@code null} + * @param quirkBit the quirk to be tested + * @return {@code true} if the {@code quirks} is not {@code null} and the given {@code quirkBit} is set, otherwise {@code false}. + * @throws IllegalArgumentException if quirk is out of range + * @see #exist(int) + */ + public static boolean exist(final GLRendererQuirks quirks, final int quirkBit) throws IllegalArgumentException { + return null != quirks && quirks.exist(quirkBit); + } + public final StringBuilder toString(StringBuilder sb) { if(null == sb) { sb = new StringBuilder(); diff --git a/src/jogl/classes/jogamp/opengl/GLContextImpl.java b/src/jogl/classes/jogamp/opengl/GLContextImpl.java index aba9054d0..443e2d6af 100644 --- a/src/jogl/classes/jogamp/opengl/GLContextImpl.java +++ b/src/jogl/classes/jogamp/opengl/GLContextImpl.java @@ -2451,25 +2451,27 @@ public abstract class GLContextImpl extends GLContext { if( vendorVersion.compareTo(mesaSafeDoubleBufferedPBuffer) < 0 ) { final int quirk = GLRendererQuirks.NoDoubleBufferedPBuffer; if(DEBUG) { - System.err.println("Quirk: "+GLRendererQuirks.toString(quirk)+": cause: Renderer " + glRenderer); + System.err.println("Quirk: "+GLRendererQuirks.toString(quirk)+": cause: Renderer " + glRenderer + " / Mesa-Version "+vendorVersion); } quirks.addQuirk( quirk ); } } else { // software if( vendorVersion.compareTo(mesaSafeFBOVersion) < 0 ) { // FIXME: Is it fixed in >= 8.0.0 ? - final int quirk = GLRendererQuirks.BuggyColorRenderbuffer; + final int quirk1 = GLRendererQuirks.BuggyColorRenderbuffer; + final int quirk2 = GLRendererQuirks.NoFullFBOSupport; if(DEBUG) { - System.err.println("Quirk: "+GLRendererQuirks.toString(quirk)+": cause: Renderer " + glRenderer + " / Mesa-Version "+vendorVersion); + System.err.println("Quirks: "+GLRendererQuirks.toString(quirk1)+", "+GLRendererQuirks.toString(quirk2)+": cause: Renderer " + glRenderer + " / Mesa-Version "+vendorVersion); } - quirks.addQuirk( quirk ); + quirks.addQuirk( quirk1 ); + quirks.addQuirk( quirk2 ); } } if ( compatCtx && (hasMajor > 3 || (hasMajor == 3 && hasMinor >= 1)) && vendorVersion.compareTo(mesaSafeGL3Compat) < 0 ) { final int quirk = GLRendererQuirks.GL3CompatNonCompliant; if(DEBUG) { - System.err.println("Quirk: "+GLRendererQuirks.toString(quirk)+": cause: Renderer " + glRenderer); + System.err.println("Quirk: "+GLRendererQuirks.toString(quirk)+": cause: Renderer " + glRenderer + " / Mesa-Version "+vendorVersion); } quirks.addQuirk( quirk ); } -- cgit v1.2.3