UnstableChanges

Summary

  1. GLContextImpl.setRendererQuirks(..): Use GLRendererQuirks.addQuirk(int), (details)
  2. New GLRendererQuirks.BuggyColorRenderbuffer: On Mesa 7.2 software, FBO (details)
  3. FBOobject GLEL Tests: Remove redundant detachAllColorbuffer(gl) for init (details)
  4. StereoClientRenderer: Remove redundant FBObject.detachAllColorbuffer(gl) (details)
  5. FBObject: Simplify API (init/reset); Only issue automatic (details)
  6. TestGearsES2GLJPanelAWT: Update frame title (awt-size, pixel-size) for (details)
Commit 3ed6ec6515635b1c67b89539ad0e02625ef3813d by Sven Gothel
GLContextImpl.setRendererQuirks(..): Use GLRendererQuirks.addQuirk(int), dropping usage of .addQuirks(int[] quirks, offset, len)

Directly adding a quirk allows dropping usage of erroneous fixed-sized int[] array for accumulated quirks.
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLContextImpl.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java (diff)
Commit 6c0288655368f0decdf309ca4a90fc60cbc29378 by Sven Gothel
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)

+++
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLContextImpl.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLFBODrawableImpl.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/GLFBODrawable.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/GLRendererQuirks.java (diff)
The file was modifiedmake/scripts/tests.sh (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/GLContext.java (diff)
Commit fce65d0b8887387bfb71bbfeea63bc7915163399 by Sven Gothel
FBOobject GLEL Tests: Remove redundant detachAllColorbuffer(gl) for init call
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/demos/es2/TextureDraw02ES2ListenerFBO.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/demos/es2/FBOMix2DemosES2.java (diff)
Commit a7ff8b898780762b763c0b4544728067375955b6 by Sven Gothel
StereoClientRenderer: Remove redundant FBObject.detachAllColorbuffer(gl) for init call
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/stereo/StereoClientRenderer.java (diff)
Commit 711757aa4e087d97c3103489c47fbd7d76bcac3d by Sven Gothel
FBObject: Simplify API (init/reset); Only issue automatic resetSamplingSink(..) if required; Fix resetSamplingSink(..), isBound(), ..

- Simplify API (init/reset)
  - use new unique methods for init and reset:
    - void init(final GL gl, final int newWidth, final int newHeight, final int newSamples)
      - does not issue resetSamplingSink(..)
    - boolean reset(final GL gl, final int newWidth, final int newHeight, final int newSamples)
      - always issues resetSamplingSink(..)

  - deprecated dual-use (init/reset):
    - boolean reset(final GL gl, final int newWidth, final int newHeight)
    - boolean reset(final GL gl, int newWidth, int newHeight, int newSamples, final boolean resetSamplingSink)

- reset(..) no more creates a dummy 'samplingSink' instance if sampling > 0,
  left up to resetSamplingSink(..)

- Track 'modified' state of FBObject,
  if size, format or any attachment has been changed since last
    - use(..)
    - syncSamplingSink(..)
    - resetSamplingSink(..)

- Only issue resetSamplingSink(..) from syncSamplingSink(..)/use(..)
  if 'modified == true'

+++

- Fix setSamplingSink(..), i.e. samplingSink state handling:
  - Validated whether given samplingSink is initialized,
    throws Exception if not.

- Fix resetSamplingSink(..)
  - resets the bound state, i.e. leaves it untouched
    - also unbinds the samplingSink

  - sampleSinkDepthStencilMismatch() also returns true if
    this.depth/stencil == null, but samplingSink is not.

  - Newly created colorbuffer/-texture matches
    exiting colorbuffer's internal-format, if exists.

  - Using simplified resetSizeImpl(..) for size mismatch

  - Simplified samplingColorSink init check

- Fix isBound()
    was: 'bound = bound && fbName != gl.getBoundFramebuffer(GL.GL_FRAMEBUFFER)'
    fix: 'bound = bound && fbName == gl.getBoundFramebuffer(GL.GL_FRAMEBUFFER)'

- Fix detachRenderbuffer(..) validates whether detachment was successful,
  similar to detachColorbuffer(..)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/demos/es2/TextureDraw02ES2ListenerFBO.java (diff)
The file was modifiedsrc/jogl/classes/javax/media/opengl/awt/GLJPanel.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/TestFBOMRTNEWT01.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/graph/curve/opengl/VBORegion2PMSAAES2.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/FBObject.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/opengl/GLFBODrawableImpl.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/demos/es2/FBOMix2DemosES2.java (diff)
The file was modifiedsrc/jogl/classes/jogamp/graph/curve/opengl/VBORegion2PVBAAES2.java (diff)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/acore/TestFBOMix2DemosES2NEWT.java (diff)
The file was modifiedsrc/jogl/classes/com/jogamp/opengl/util/stereo/StereoClientRenderer.java (diff)
Commit 485f89a7563643525f11a50465d04e5107f2e0f8 by Sven Gothel
TestGearsES2GLJPanelAWT: Update frame title (awt-size, pixel-size) for GLEventListener.reshape(..)
The file was modifiedsrc/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/TestGearsES2GLJPanelAWT.java (diff)