diff options
author | Sven Gothel <[email protected]> | 2013-01-20 15:05:02 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2013-01-20 15:05:02 +0100 |
commit | 85d70b7d38885fa8ba6374aa790d5a296acc8ec1 (patch) | |
tree | 7aaf7d638fad47252695cc55894a6f3404d14b45 /src/jogl/classes/jogamp/opengl/egl/EGLGraphicsConfigurationFactory.java | |
parent | 0989484b89535d56e9f150cdf63e2a17bf36e32e (diff) |
Android: Allow selection of native window formats RGBA8888, RGBX8888 and RGB565; Fix HiSilicon/Vivante/Immersion.16 EGLConfig selection (zero depth buffer @ visualID)
- NEWT/Android Fix PixelFormat/NativeWindowFormat/VisualID Selection
- Fix allows proper selection of native window formats: RGBA8888, RGBX8888 and RGB565
- Selection is performed in 3 steps:
1) @ Construction (non native): SurfaceHolder.setFormat( getSurfaceHolderFormat( caps ) )
2) @ Native Surface Creation: getANativeWindowFormat( androidFormat) -> ANativeWindow_setBuffersGeometry(..)
Note: The set native format is revalidated, i.e. read out via ANativeWindow_getFormat(..).
3) @ EGL Creation: ANativeWindow_getFormat(..) -> fixCaps(..) - simply fixing the chosen caps.
- NEWT GLWindow.GLLifecycleHook.resetCounter:
- Also reset GLAnimatorControl's counter, if attached.
- NEWT WindowImpl -> GLLifecycleHook.resetCounter() calls issued _after_ operation before unlock().
- JOGL/EGLGraphicsConfigurationFactory
- Validate whether the visualID matching EGLConfig depth buffer is suitable.
On HiSilicon/Vivante/Immersion.16: Depth buffer w/ matching visualID is zero!
- NativeWindow/Capabilities.compareTo: Fix alpha comparison
Diffstat (limited to 'src/jogl/classes/jogamp/opengl/egl/EGLGraphicsConfigurationFactory.java')
-rw-r--r-- | src/jogl/classes/jogamp/opengl/egl/EGLGraphicsConfigurationFactory.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/jogl/classes/jogamp/opengl/egl/EGLGraphicsConfigurationFactory.java b/src/jogl/classes/jogamp/opengl/egl/EGLGraphicsConfigurationFactory.java index f638ef82b..7e1f8a5a2 100644 --- a/src/jogl/classes/jogamp/opengl/egl/EGLGraphicsConfigurationFactory.java +++ b/src/jogl/classes/jogamp/opengl/egl/EGLGraphicsConfigurationFactory.java @@ -411,8 +411,13 @@ public class EGLGraphicsConfigurationFactory extends GLGraphicsConfigurationFact if( VisualIDHolder.VID_UNDEFINED != nativeVisualID ) { List<GLCapabilitiesImmutable> removedCaps = new ArrayList<GLCapabilitiesImmutable>(); for(int i=0; i<availableCaps.size(); ) { - VisualIDHolder vidh = (VisualIDHolder) availableCaps.get(i); - if(vidh.getVisualID(VIDType.NATIVE) != nativeVisualID) { + final GLCapabilitiesImmutable aCap = availableCaps.get(i); + if(aCap.getVisualID(VIDType.NATIVE) != nativeVisualID) { + if(DEBUG) { System.err.println("Remove["+i+"] (mismatch VisualID): "+aCap); } + removedCaps.add(availableCaps.remove(i)); + } if( 0 == aCap.getDepthBits() && 0 < capsChosen.getDepthBits() ) { + // Hack for HiSilicon/Vivante/Immersion.16 Renderer .. + if(DEBUG) { System.err.println("Remove["+i+"] (mismatch depth-bits): "+aCap); } removedCaps.add(availableCaps.remove(i)); } else { i++; @@ -425,6 +430,9 @@ public class EGLGraphicsConfigurationFactory extends GLGraphicsConfigurationFact } } else if(DEBUG) { System.err.println("EGLGraphicsConfiguration.eglChooseConfig: post filter nativeVisualID "+toHexString(nativeVisualID)+" got configs: "+availableCaps.size()); + for(int i=0; i<availableCaps.size(); i++) { + System.err.println(i+": "+availableCaps.get(i)); + } } } |