Bug 1189

Summary: Add OpenGL ES 3.2 and new GL 4.5 Extensions support
Product: [JogAmp] Jogl Reporter: Xerxes Rånby <xerxes>
Component: openglAssignee: Sven Gothel <sgothel>
Status: VERIFIED FIXED    
Severity: enhancement CC: xerxes
Priority: ---    
Version: 2.3.2   
Hardware: All   
OS: all   
Type: FEATURE SCM Refs:
jogl ac12471cf29ad64364e85815fb3294b20fc81808 jogl 4dd90058ea5a23ee13d86d5444af209764aac10a jogl 21a23e8d0256f38aaf6e054ec60bbbcae9ca1855 jogl 9c9577f2685053677b477365fb5ffa1cb2f53d03 jogl 570ed512114dc1e060a2e4a7bce954c1b4b3d15c jogl 96e71b020a48e8a01e3790e81bd888977d9cab6d semver 4f50b49c955f2bde2bb7eb4c7493206ec6bb1f2f gluegen 444af35253943cfa5bad88ff752981c311689e49 jogl 56eb5025694064ad3e25cf2fb7ba0cabbda8ee67
Workaround: ---
Attachments: no GLES3 nvidia-355.00.05-jogl.debug-GLWindow.log
GLES3 found nvidia-355.00.09-jogl.debug-GLWindow.log

Description Xerxes Rånby 2015-08-10 16:01:30 CEST
OpenGL ES 3.2 Headers
https://www.khronos.org/registry/gles/#headers32

OpenGL ES 3.2 Specifications and Documentation
https://www.khronos.org/registry/gles/#specs32


New extensions to OpenGL 4.5 added on August 10, 2015 include:

ARB_fragment_shader_interlock
ARB_gpu_shader_int64
ARB_parallel_shader_compile
ARB_post_depth_coverage
ARB_sample_locations
ARB_shader_atomic_counter_ops
ARB_shader_ballot
ARB_shader_clock
ARB_shader_viewport_layer_array
ARB_sparse_texture2
ARB_sparse_texture_clamp
ARB_texture_filter_minmax


NVIDIA's Windows driver version 355.58 and Linux drivers version 355.00.05 provide beta support for OpenGL 2015 ARB extensions and OpenGL ES 3.2 on capable hardware. 
https://developer.nvidia.com/opengl-driver
Comment 1 Xerxes Rånby 2015-08-10 16:14:40 CEST
New extensions to OpenGL 4.5 added on August 10, 2015 also include:

ARB_ES3_2_compatibility
Comment 2 Sven Gothel 2015-10-07 11:20:16 CEST
commit ac12471cf29ad64364e85815fb3294b20fc81808
    Add OpenGL ES 3.2 and new GL 4.5 Extensions support - Part1: Update Khronos Headers

commit 4dd90058ea5a23ee13d86d5444af209764aac10a
    Add OpenGL ES 3.2 and new GL 4.5 Extensions support - Part1b: Update Khronos Headers eglext.h (missed)

commit 21a23e8d0256f38aaf6e054ec60bbbcae9ca1855
    Add OpenGL ES 3.2 and new GL 4.5 Extensions support - Part2: Update gluegen configs

commit 9c9577f2685053677b477365fb5ffa1cb2f53d03
    Add OpenGL ES 3.2 and new GL 4.5 Extensions support - Part3: GLEmitter: Don't RenameExtensionIntoCore for IgnoredExtensions

commit 570ed512114dc1e060a2e4a7bce954c1b4b3d15c
    Add OpenGL ES 3.2 and new GL 4.5 Extensions support - Part4: Fix GLNameResolver: Add all known vendor extensions
Comment 3 Sven Gothel 2015-10-07 11:55:30 CEST
commit 96e71b020a48e8a01e3790e81bd888977d9cab6d
    Add OpenGL ES 3.2 and new GL 4.5 Extensions support - Part5: GL_ARB_ES3_2_compatibility -> [GL|GLContext].isGLES32Compatible()
