From 7bc86f21b20ebb32564d4493a445d9a1dfedb118 Mon Sep 17 00:00:00 2001
From: Sven Gothel
Date: Fri, 19 Sep 2014 01:24:32 +0200
Subject: New GLRendererQuirks.BuggyColorRenderbuffer: On Mesa 7.2 software,
FBO color renderbuffer may cause a crash
Workaround crash caused by Mesa 7.2 software rendering
using color renderbuffer target in FBO.
If Mesa < 8.0 and software - or -
property 'jogl.fbo.force.nocolorrenderbuffer' is set,
set quirks:
- GLRendererQuirks.BuggyColorRenderbuffer
- GLRendererQuirks.NoFullFBOSupport (to disable MSAA)
GLFBODrawable always uses FBOMODE_USE_TEXTURE
if GLRendererQuirks.BuggyColorRenderbuffer is set.
+++
Crash Report:
GNU C Library : 2.13 stable
OpenGL : software
Operating System : Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64
Processor ID : x86 Family 6 Model 44 Stepping 2, GenuineIntel
Abnormal termination:
Segmentation violation
Register State (from fault):
RAX = 00000000ff1818f0 RBX = 00000000beaf8afc
RCX = 0000000000000004 RDX = 00007f85ed9c9010
RSP = 00007f8252d24fd0 RBP = 00007f8252d25020
RSI = 0000000017b9b330 RDI = 0000000015bca400
R8 = 0000000000000000 R9 = 00007f81edcd3014
R10 = 00007f823565f6ce R11 = 00007f827bee49aa
R12 = 0000000000001406 R13 = 0000000000000001
R14 = 00000000154d5458 R15 = 00000000154d4f10
RIP = 00007f823565f7bc EFL = 0000000000010206
CS = 0033 FS = 0000 GS = 0000
Stack Trace (from fault):
[ 0] 0x00007f823565f7bc put_row_ubyte4 at /mesa/main/renderbuffer.c:665 (in /lib/libGL.so.1)
[ 1] 0x00007f8235727239 _swrast_write_rgba_span at /mesa/swrast/s_span.c:1450 (in /lib/libGL.so.1)
[ 2] 0x00007f823574b071 smooth_rgba_triangle at /mesa/swrast/s_tritemp.h:862 (in /lib/libGL.so.1)
[ 3] 0x00007f82357155f0 _swrast_Triangle at /mesa/swrast/s_context.c:692 (in /lib/libGL.so.1)
[ 4] 0x00007f8235771780 triangle_offset_twoside_rgba at /mesa/swrast_setup/ss_tritmp.h:188 (in /lib/libGL.so.1)
[ 5] 0x00007f82356d2cea _tnl_render_poly_elts at /mesa/tnl/t_vb_rendertmp.h:313 (in /lib/libGL.so.1)
[ 6] 0x00007f82356d335e _tnl_RenderClippedPolygon at /mesa/tnl/t_vb_render.c:244 (in /lib/libGL.so.1)
[ 7] 0x00007f82356c9313 clip_tri_4 at /mesa/tnl/t_vb_cliptmp.h:230 (in /lib/libGL.so.1)
[ 8] 0x00007f82356cd026 clip_render_triangles_verts at /mesa/tnl/t_vb_rendertmp.h:163 (in /lib/libGL.so.1)
[ 9] 0x00007f82356d37d9 run_render at /mesa/tnl/t_vb_render.c:320 (in /lib/libGL.so.1)
[ 10] 0x00007f82356c2436 _tnl_run_pipeline at /mesa/tnl/t_pipeline.c:158 (in /lib/libGL.so.1)
[ 11] 0x00007f82356c37da _tnl_draw_prims at /mesa/tnl/t_draw.c:402 (in /lib/libGL.so.1)
[ 12] 0x00007f82356b673a vbo_exec_DrawArrays at /mesa/vbo/vbo_exec_array.c:263 (in /lib/libGL.so.1)
[ 13] 0x00007f823583e5b0 glDrawArrays at /mesa/glapi/glapitemp.h:1645 (in /lib/libGL.so.1)
+++
---
.../com/jogamp/opengl/GLRendererQuirks.java | 33 ++++++++++++++++++++--
1 file changed, 31 insertions(+), 2 deletions(-)
(limited to 'src/jogl/classes/com/jogamp')
diff --git a/src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java b/src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java
index f6e671c88..f81d2f2d0 100644
--- a/src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java
+++ b/src/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java
@@ -191,7 +191,12 @@ public class GLRendererQuirks {
* GL_RENDERER: Gallium 0.4 on SVGA3D; build: RELEASE;
*
*
+ *
+ * Also enabled via {@link #BuggyColorRenderbuffer}.
+ *
+ *
* Quirk can also be enabled via property: jogl.fbo.force.min
.
+ *
*/
public static final int NoFullFBOSupport = 11;
@@ -312,8 +317,32 @@ public class GLRendererQuirks {
*/
public static final int NoMultiSamplingBuffers = 17;
+ /**
+ * With certain drivers no reliable FBO color renderbuffer target
+ * is available, read a crash may occur.
+ *
+ * Appears on:
+ *
+ * - GL_VENDOR Brian Paul
+ * - GL_RENDERER Mesa X11
+ * - GL_VERSION 2.1 Mesa 7.2
+ *
+ * TODO: We have to determine the exact version range, i.e. not adding the quirk with fixed driver version!
+ *
+ *
+ * Note: Also enables {@link #NoFullFBOSupport}.
+ *
+ *
+ * Note: GLFBODrawable always uses texture attachments if set.
+ *
+ *
+ * Quirk can also be enabled via property: jogl.fbo.force.nocolorrenderbuffer
.
+ *
+ */
+ public static final int BuggyColorRenderbuffer = 18;
+
/** Number of quirks known. */
- public static final int COUNT = 18;
+ public static final int COUNT = 19;
private static final String[] _names = new String[] { "NoDoubleBufferedPBuffer", "NoDoubleBufferedBitmap", "NoSetSwapInterval",
"NoOffscreenBitmap", "NoSetSwapIntervalPostRetarget", "GLSLBuggyDiscard",
@@ -321,7 +350,7 @@ public class GLRendererQuirks {
"NeedCurrCtx4ARBPixFmtQueries", "NeedCurrCtx4ARBCreateContext",
"NoFullFBOSupport", "GLSLNonCompliant", "GL4NeedsGL3Request",
"GLSharedContextBuggy", "GLES3ViaEGLES2Config", "SingletonEGLDisplayOnly",
- "NoMultiSamplingBuffers"
+ "NoMultiSamplingBuffers", "BuggyColorRenderbuffer"
};
private static final IdentityHashMap stickyDeviceQuirks = new IdentityHashMap();
--
cgit v1.2.3