Bug 830

Summary: GLDrawableUtil.swapGLContextAndAllGLEventListener: Doesn't work w/ MSAA or AccumBuffer and on- offscreen swap
Product: [JogAmp] Jogl Reporter: Sven Gothel <sgothel>
Component: coreAssignee: Sven Gothel <sgothel>
Status: RESOLVED FIXED    
Severity: normal CC: askinner, sgothel
Priority: ---    
Version: 2   
Hardware: All   
OS: all   
Type: --- SCM Refs:
ff5dba28610b4f680c9320e9e52669ed54d4de43 289ba90b9ce118ba987b47ee70870cca77287cc0 2e1484f4c25605c6dc0307f12f3e4e434c429a37
Workaround: ---

Description Sven Gothel 2013-09-08 20:46:15 CEST
GLDrawableUtil.swapGLContextAndAllGLEventListener(gladPre, gladNew):

  If 'gladPre' is onscreen and using MSAA (on NV/GLX),
  the ctx cannot be made current in it's new 'gladNew' location.

This bug has been testes w/ printing test cases AWT and NewtCanvasAWT,
where the pre-exisiting GLAD is onscreen w/ MSAA.
Comment 1 Sven Gothel 2014-07-30 20:34:48 CEST
ff5dba28610b4f680c9320e9e52669ed54d4de43

Bug 830 - Add Heuristics for to query whether GLDrawableUtil.swapGLContextAndAllGLEventListener is safe (Doesn't work w/ pre MSAA onscreen drawable)

GLDrawableUtil.isSwapGLContextSafe(..) allows user to query whether 'we think' it's safe
to utilize swapping of GLContext between GLAutoDrawable instances.

Currently known unsafe cases are:
    - between on- and offscreen and one of the following:
    - MSAA involved, or
    - STEREO involved

Enhanced unit tests in this regard:
    - TestGLContextDrawableSwitch02AWT
    - using GLContextDrawableSwitchBase0
    - TestGLContextDrawableSwitch02NEWT
    - using GLContextDrawableSwitchBase0

Utilized safe query for setupPrint(..) action in:
    - AWT GLCanvas
    - AWT GLJPanel
    - NewtCanvasAWT
Comment 2 Sven Gothel 2014-07-31 00:55:52 CEST
289ba90b9ce118ba987b47ee70870cca77287cc0
  Perform context switch on GL capable thread if required. 
  Add API doc note about this requirement.

2e1484f4c25605c6dc0307f12f3e4e434c429a37
  Refine Heuristics to query whether 
  GLDrawableUtil.swapGLContextAndAllGLEventListener is safe: 
    Add Accumulator Buffer bits