Comment 4 Sven Gothel 2015-10-07 11:56:52 CEST
semver commit 4f50b49c955f2bde2bb7eb4c7493206ec6bb1f2f
    Fix JLS Binary Compat: Moving methods and fields upwards for classes _and_ interfaces is OK
    
    - We shall also travers all interfaces upwards
    - All methods and fields found upwards must be tested for compatibility as well!
    
    Further:
    - Add class-name to Field- and MethodInfo via new intermediate AbstractMemberInfo.
      The class-name is used to have allow differs to find a class move upwards!
    
    - Pretty printing of class move binary-compatible change

+++

gluegen commit 444af35253943cfa5bad88ff752981c311689e49
  -> adopting above semver change
Comment 5 Sven Gothel 2015-10-07 23:24:32 CEST
done
Comment 6 Sven Gothel 2015-10-07 23:26:35 CEST
oops: build failures on open solaris / indiana / illumus:

[cc] In file included from /export/home/jogamp/JogAmpSlavex64/workspace/jogl/label/solaris-x86_64-nv/build/jogl/gensrc/native/jogl/es3/GLES3Impl_JNI.c:21:
       [cc] /export/home/jogamp/JogAmpSlavex64/workspace/jogl/label/solaris-x86_64-nv/make/stub_includes/opengl/GLES2/gl2ext-supplement.h:128: error: redefinition of typedef 'PFNGLGETMULTISAMPLEFVPROC'
       [cc] /export/home/jogamp/JogAmpSlavex64/workspace/jogl/label/solaris-x86_64-nv/make/stub_includes/opengl/GLES3/gl3x.h:1439: error: previous declaration of 'PFNGLGETMULTISAMPLEFVPROC' was here
       [cc] /export/home/jogamp/JogAmpSlavex64/workspace/jogl/label/solaris-x86_64-nv/make/stub_includes/opengl/GLES2/gl2ext-supplement.h:129: error: redefinition of typedef 'PFNGLSAMPLEMASKIPROC'
       [cc] /export/home/jogamp/JogAmpSlavex64/workspace/jogl/label/solaris-x86_64-nv/make/stub_includes/opengl/GLES3/gl3x.h:1440: error: previous declaration of 'PFNGLSAMPLEMASKIPROC' was here
Comment 7 Sven Gothel 2015-10-08 00:22:29 CEST
jogl 56eb5025694064ad3e25cf2fb7ba0cabbda8ee67

Fix gcc redefinition error, even thought typedef equals - on OpenIndiana w/ old'ish gcc
Comment 8 Xerxes Rånby 2015-10-08 07:46:54 CEST
Created attachment 755 [details]
no GLES3 nvidia-355.00.05-jogl.debug-GLWindow.log

GLES3 is false when testing using the Linux driver version 355.00.05
This is the driver with OpenGL ES 3.2 support
https://developer.nvidia.com/opengl-driver

java -Djogl.debug -cp gluegen/build/gluegen-rt.jar:jogl/build/jar/jogl-all.jar com.jogamp.newt.opengl.GLWindow 2>&1| tee nvidia-355.00.05-jogl.debug-GLWindow.log

---------------------
X11GraphicsDevice[type .x11, connection :1]: 
	Natives
		GL4bc 	true [4.5 (Compat profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware)]
		GL4 	true [4.5 (Core profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware)]
		GLES3 	false
		GL3bc 	true [4.5 (Compat profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware)]
		GL3 	true [4.5 (Core profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware)]
		GL2 	true [4.5 (Compat profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware)]
		GLES2 	true [2.0 (ES profile, arb, compat[ES2], FBO, software)]
		GLES1 	true [1.1 (ES profile, arb, compat[FP32], software)]
		Count	7 / 8
	Common
		GL4ES3 	true
		GL2GL3 	true
		GL2ES2 	true
		GL2ES1 	true
	Mappings
		GL3bc 	GLProfile[GL3bc/GL4bc.hw]
		GL2 	GLProfile[GL2/GL4bc.hw]
		GL4 	GLProfile[GL4/GL4.hw]
		GL3 	GLProfile[GL3/GL4.hw]
		GL2GL3 	GLProfile[GL2GL3/GL4bc.hw]
		GLES1 	GLProfile[GLES1/GLES1.sw]
		GLES2 	GLProfile[GLES2/GLES2.sw]
		GL2ES1 	GLProfile[GL2ES1/GL4bc.hw]
		GL4ES3 	GLProfile[GL4ES3/GL4.hw]
		GL2ES2 	GLProfile[GL2ES2/GL4.hw]
		GL4bc 	GLProfile[GL4bc/GL4bc.hw]
		default GLProfile[GL4bc/GL4bc.hw]
		Count	11 / 12

Swap Interval  1
GL Profile     GLProfile[GL4bc/GL4bc.hw]
GL Version     4.5 (Compat profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware) - 4.5.0 NVIDIA 355.00.05 [GL 4.5.0, vendor 355.0.5 (NVIDIA 355.00.05)]
Quirks         [NoSurfacelessCtx]
Impl. class    jogamp.opengl.gl4.GL4bcImpl
GL_VENDOR      NVIDIA Corporation
GL_RENDERER    GeForce GTX 580/PCIe/SSE2
GL_VERSION     4.5.0 NVIDIA 355.00.05
GLSL           true, has-compiler-func: true, version: 4.50 NVIDIA / 4.50.0
GL FBO: basic true, full true
GL_EXTENSIONS  313
GLX_EXTENSIONS 32
---------------------
Comment 9 Xerxes Rånby 2015-10-08 08:26:37 CEST
Created attachment 756 [details]
GLES3 found nvidia-355.00.09-jogl.debug-GLWindow.log

(In reply to Xerxes Rånby from comment #8)
> GLES3 is false when testing using the Linux driver version 355.00.05

good news, upgrading from the 355.00.05 beta driver to the 355.00.09 beta driver fixed the issue!

GLES3 is true using 355.00.09

---------------------
X11GraphicsDevice[type .x11, connection :1]: 
	Natives
		GL4bc 	true [4.5 (Compat profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware)]
		GL4 	true [4.5 (Core profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware)]
		GLES3 	true [3.2 (ES profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware)]
		GL3bc 	true [4.5 (Compat profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware)]
		GL3 	true [4.5 (Core profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware)]
		GL2 	true [4.5 (Compat profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware)]
		GLES2 	true [3.2 (ES profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware)]
		GLES1 	true [1.1 (ES profile, arb, compat[FP32], hardware)]
		Count	8 / 8
	Common
		GL4ES3 	true
		GL2GL3 	true
		GL2ES2 	true
		GL2ES1 	true
	Mappings
		GL3bc 	GLProfile[GL3bc/GL4bc.hw]
		GL2 	GLProfile[GL2/GL4bc.hw]
		GLES3 	GLProfile[GLES3/GLES3.hw]
		GL4 	GLProfile[GL4/GL4.hw]
		GL3 	GLProfile[GL3/GL4.hw]
		GL2GL3 	GLProfile[GL2GL3/GL4bc.hw]
		GLES1 	GLProfile[GLES1/GLES1.hw]
		GLES2 	GLProfile[GLES2/GLES3.hw]
		GL2ES1 	GLProfile[GL2ES1/GL4bc.hw]
		GL4ES3 	GLProfile[GL4ES3/GL4.hw]
		GL2ES2 	GLProfile[GL2ES2/GL4.hw]
		GL4bc 	GLProfile[GL4bc/GL4bc.hw]
		default GLProfile[GL4bc/GL4bc.hw]
		Count	12 / 12

Swap Interval  1
GL Profile     GLProfile[GL4bc/GL4bc.hw]
GL Version     4.5 (Compat profile, arb, compat[ES2, ES3, ES31, ES32], FBO, hardware) - 4.5.0 NVIDIA 355.00.09 [GL 4.5.0, vendor 355.0.9 (NVIDIA 355.00.09)]
Quirks         [NoSurfacelessCtx]
Impl. class    jogamp.opengl.gl4.GL4bcImpl
GL_VENDOR      NVIDIA Corporation
GL_RENDERER    GeForce GTX 580/PCIe/SSE2
GL_VERSION     4.5.0 NVIDIA 355.00.09
GLSL           true, has-compiler-func: true, version: 4.50 NVIDIA / 4.50.0
GL FBO: basic true, full true
GL_EXTENSIONS  313
GLX_EXTENSIONS 32
---------------------
Comment 10 Xerxes Rånby 2015-10-08 08:27:58 CEST
Working as expected when using 355.00.09