diff options
author | Sven Gothel <[email protected]> | 2009-08-05 11:55:14 -0700 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2009-08-05 11:55:14 -0700 |
commit | 0e998e8416b38b084b517c299061856b7ff963d7 (patch) | |
tree | 2cc191d7ab3d42b0316838d756019f45b62b0061 | |
parent | d741053ed1a422b75d6aeac28be7c5cdba4c4564 (diff) |
Update GlueGen to 7dc9c5601d5689dcbc003ca51cfe826942ea3e6b (latest)
- Fixes for OpenGL 3.2
- More strict define/function checking
- Better documentation in source code: extension relation
- GL extension marker exclusion is done by GlueGen now
- Adapted gluegen cfg files
Added OpenGL 3.2 extensions for GL3
Revalidation of all OpenGL 2.0/3.0/3.1 and 3.2 extensions
GL2GL3 based on OpenGL 2.0/3.0 headers
EGL shares common egl-common.cfg file
Removed experimental java system property 'jogl.GLContext.3_2',
try a 3.2 context in case of GL3.
X11GLXContext:
- Always try to make a created context current,
to verify it's usability. This is different than under WGL.
- Temporary removed usage: GLX.GLX_CONTEXT_PROFILE_MASK_ARB
NV driver bug.
47 files changed, 738 insertions, 344 deletions
diff --git a/make/build-jogl.xml b/make/build-jogl.xml index e5bb1ab38..846779fed 100644 --- a/make/build-jogl.xml +++ b/make/build-jogl.xml @@ -640,14 +640,14 @@ <target name="java.generate.gl2_gl3_if"> <echo message="Generating GL2_GL3 interface" /> <antcall target="java.generate.copy2temp" inheritRefs="true" /> - <gluegen src="${stub.includes.opengl}/gl2.c" + <gluegen src="${stub.includes.opengl}/gl3.c" outputRootDir="${build}" - config="${config}/gl-gl2-set.cfg" + config="${config}/gl-gl3-set.cfg" includeRefid="stub.includes.fileset.all.gl2" emitter="com.sun.gluegen.opengl.GLEmitter"> <classpath refid="gluegen.classpath" /> </gluegen> - <gluegen src="${stub.includes.opengl}/gl3.c" + <gluegen src="${stub.includes.opengl}/gl2.c" outputRootDir="${build}" config="${config}/gl-if-gl2_gl3.cfg" includeRefid="stub.includes.fileset.all.gl2" diff --git a/make/config/jogl/cgl-macosx.cfg b/make/config/jogl/cgl-macosx.cfg index 780afcf5b..54b4be171 100644 --- a/make/config/jogl/cgl-macosx.cfg +++ b/make/config/jogl/cgl-macosx.cfg @@ -6,10 +6,12 @@ NativeOutputDir gensrc/native/jogl/MacOSX Package com.sun.opengl.impl.macosx.cgl JavaClass CGL Style allstatic -Include gl-common-gl2.cfg +Include gl-common.cfg Include gl-common-extensions.cfg Include gl-desktop.cfg +GLHeader GL/cglext.h + Opaque long void * # Opaque directives for low-level CGL binding (for Java2D/JOGL bridge) diff --git a/make/config/jogl/cglext.cfg b/make/config/jogl/cglext.cfg index 4000ecb2b..3bd027c84 100755 --- a/make/config/jogl/cglext.cfg +++ b/make/config/jogl/cglext.cfg @@ -11,9 +11,11 @@ Style InterfaceAndImpl JavaClass CGLExt ImplPackage com.sun.opengl.impl.macosx.cgl ImplJavaClass CGLExtImpl -Include gl-common-gl2.cfg +Include gl-common.cfg Include gl-desktop.cfg +GLHeader GL/cglext.h + EmitProcAddressTable true ProcAddressTableClassName CGLExtProcAddressTable GetProcAddressTableExpr _context.getCGLExtProcAddressTable() diff --git a/make/config/jogl/egl-common.cfg b/make/config/jogl/egl-common.cfg new file mode 100644 index 000000000..bcda00b07 --- /dev/null +++ b/make/config/jogl/egl-common.cfg @@ -0,0 +1,46 @@ +# Inform the glue code generator of the association between #defines +# and functions and the extensions in which they are defined +GLHeader EGL/egl.h +GLHeader EGL/eglext.h + +# Imports needed by all glue code +Import java.nio.* +Import java.util.* +Import javax.media.opengl.* +Import javax.media.opengl.fixedfunc.* +Import com.sun.opengl.impl.* + +# Treat all of the EGL types as opaque longs +# Opaque long EGLConfig +Opaque long EGLContext +Opaque long EGLDisplay +Opaque long EGLSurface +Opaque long EGLNativeDisplayType +Opaque long EGLNativeWindowType +Opaque long EGLNativePixmapType +Opaque long EGLClientBuffer +Opaque long EGLImageKHR +#Opaque long EGLPerfMonitorNV +#Opaque long EGLPerfCounterNV +#Opaque long EGLPerfMarkerNV +Opaque long EGLSyncKHR +Opaque long NativeSyncKHR +Opaque boolean EGLBoolean + +# Make eglGetProcAddress return an opaque long +Opaque long __EGLFuncPtr + +# Implement the first argument to eglGetProcAddress as String instead +# of byte[] +ArgumentIsString eglGetProcAddress 0 +ReturnsString eglQueryString + +# Force all of the methods to be emitted using dynamic linking so we +# don't need to link against any emulation library on the desktop or +# depend on the presence of an import library for a particular device +ForceProcAddressGen __ALL__ + +# Also force the calling conventions of the locally generated function +# pointer typedefs for these routines to EGLAPIENTRY +LocalProcAddressCallingConvention __ALL__ EGLAPIENTRY + diff --git a/make/config/jogl/egl.cfg b/make/config/jogl/egl.cfg index 6457ab21a..26979fb6d 100755 --- a/make/config/jogl/egl.cfg +++ b/make/config/jogl/egl.cfg @@ -7,40 +7,20 @@ Package com.sun.opengl.impl.egl JavaClass EGL Style allstatic # Shouldn't matter which one of these we pick up +Include egl-common.cfg HierarchicalNativeOutput false -Include gl-common.cfg # Use a ProcAddressTable so we dynamically look up the routines EmitProcAddressTable true ProcAddressTableClassName EGLProcAddressTable GetProcAddressTableExpr _table -# Translate EGLBoolean as Java boolean -Opaque boolean EGLBoolean - # Implement the first argument to eglGetProcAddress as String instead # of byte[] ArgumentIsString eglGetProcAddress 0 ReturnsString eglQueryString -# Make eglGetProcAddress return an opaque long -Opaque long __EGLFuncPtr - -# Force all of the methods to be emitted using dynamic linking so we -# don't need to link against any emulation library on the desktop or -# depend on the presence of an import library for a particular device -ForceProcAddressGen __ALL__ - -# Treat all of the EGL types as opaque longs -Opaque long EGLContext -Opaque long EGLDisplay -Opaque long EGLSurface -Opaque long EGLNativeDisplayType -Opaque long EGLNativeWindowType -Opaque long EGLNativePixmapType -Opaque long EGLClientBuffer - CustomCCode #include <EGL/egl.h> Include ../intptr.cfg diff --git a/make/config/jogl/eglext.cfg b/make/config/jogl/eglext.cfg index 857eb5804..fedff35e9 100755 --- a/make/config/jogl/eglext.cfg +++ b/make/config/jogl/eglext.cfg @@ -9,54 +9,17 @@ JavaClass EGLExt ImplPackage com.sun.opengl.impl.egl ImplJavaClass EGLExtImpl # Shouldn't matter which one of these we pick up +Include egl-common.cfg ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/com/sun/opengl/impl/egl/EGL.java + HierarchicalNativeOutput false -Include gl-common.cfg # Use a ProcAddressTable so we dynamically look up the routines EmitProcAddressTable true ProcAddressTableClassName EGLExtProcAddressTable GetProcAddressTableExpr _context.getEGLExtProcAddressTable() -# Translate EGLBoolean as Java boolean -Opaque boolean EGLBoolean - -# Implement the first argument to eglGetProcAddress as String instead -# of byte[] -ArgumentIsString eglGetProcAddress 0 -ReturnsString eglQueryString - -# Make eglGetProcAddress return an opaque long -Opaque long __EGLFuncPtr - -# Force all of the methods to be emitted using dynamic linking so we -# don't need to link against any emulation library on the desktop or -# depend on the presence of an import library for a particular device -ForceProcAddressGen __ALL__ - -# Also force the calling conventions of the locally generated function -# pointer typedefs for these routines to EGLAPIENTRY -LocalProcAddressCallingConvention __ALL__ EGLAPIENTRY - -# Treat all of the EGL types as opaque longs -# Opaque long EGLConfig -Opaque long EGLContext -Opaque long EGLDisplay -Opaque long EGLSurface -Opaque long EGLNativeDisplayType -Opaque long EGLNativeWindowType -Opaque long EGLNativePixmapType -Opaque long EGLClientBuffer -Opaque long EGLImageKHR -#Opaque long EGLPerfMonitorNV -#Opaque long EGLPerfCounterNV -#Opaque long EGLPerfMarkerNV -Opaque long EGLSyncKHR -Opaque long NativeSyncKHR - -# Opaque long EGLClientBuffer - CustomCCode /* Define EGL_EGLEXT_PROTOTYPES so that the EGL extension prototypes in CustomCCode "eglext.h" are parsed. */ CustomCCode #define EGL_EGLEXT_PROTOTYPES @@ -66,9 +29,14 @@ CustomCCode #include <EGL/eglext.h> Include ../intptr.cfg # There are some #defines in eglext.h that GlueGen and PCPP don't currently handle +CustomJavaCode EGLExt /** Part of <code>EGL_KHR_image</code> */ CustomJavaCode EGLExt public static final long EGL_NO_IMAGE = 0; +CustomJavaCode EGLExt /** Part of <code>EGL_NV_perfmon</code> */ CustomJavaCode EGLExt public static final long EGL_NO_PERFMONITOR = 0; +CustomJavaCode EGLExt /** Part of <code>EGL_NV_perfmon</code> */ CustomJavaCode EGLExt public static final long EGL_DEFAULT_PERFMARKER = 0; +CustomJavaCode EGLExt /** Part of <code>EGL_KHR_sync</code> */ +CustomJavaCode EGLExt public static final long EGL_FOREVER_KHR = 0xFFFFFFFFFFFFFFFFL ; CustomJavaCode EGLExt public boolean isFunctionAvailable(String glFunctionName); CustomJavaCode EGLExt public boolean isExtensionAvailable(String glExtensionName); @@ -88,39 +56,3 @@ CustomJavaCode EGLExtImpl } CustomJavaCode EGLExtImpl private EGLContext _context; -# These Ignores cause the core EGL routines to be ignored from the -# EGLExt interface and EGLExtImpl implementing class. -Ignore eglBindAPI -Ignore eglBindTexImage -Ignore eglChooseConfig -Ignore eglCopyBuffers -Ignore eglCreateContext -Ignore eglCreatePbufferFromClientBuffer -Ignore eglCreatePbufferSurface -Ignore eglCreatePixmapSurface -Ignore eglCreateWindowSurface -Ignore eglDestroyContext -Ignore eglDestroySurface -Ignore eglGetConfigAttrib -Ignore eglGetConfigs -Ignore eglGetCurrentContext -Ignore eglGetCurrentDisplay -Ignore eglGetCurrentSurface -Ignore eglGetDisplay -Ignore eglGetError -Ignore eglGetProcAddress -Ignore eglInitialize -Ignore eglMakeCurrent -Ignore eglQueryAPI -Ignore eglQueryContext -Ignore eglQueryString -Ignore eglQuerySurface -Ignore eglReleaseTexImage -Ignore eglReleaseThread -Ignore eglSurfaceAttrib -Ignore eglSwapBuffers -Ignore eglSwapInterval -Ignore eglTerminate -Ignore eglWaitClient -Ignore eglWaitGL -Ignore eglWaitNative diff --git a/make/config/jogl/gl-common-extensions.cfg b/make/config/jogl/gl-common-extensions.cfg index fb46e43ca..e28ff43c8 100644 --- a/make/config/jogl/gl-common-extensions.cfg +++ b/make/config/jogl/gl-common-extensions.cfg @@ -1,8 +1,8 @@ -# Note: we keep the Apple, ATI and NVidia extensions since they are generally +# Note: we keep the Apple, AMD/ATI and NVidia extensions since they are generally # the most useful and up-to-date DropUniqVendorExtensions 3DFX -DropUniqVendorExtensions AMD +# DropUniqVendorExtensions AMD # DropUniqVendorExtensions APPLE # DropUniqVendorExtensions ATI DropUniqVendorExtensions HP @@ -51,11 +51,6 @@ IgnoreExtension GL_NV_present_video IgnoreExtension GL_NV_coverage_sample IgnoreExtension GL_NV_framebuffer_vertex_attrib_array -# Remove extension suffixes from extensions which are common -RenameExtensionIntoCore GL_ARB_framebuffer_object -IgnoreExtension GL_EXT_framebuffer_object -RenameExtensionIntoCore GL_OES_framebuffer_object - # Remove extension suffixes from extensions which are common between OpenGL and OpenGL ES RenameExtensionIntoCore GL_ARB_half_float_pixel RenameExtensionIntoCore GL_ARB_point_sprite @@ -65,6 +60,7 @@ RenameExtensionIntoCore GL_OES_blend_subtract RenameExtensionIntoCore GL_OES_compressed_paletted_texture RenameExtensionIntoCore GL_OES_depth24 RenameExtensionIntoCore GL_OES_depth32 +RenameExtensionIntoCore GL_OES_framebuffer_object RenameExtensionIntoCore GL_OES_mapbuffer RenameExtensionIntoCore GL_OES_point_sprite RenameExtensionIntoCore GL_OES_rgb8_rgba8 diff --git a/make/config/jogl/gl-common-gl2.cfg b/make/config/jogl/gl-common-gl2.cfg deleted file mode 100644 index 4d86d74cd..000000000 --- a/make/config/jogl/gl-common-gl2.cfg +++ /dev/null @@ -1,8 +0,0 @@ -# This .cfg file provides common options used among all GL glue code -# generated for Jogl on Windows. - -HierarchicalNativeOutput false -Include gl-common.cfg - -# XID needs to be treated as a long for 32/64 bit compatibility -Opaque long XID diff --git a/make/config/jogl/gl-common.cfg b/make/config/jogl/gl-common.cfg index efa4c7bdd..4d3a05d63 100644 --- a/make/config/jogl/gl-common.cfg +++ b/make/config/jogl/gl-common.cfg @@ -1,6 +1,8 @@ # This .cfg file provides common options used among all glue code # generated for Jogl on all platforms. +HierarchicalNativeOutput false + # Raise GLException instead of RuntimeException in glue code RuntimeExceptionType GLException UnsupportedExceptionType GLException @@ -38,7 +40,6 @@ Ignore glTracePointerRangeMESA # Manually implement glMapBuffer as the size of the returned buffer # can only be computed by calling another routine ManuallyImplement glMapBuffer -ManuallyImplement glMapBufferOES # Ignore the ATI_map_object_buffer extension for now unless someone # claims they need it, as it will undoubtedly require a similar @@ -49,36 +50,6 @@ Ignore glUnmapObjectBufferATI # Ignore some GL functions that have outgoing void** parameters; we cannot yet deal with them Ignore glGetVariantPointervEXT -# Don't output #defines of GL name strings as constants, because we -# don't need them java-side. -# Format of name strings is found at: -# http://oss.sgi.com/projects/ogl-sample/registry/doc/template.txt - -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_EXT_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_ARB_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_OES_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_PGI_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_SGI_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_SGIS_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_SGIX_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_MESA_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_HP_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_ATI_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_NV_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_IBM_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_WIN_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_REND_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_APPLE_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_INTEL_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_INGR_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_SUN_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_SUNX_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_3DFX_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_OML_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_I3D_.+ -Ignore (GL|GLU|GLX|WGL|AGL|CGL)_S3_.+ -Ignore GL_KTX_buffer_region - # FIXME: these extensions require either a handle to a device context # or take void** parameters or both. Until we think through the # semantics of each of these individually we need to disable them. @@ -234,47 +205,79 @@ IgnoreExtension GL_EXT_texture_sRGB # <<< OpenGL 2.1 # >>> OpenGL 3.0 -# Ignore extensions subsumed in OpenGL 3.0 (from OpenGL 3.0 spec, Appendix N) -IgnoreExtension GL_EXT_gpu_shader4 +# Ignore/Rename extensions subsumed in OpenGL 3.0 (from OpenGL 3.0 spec, Appendix N) +RenameExtensionIntoCore GL_EXT_gpu_shader4 -IgnoreExtension GL_NV_conditional_render +RenameExtensionIntoCore GL_NV_conditional_render -#Not promoted in header files: GL_APPLE_flush_buffer_range +RenameExtensionIntoCore GL_APPLE_flush_buffer_range -IgnoreExtension GL_ARB_color_buffer_float -#Not promoted in header files: GL_NV_depth_buffer_float -IgnoreExtension GL_ARB_texture_float -IgnoreExtension GL_EXT_packed_float -IgnoreExtension GL_EXT_texture_shared_exponent +RenameExtensionIntoCore GL_ARB_color_buffer_float +# gl.h uses GL_ARB_depth_buffer_float +RenameExtensionIntoCore GL_ARB_depth_buffer_float +IgnoreExtension GL_NV_depth_buffer_float +RenameExtensionIntoCore GL_ARB_texture_float +RenameExtensionIntoCore GL_EXT_packed_float +RenameExtensionIntoCore GL_EXT_texture_shared_exponent +# gl.h uses GL_ARB_framebuffer_object +# GL_*_geometry_shader4 is included here, due to a naming collision otherwise. +# glFramebufferTextureLayerARB is ignored due to it's existence in GL_ARB_framebuffer_object and GL_ARB_geometry_shader4 +RenameExtensionIntoCore GL_ARB_framebuffer_object IgnoreExtension GL_EXT_framebuffer_object +RenameExtensionIntoCore GL_ARB_geometry_shader4 +IgnoreExtension GL_EXT_geometry_shader4 +Ignore glFramebufferTextureLayerARB -# GL_NV_half_float, GL_NV_half_float_pixel: these are also not usable for Java .. -IgnoreExtension GL_NV_half_float -IgnoreExtension GL_NV_half_float_pixel +RenameExtensionIntoCore GL_NV_half_float +RenameExtensionIntoCore GL_ARB_half_float_pixel -IgnoreExtension GL_EXT_framebuffer_multisample -IgnoreExtension GL_EXT_framebuffer_blit +RenameExtensionIntoCore GL_EXT_framebuffer_multisample +RenameExtensionIntoCore GL_EXT_framebuffer_blit #Big gap of promoted tokens and functions: GL_EXT_texture_integer +RenameExtensionIntoCore GL_EXT_texture_integer -IgnoreExtension GL_EXT_texture_array +RenameExtensionIntoCore GL_EXT_texture_array -IgnoreExtension GL_EXT_packed_depth_stencil +RenameExtensionIntoCore GL_EXT_packed_depth_stencil -#Not promoted in header files: GL_EXT_draw_buffers2 +RenameExtensionIntoCore GL_EXT_draw_buffers2 +# gl.h uses GL_ARB_texture_compression_rgtc +RenameExtensionIntoCore GL_ARB_texture_compression_rgtc IgnoreExtension GL_EXT_texture_compression_rgtc -IgnoreExtension GL_EXT_transform_feedback +RenameExtensionIntoCore GL_EXT_transform_feedback IgnoreExtension GL_NV_transform_feedback +# gl.h uses GL_ARB_vertex_array_object +RenameExtensionIntoCore GL_ARB_vertex_array_object IgnoreExtension GL_APPLE_vertex_array_object +# gl.h uses GL_ARB_framebuffer_sRGB +RenameExtensionIntoCore GL_ARB_framebuffer_sRGB IgnoreExtension GL_EXT_framebuffer_sRGB +RenameExtensionIntoCore GL_ARB_map_buffer_range + # <<< OpenGL 3.0 +# >>> OpenGL 3.1 +# Rename extension suffices (if exist) subsumed in OpenGL 3.1 (from OpenGL 3.1 spec, Appendix G.1) +# We alias 3.1 subsumed extension even for GL2, due to the convenience of the common GL2GL3 profile! +RenameExtensionIntoCore GL_ARB_draw_instanced +IgnoreExtension GL_EXT_draw_instanced +RenameExtensionIntoCore GL_ARB_copy_buffer +RenameExtensionIntoCore GL_NV_primitive_restart +RenameExtensionIntoCore GL_ARB_texture_buffer_object +IgnoreExtension GL_EXT_texture_buffer_object +# Actually GL_ARB_texture_rectangle, but let's be convenient +RenameExtensionIntoCore GL_EXT_texture_rectangle +IgnoreExtension GL_NV_texture_rectangle +RenameExtensionIntoCore GL_ARB_uniform_buffer_object +# <<< OpenGL 3.1 + # Ignore a few obsolete versions of extensions that have been subsumed into the core or ARB extensions diff --git a/make/config/jogl/gl-desktop.cfg b/make/config/jogl/gl-desktop.cfg index d6a610c59..7e500a4f0 100755 --- a/make/config/jogl/gl-desktop.cfg +++ b/make/config/jogl/gl-desktop.cfg @@ -26,6 +26,9 @@ Opaque boolean BOOL Opaque long PROC Opaque long void ** +# XID needs to be treated as a long for 32/64 bit compatibility +Opaque long XID + # # Directives needed when processing cglext.h on MacOSX and other platforms # diff --git a/make/config/jogl/gl-gl2.cfg b/make/config/jogl/gl-gl2.cfg index 7b689093a..50574598a 100644 --- a/make/config/jogl/gl-gl2.cfg +++ b/make/config/jogl/gl-gl2.cfg @@ -26,7 +26,7 @@ Implements GL2Impl GL Implements GL2Impl GL2ES1 Implements GL2Impl GL2ES2 Implements GL2Impl GL2GL3 -Include gl-common-gl2.cfg +Include gl-common.cfg Include gl-common-extensions.cfg Include gl-desktop.cfg diff --git a/make/config/jogl/gl-gl2es12.cfg b/make/config/jogl/gl-gl2es12.cfg index 36bab82ed..9e36da2ea 100644 --- a/make/config/jogl/gl-gl2es12.cfg +++ b/make/config/jogl/gl-gl2es12.cfg @@ -18,7 +18,7 @@ Implements GL2ES12Impl GL Implements GL2ES12Impl GL2ES1 Implements GL2ES12Impl GL2ES2 -Include gl-common-gl2.cfg +Include gl-common.cfg Include gl-common-extensions.cfg Include gl-desktop.cfg diff --git a/make/config/jogl/gl-gl2-set.cfg b/make/config/jogl/gl-gl3-set.cfg index bce9cc731..ac1edac47 100644 --- a/make/config/jogl/gl-gl2-set.cfg +++ b/make/config/jogl/gl-gl3-set.cfg @@ -3,10 +3,11 @@ JavaOutputDir ../../build-temp/gluegen-set Package javax.media.opengl Style InterfaceOnly -JavaClass GL2Set -Include gl-common-gl2.cfg +JavaClass GL3Set +Include gl-common.cfg Include gl-common-extensions.cfg -Include gl-desktop.cfg +Include gl3-common.cfg +Include gl3-desktop.cfg EmitProcAddressTable false ProcAddressTableClassName DontGenerateProcAddressTableStuff diff --git a/make/config/jogl/gl-gl3.cfg b/make/config/jogl/gl-gl3.cfg index c5354cba4..576cd7cad 100644 --- a/make/config/jogl/gl-gl3.cfg +++ b/make/config/jogl/gl-gl3.cfg @@ -20,14 +20,26 @@ Implements GL3Impl GLBase Implements GL3Impl GL Implements GL3Impl GL2ES2 Implements GL3Impl GL2GL3 -Include gl-common-gl2.cfg +Include gl-common.cfg Include gl-common-extensions.cfg +Include gl3-common.cfg Include gl3-desktop.cfg +IncludeAs CustomJavaCode GL3 gl-if-CustomJavaCode-gl3.java + EmitProcAddressTable true ProcAddressTableClassName GL3ProcAddressTable GetProcAddressTableExpr ((GL3ProcAddressTable)_context.getGLProcAddressTable()) +# Force all of the methods to be emitted using dynamic linking so we +# don't need to link against any emulation library on the desktop or +# depend on the presence of an import library for a particular device +ForceProcAddressGen __ALL__ + +# Also force the calling conventions of the locally generated function +# pointer typedefs for these routines to APIENTRY +LocalProcAddressCallingConvention __ALL__ APIENTRY + # Pick up on-line OpenGL javadoc thanks to user cylab on javagaming.org forums TagNativeBinding true diff --git a/make/config/jogl/gl-if-CustomJavaCode-gl2.java b/make/config/jogl/gl-if-CustomJavaCode-gl2.java index fe6388cbe..4d1d0e048 100644 --- a/make/config/jogl/gl-if-CustomJavaCode-gl2.java +++ b/make/config/jogl/gl-if-CustomJavaCode-gl2.java @@ -10,30 +10,9 @@ public static final int GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT = 0x8DD8; /** Missed in the GL_EXT_gpu_shader4 promotion to 3.0 core */ public static final int GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT = 0x88FD; -/** Missed in the GL_ARB_color_buffer_float promotion to 3.0 core */ -public static final int GL_RGBA_FLOAT_MODE_ARB = 0x8820; - -/** Missed in the GL_ARB_texture_float promotion to 3.0 core */ -public static final int GL_ALPHA32F_ARB = 0x8816; -/** Missed in the GL_ARB_texture_float promotion to 3.0 core */ -public static final int GL_INTENSITY32F_ARB = 0x8817; -/** Missed in the GL_ARB_texture_float promotion to 3.0 core */ -public static final int GL_LUMINANCE32F_ARB = 0x8818; -/** Missed in the GL_ARB_texture_float promotion to 3.0 core */ -public static final int GL_ALPHA16F_ARB = 0x881C; -/** Missed in the GL_ARB_texture_float promotion to 3.0 core */ -public static final int GL_INTENSITY16F_ARB = 0x881D; -/** Missed in the GL_ARB_texture_float promotion to 3.0 core */ -public static final int GL_LUMINANCE16F_ARB = 0x881E; -/** Missed in the GL_ARB_texture_float promotion to 3.0 core */ -public static final int GL_LUMINANCE_ALPHA16F_ARB = 0x881F; - /** Missed in the GL_EXT_packed_float promotion to 3.0 core */ public static final int GL_RGBA_SIGNED_COMPONENTS_EXT = 0x8C3C; -/** Missed in the GL_EXT_texture_array promotion to 3.0 core */ -public static final int GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT = 0x884E; - /** Missed in the GL_EXT_framebuffer_sRGB promotion to 3.0 core */ public static final int GL_FRAMEBUFFER_SRGB_CAPABLE_EXT = 0x8DBA; diff --git a/make/config/jogl/gl-if-CustomJavaCode-gl3.java b/make/config/jogl/gl-if-CustomJavaCode-gl3.java new file mode 100644 index 000000000..1777c1557 --- /dev/null +++ b/make/config/jogl/gl-if-CustomJavaCode-gl3.java @@ -0,0 +1,8 @@ + +/** Part of <code>GL_ARB_uniform_buffer_object</code> */ +public static final int GL_INVALID_INDEX = 0xFFFFFFFF ; + +/** Part of <code>GL_ARB_sync</code> */ +public static final long GL_TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFFL ; + + diff --git a/make/config/jogl/gl-if-gl2_gl3.cfg b/make/config/jogl/gl-if-gl2_gl3.cfg index 0afe5d5b5..7f6903dd6 100644 --- a/make/config/jogl/gl-if-gl2_gl3.cfg +++ b/make/config/jogl/gl-if-gl2_gl3.cfg @@ -10,18 +10,18 @@ ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/javax/media/opengl/G ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/javax/media/opengl/GL2ES2.java ExtendedInterfaceSymbolsIgnore ../src/jogl/classes/javax/media/opengl/GLBase.java -ExtendedInterfaceSymbolsOnly ../build-temp/gluegen-set/javax/media/opengl/GL2Set.java +ExtendedInterfaceSymbolsOnly ../build-temp/gluegen-set/javax/media/opengl/GL3Set.java HierarchicalNativeOutput false Include gl-common.cfg Include gl-common-extensions.cfg +Include gl-desktop.cfg JavaOutputDir gensrc/classes NativeOutputDir gensrc/native/jogl # # Same name but different signature .. -# # No collisions found .. good! EmitProcAddressTable false @@ -30,10 +30,22 @@ GetProcAddressTableExpr DontGenerateProcAddressTableStuff # Inform the glue code generator of the association between #defines # and functions and the extensions in which they are defined -GLHeader GL3/gl3.h -GLHeader GL3/gl3ext.h +GLHeader GL/gl.h +GLHeader GL/glext.h + +# Force all of the methods to be emitted using dynamic linking so we +# don't need to link against any emulation library on the desktop or +# depend on the presence of an import library for a particular device +ForceProcAddressGen __ALL__ + +# Also force the calling conventions of the locally generated function +# pointer typedefs for these routines to APIENTRY +LocalProcAddressCallingConvention __ALL__ APIENTRY # Pick up on-line OpenGL javadoc thanks to user cylab on javagaming.org forums TagNativeBinding true +# Ignore extensions that are already picked up via the GL2ES1 interface +IgnoreExtension GL_EXT_point_parameters + Import java.io.PrintStream diff --git a/make/config/jogl/gl-impl-CustomJavaCode-gles1.java b/make/config/jogl/gl-impl-CustomJavaCode-gles1.java index 65236676a..c5831f426 100755 --- a/make/config/jogl/gl-impl-CustomJavaCode-gles1.java +++ b/make/config/jogl/gl-impl-CustomJavaCode-gles1.java @@ -292,7 +292,7 @@ private Map/*<ARBVBOKey, ByteBuffer>*/ arbVBOCache = new HashMap(); /** Entry point to C language function: <br> <code> LPVOID glMapBuffer(GLenum target, GLenum access); </code> */ public java.nio.ByteBuffer glMapBuffer(int target, int access) { - final long __addr_ = ((GLES1ProcAddressTable)_context.getGLProcAddressTable())._addressof_glMapBufferOES; + final long __addr_ = ((GLES1ProcAddressTable)_context.getGLProcAddressTable())._addressof_glMapBuffer; if (__addr_ == 0) { throw new GLException("Method \"glMapBuffer\" not available"); } diff --git a/make/config/jogl/gl-impl-CustomJavaCode-gles2.java b/make/config/jogl/gl-impl-CustomJavaCode-gles2.java index 2f69905a9..7e9b786b0 100755 --- a/make/config/jogl/gl-impl-CustomJavaCode-gles2.java +++ b/make/config/jogl/gl-impl-CustomJavaCode-gles2.java @@ -302,7 +302,7 @@ private Map/*<ARBVBOKey, ByteBuffer>*/ arbVBOCache = new HashMap(); /** Entry point to C language function: <br> <code> LPVOID glMapBuffer(GLenum target, GLenum access); </code> */ public java.nio.ByteBuffer glMapBuffer(int target, int access) { - final long __addr_ = ((GLES2ProcAddressTable)_context.getGLProcAddressTable())._addressof_glMapBufferOES; + final long __addr_ = ((GLES2ProcAddressTable)_context.getGLProcAddressTable())._addressof_glMapBuffer; if (__addr_ == 0) { throw new GLException("Method \"glMapBuffer\" not available"); } diff --git a/make/config/jogl/gl3-common.cfg b/make/config/jogl/gl3-common.cfg new file mode 100644 index 000000000..fac8323bb --- /dev/null +++ b/make/config/jogl/gl3-common.cfg @@ -0,0 +1,24 @@ + +# >>> OpenGL 3.1 +# See gl-common.cfg ! +# <<< OpenGL 3.1 + +# >>> OpenGL 3.2 +# Rename extension suffices (if exist) subsumed in OpenGL 3.2 (from OpenGL 3.2 spec, Appendix H.1) +RenameExtensionIntoCore GL_ARB_vertex_array_bgra +RenameExtensionIntoCore GL_ARB_draw_elements_base_vertex +RenameExtensionIntoCore GL_ARB_fragment_coord_conventions +RenameExtensionIntoCore GL_ARB_provoking_vertex +RenameExtensionIntoCore GL_ARB_seamless_cube_map +RenameExtensionIntoCore GL_ARB_texture_multisample +RenameExtensionIntoCore GL_ARB_depth_clamp +RenameExtensionIntoCore GL_ARB_geometry_shader4 +RenameExtensionIntoCore GL_ARB_sync +# <<< OpenGL 3.2 + +# Ignore GL functions that deal with explicit pointer values in such a +# way that we cannot implement the functionality in Java +Ignore glMultiDrawElementsBaseVertex + +Opaque long GLsync + diff --git a/make/config/jogl/gl3-desktop.cfg b/make/config/jogl/gl3-desktop.cfg index 2d34ade30..c3dd180bb 100755 --- a/make/config/jogl/gl3-desktop.cfg +++ b/make/config/jogl/gl3-desktop.cfg @@ -8,7 +8,6 @@ GLHeader GL3/gl3ext.h #Include gl-desktop-tracker.cfg - # # Directives needed when processing wglext.h on Windows and other platforms # diff --git a/make/config/jogl/glu-common.cfg b/make/config/jogl/glu-common.cfg index 3b5a1160a..df59175bb 100644 --- a/make/config/jogl/glu-common.cfg +++ b/make/config/jogl/glu-common.cfg @@ -1,3 +1,5 @@ +GLHeader GL/glu.h + # This .cfg file provides common options used among all GLU glue code HierarchicalNativeOutput false diff --git a/make/config/jogl/glx-x11.cfg b/make/config/jogl/glx-x11.cfg index 3ef151c44..c9079b84f 100644 --- a/make/config/jogl/glx-x11.cfg +++ b/make/config/jogl/glx-x11.cfg @@ -6,10 +6,13 @@ NativeOutputDir gensrc/native/jogl/X11 Package com.sun.opengl.impl.x11.glx JavaClass GLX Style allstatic -Include gl-common-gl2.cfg +Include gl-common.cfg Include gl-common-extensions.cfg Include gl-desktop.cfg +GLHeader GL/glx.h +GLHeader GL/glxext.h + EmitProcAddressTable true ProcAddressTableClassName GLXProcAddressTable GetProcAddressTableExpr glxProcAddressTable diff --git a/make/config/jogl/glxext.cfg b/make/config/jogl/glxext.cfg index ea4b6fe47..39ba379c4 100755 --- a/make/config/jogl/glxext.cfg +++ b/make/config/jogl/glxext.cfg @@ -10,9 +10,12 @@ ImplPackage com.sun.opengl.impl.x11.glx ImplJavaClass GLXExtImpl ExtendedInterfaceSymbolsIgnore ../build-temp/gensrc/classes/com/sun/opengl/impl/x11/glx/GLX.java -Include gl-common-gl2.cfg +Include gl-common.cfg Include gl-desktop.cfg +GLHeader GL/glx.h +GLHeader GL/glxext.h + EmitProcAddressTable true ProcAddressTableClassName GLXExtProcAddressTable GetProcAddressTableExpr _context.getGLXExtProcAddressTable() diff --git a/make/config/jogl/wgl-win32.cfg b/make/config/jogl/wgl-win32.cfg index f86f1adcc..6cd4fd412 100644 --- a/make/config/jogl/wgl-win32.cfg +++ b/make/config/jogl/wgl-win32.cfg @@ -6,10 +6,15 @@ NativeOutputDir gensrc/native/jogl/Windows Package com.sun.opengl.impl.windows.wgl JavaClass WGL Style allstatic -Include gl-common-gl2.cfg +Include gl-common.cfg Include gl-common-extensions.cfg Include gl-desktop.cfg +AllowNonGLExtensions true + +GLHeader wingdi.h +GLHeader GL/wglext.h + # Implement the first argument to wglGetProcAddress as String instead # of byte[] ArgumentIsString wglGetProcAddress 0 diff --git a/make/config/jogl/wglext.cfg b/make/config/jogl/wglext.cfg index af4430bbe..ea9a0257e 100644 --- a/make/config/jogl/wglext.cfg +++ b/make/config/jogl/wglext.cfg @@ -8,9 +8,14 @@ Style InterfaceAndImpl JavaClass WGLExt ImplPackage com.sun.opengl.impl.windows.wgl ImplJavaClass WGLExtImpl -Include gl-common-gl2.cfg +Include gl-common.cfg Include gl-desktop.cfg +AllowNonGLExtensions true + +GLHeader wingdi.h +GLHeader GL/wglext.h + EmitProcAddressTable true ProcAddressTableClassName WGLExtProcAddressTable GetProcAddressTableExpr _context.getWGLExtProcAddressTable() diff --git a/make/stub_includes/egl/EGL/egl.h b/make/stub_includes/egl/EGL/egl.h index 86ca4818f..fc6cc4c87 100755 --- a/make/stub_includes/egl/EGL/egl.h +++ b/make/stub_includes/egl/EGL/egl.h @@ -39,6 +39,8 @@ typedef void *EGLClientBuffer; #define EGL_VERSION_1_3 1 #define EGL_VERSION_1_4 1 +#ifndef EGL_VERSION_1_X + /* EGL Enumerants. Bitmasks and other exceptional cases aside, most * enums are assigned unique values starting at 0x3000. */ @@ -226,7 +228,10 @@ typedef void *EGLClientBuffer; * a bug in Khronos Bugzilla against task "Registry". */ +#endif /* EGL_VERSION_1_X */ +#ifndef EGL_VERSION_1_X +#define EGL_VERSION_1_X 1 /* EGL Functions */ @@ -300,6 +305,8 @@ EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, typedef void (* EGLAPIENTRY __EGLFuncPtr)(void); EGLAPI __EGLFuncPtr eglGetProcAddress(const char *procname); +#endif /* EGL_VERSION_1_X */ + #ifdef __cplusplus } #endif diff --git a/make/stub_includes/egl/EGL/eglext.h b/make/stub_includes/egl/EGL/eglext.h index 5afa60118..7d7347e71 100755 --- a/make/stub_includes/egl/EGL/eglext.h +++ b/make/stub_includes/egl/EGL/eglext.h @@ -90,7 +90,7 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay display #define EGL_KHR_image 1 #define EGL_NATIVE_PIXMAP_KHR 0x30B0 /* eglCreateImageKHR target */ typedef void *EGLImageKHR; -#define EGL_NO_IMAGE_KHR ((EGLImageKHR)0) +/* Manual: #define EGL_NO_IMAGE_KHR ((EGLImageKHR)0) */ #ifdef EGL_EGLEXT_PROTOTYPES EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, EGLint *attr_list); EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image); @@ -160,8 +160,8 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGL #define EGL_RAW_VALUE_NV 0x1239 #define EGL_PERCENTAGE_VALUE_NV 0x1240 #define EGL_BAD_CURRENT_PERFMONITOR_NV 0x1241 -#define EGL_NO_PERFMONITOR_NV ((EGLPerfMonitorNV)0) -#define EGL_DEFAULT_PERFMARKER_NV ((EGLPerfMarkerNV)0) +/* Manual: #define EGL_NO_PERFMONITOR_NV ((EGLPerfMonitorNV)0) */ +/* Manual: #define EGL_DEFAULT_PERFMARKER_NV ((EGLPerfMarkerNV)0) */ typedef void *EGLPerfMonitorNV; typedef void *EGLPerfMarkerNV; #ifdef USE_GLUEGEN @@ -272,31 +272,10 @@ EGLAPI EGLBoolean EGLAPIENTRY eglNvmaOutputSurfacePbufferUnlock(EGLDisplay displ #endif -/* EGL_KHR_sync +/** + * EGL_KHR_sync */ #ifndef EGL_KHR_sync -#define EGL_KHR_sync 1 -typedef void* EGLSyncKHR; -typedef void* NativeSyncKHR; -typedef uint64_t EGLTimeKHR; -#ifdef EGL_EGLEXT_PROTOTYPES -EGLSyncKHR eglCreateFenceSyncKHR( EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list ); -NativeSyncKHR eglCreateNativeSyncKHR( EGLSyncKHR sync ); -EGLBoolean eglDestroySyncKHR( EGLSyncKHR sync ); -EGLBoolean eglFenceKHR( EGLSyncKHR sync ); -EGLint eglClientWaitSyncKHR( EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout ); -EGLBoolean eglSignalSyncKHR( EGLSyncKHR sync, EGLenum mode ); -EGLBoolean eglGetSyncAttribKHR( EGLSyncKHR sync, EGLint attribute, EGLint *value ); -#else -typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATEFENCESYNCKHRPROC)( EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list ); -typedef NativeSyncKHR (EGLAPIENTRYP PFNEGLCREATENATIVESYNCKHRPROC)( EGLSyncKHR sync ); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC)( EGLSyncKHR sync ); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCEKHRPROC)( EGLSyncKHR sync ); -typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC)( EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout ); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC)( EGLSyncKHR sync, EGLenum mode ); -typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC)( EGLSyncKHR sync, EGLint attribute, EGLint *value ); -#endif - /* !!!!! TODO: Get correct values for these defines !!!! Do not rely on these values...THEY WILL CHANGE! And it WILL BREAK binary compatibility when they do! */ @@ -306,7 +285,7 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC)( EGLSyncKHR sync, E #define EGL_SIGNALED_KHR 0x3103 #define EGL_UNSIGNALED_KHR 0x3104 #define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001 -#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull +/* Manual: #define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull */ #define EGL_ALREADY_SIGNALED_KHR 0x3105 #define EGL_TIMEOUT_EXPIRED_KHR 0x3106 #define EGL_CONDITION_SATISFIED_KHR 0x3107 @@ -314,9 +293,32 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC)( EGLSyncKHR sync, E #define EGL_SYNC_CONDITION_KHR 0x3109 #define EGL_SYNC_FENCE_KHR 0x310A #define EGL_NO_SYNC_KHR 0x0000 -#endif +typedef void* EGLSyncKHR; +typedef void* NativeSyncKHR; +typedef uint64_t EGLTimeKHR; + +#endif +#ifndef EGL_KHR_sync +#define EGL_KHR_sync 1 +#ifdef EGL_EGLEXT_PROTOTYPES +EGLSyncKHR eglCreateFenceSyncKHR( EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list ); +NativeSyncKHR eglCreateNativeSyncKHR( EGLSyncKHR sync ); +EGLBoolean eglDestroySyncKHR( EGLSyncKHR sync ); +EGLBoolean eglFenceKHR( EGLSyncKHR sync ); +EGLint eglClientWaitSyncKHR( EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout ); +EGLBoolean eglSignalSyncKHR( EGLSyncKHR sync, EGLenum mode ); +EGLBoolean eglGetSyncAttribKHR( EGLSyncKHR sync, EGLint attribute, EGLint *value ); +#endif +typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATEFENCESYNCKHRPROC)( EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list ); +typedef NativeSyncKHR (EGLAPIENTRYP PFNEGLCREATENATIVESYNCKHRPROC)( EGLSyncKHR sync ); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC)( EGLSyncKHR sync ); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCEKHRPROC)( EGLSyncKHR sync ); +typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC)( EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout ); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC)( EGLSyncKHR sync, EGLenum mode ); +typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC)( EGLSyncKHR sync, EGLint attribute, EGLint *value ); +#endif /* EGL_NV_omx_il_sink */ diff --git a/make/stub_includes/opengl/GL/glext.h b/make/stub_includes/opengl/GL/glext.h index 68bf425cf..b2c23a822 100644 --- a/make/stub_includes/opengl/GL/glext.h +++ b/make/stub_includes/opengl/GL/glext.h @@ -1185,6 +1185,13 @@ extern "C" { #define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 #endif +#ifndef GL_EXT_texture_rectangle +#define GL_TEXTURE_RECTANGLE_EXT 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_EXT 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_EXT 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT 0x84F8 +#endif + #ifndef GL_ARB_color_buffer_float #define GL_RGBA_FLOAT_MODE_ARB 0x8820 #define GL_CLAMP_VERTEX_COLOR_ARB 0x891A @@ -3150,16 +3157,6 @@ extern "C" { #define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED #endif -/* Support for GL_EXT_texture_rectangle on non-nVidia cards */ -#ifndef GL_EXT_texture_rectangle -#define GL_EXT_texture_rectangle 1 -#define GL_TEXTURE_RECTANGLE_EXT 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE_EXT 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE_EXT 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT 0x84F8 -#endif /* GL_TEXTURE_RECTANGLE_EXT */ - - #ifndef GL_ATI_vertex_streams #define GL_MAX_VERTEX_STREAMS_ATI 0x876B #define GL_VERTEX_STREAM0_ATI 0x876C @@ -3318,6 +3315,23 @@ extern "C" { #define GL_MODULATE_SUBTRACT_ATI 0x8746 #endif +#ifndef GL_APPLE_float_pixels +#define GL_HALF_APPLE 0x140B +#define GL_COLOR_FLOAT_APPLE 0x8A0F +#define GL_RGBA_FLOAT32_APPLE 0x8814 +#define GL_RGB_FLOAT32_APPLE 0x8815 +#define GL_ALPHA_FLOAT32_APPLE 0x8816 +#define GL_INTENSITY_FLOAT32_APPLE 0x8817 +#define GL_LUMINANCE_FLOAT32_APPLE 0x8818 +#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 +#define GL_RGBA_FLOAT16_APPLE 0x881A +#define GL_RGB_FLOAT16_APPLE 0x881B +#define GL_ALPHA_FLOAT16_APPLE 0x881C +#define GL_INTENSITY_FLOAT16_APPLE 0x881D +#define GL_LUMINANCE_FLOAT16_APPLE 0x881E +#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F +#endif + #ifndef GL_ATI_texture_float #define GL_RGBA_FLOAT32_ATI 0x8814 #define GL_RGB_FLOAT32_ATI 0x8815 @@ -3792,7 +3806,7 @@ extern "C" { #define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6 #endif -#ifndef NV_parameter_buffer_object +#ifndef GL_NV_parameter_buffer_object #define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 #define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 #define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 @@ -3810,9 +3824,9 @@ extern "C" { #endif #ifndef GL_EXT_texture_compression_rgtc -#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB -#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC -#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD +#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC +#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD #define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE #endif @@ -5142,6 +5156,10 @@ typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs) #define GL_ARB_texture_rectangle 1 #endif +#ifndef GL_EXT_texture_rectangle +#define GL_EXT_texture_rectangle 1 +#endif + #ifndef GL_ARB_color_buffer_float #define GL_ARB_color_buffer_float 1 #ifdef GL_GLEXT_PROTOTYPES @@ -7329,6 +7347,10 @@ typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs) #define GL_ATI_texture_env_combine3 1 #endif +#ifndef GL_APPLE_float_pixels +#define GL_APPLE_float_pixels 1 +#endif + #ifndef GL_ATI_texture_float #define GL_ATI_texture_float 1 #endif @@ -8035,7 +8057,7 @@ GLAPI void APIENTRY glBindBufferRangeEXT (GLenum, GLuint, GLuint, GLintptr, GLsi GLAPI void APIENTRY glBindBufferOffsetEXT (GLenum, GLuint, GLuint, GLintptr); GLAPI void APIENTRY glBindBufferBaseEXT (GLenum, GLuint, GLuint); GLAPI void APIENTRY glTransformFeedbackVaryingsEXT (GLuint, GLsizei, const GLchar **, GLenum); -GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT (GLuint, GLuint, GLint *); +GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *); #endif /* GL_GLEXT_PROTOTYPES */ typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode); typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void); @@ -8043,7 +8065,7 @@ typedef void (APIENTRYP PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint inde typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); typedef void (APIENTRYP PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer); typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); -typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLint *location); +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); #endif #ifndef GL_EXT_direct_state_access @@ -8436,6 +8458,7 @@ typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenu /** * http://www.opengl.org/registry/specs/AMD/vertex_shader_tessellator.txt */ + #ifndef GL_AMD_vertex_shader_tessellator #define GL_SAMPLER_BUFFER_AMD 0x9001 #define GL_INT_SAMPLER_BUFFER_AMD 0x9002 @@ -8447,7 +8470,7 @@ typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenu #endif #ifndef GL_AMD_vertex_shader_tessellator -#define GL_AMD_vertex_shader_tessellator +#define GL_AMD_vertex_shader_tessellator 1 #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glTessellationFactorAMD(GLfloat factor); GLAPI void APIENTRY glTessellationModeAMD(GLenum mode); @@ -8522,23 +8545,6 @@ typedef void (APIENTRY * PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei len typedef void (APIENTRY * PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, GLvoid **params); #endif -#ifndef GL_APPLE_float_pixels -#define GL_HALF_APPLE 0x140B -#define GL_COLOR_FLOAT_APPLE 0x8A0F -#define GL_RGBA_FLOAT32_APPLE 0x8814 -#define GL_RGB_FLOAT32_APPLE 0x8815 -#define GL_ALPHA_FLOAT32_APPLE 0x8816 -#define GL_INTENSITY_FLOAT32_APPLE 0x8817 -#define GL_LUMINANCE_FLOAT32_APPLE 0x8818 -#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 -#define GL_RGBA_FLOAT16_APPLE 0x881A -#define GL_RGB_FLOAT16_APPLE 0x881B -#define GL_ALPHA_FLOAT16_APPLE 0x881C -#define GL_INTENSITY_FLOAT16_APPLE 0x881D -#define GL_LUMINANCE_FLOAT16_APPLE 0x881E -#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F -#endif - #ifndef GL_APPLE_pixel_buffer #define GL_MIN_PBUFFER_VIEWPORT_DIMS_APPLE 0x8A10 #endif diff --git a/make/stub_includes/opengl/GL/glu.h b/make/stub_includes/opengl/GL/glu.h index bccda7f8e..e3a16f304 100644 --- a/make/stub_includes/opengl/GL/glu.h +++ b/make/stub_includes/opengl/GL/glu.h @@ -62,6 +62,13 @@ extern "C" { /*************************************************************/ +/* Version */ +#define GLU_VERSION_1_1 1 +#define GLU_VERSION_1_2 1 +#define GLU_VERSION_1_3 1 + +#ifndef GLU_VERSION_1_X + /* Extensions */ #define GLU_EXT_object_space_tess 1 #define GLU_EXT_nurbs_tessellator 1 @@ -70,11 +77,6 @@ extern "C" { #define GLU_FALSE 0 #define GLU_TRUE 1 -/* Version */ -#define GLU_VERSION_1_1 1 -#define GLU_VERSION_1_2 1 -#define GLU_VERSION_1_3 1 - /* StringName */ #define GLU_VERSION 100800 #define GLU_EXTENSIONS 100801 @@ -280,6 +282,11 @@ typedef GLUtesselator GLUtriangulatorObj; /* Internal convenience typedefs */ typedef void (GLAPIENTRY *_GLUfuncptr)(); +#endif /* GLX_VERSION_1_X */ + +#ifndef GLU_VERSION_1_X +#define GLU_VERSION_1_X 1 + GLAPI void GLAPIENTRY gluBeginCurve (GLUnurbs* nurb); GLAPI void GLAPIENTRY gluBeginPolygon (GLUtesselator* tess); GLAPI void GLAPIENTRY gluBeginSurface (GLUnurbs* nurb); @@ -401,6 +408,8 @@ typedef void (GLAPIENTRY * PFNGLUTESSVERTEXPROC) (GLUtesselator* tess, GLdouble typedef GLint (GLAPIENTRY * PFNGLUUNPROJECTPROC) (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ); typedef GLint (GLAPIENTRY * PFNGLUUNPROJECT4PROC) (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble nearVal, GLdouble farVal, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW); +#endif /* GLU_VERSION_1_X */ + #ifdef __cplusplus } #endif diff --git a/make/stub_includes/opengl/GL/glx.h b/make/stub_includes/opengl/GL/glx.h index 4032f45da..67225e043 100644 --- a/make/stub_includes/opengl/GL/glx.h +++ b/make/stub_includes/opengl/GL/glx.h @@ -66,9 +66,9 @@ extern "C" { #define GLX_VERSION_1_4 1 */ -#define GLX_EXTENSION_NAME "GLX" - +#ifndef GLX_VERSION_1_X +#define GLX_EXTENSION_NAME "GLX" /* * Tokens for glXChooseVisual and glXGetConfig: @@ -192,8 +192,12 @@ typedef XID GLXContextID; typedef XID GLXWindow; typedef XID GLXPbuffer; +#endif /* GLX_VERSION_1_X */ +#ifndef GLX_VERSION_1_X +#define GLX_VERSION_1_X 1 + extern XVisualInfo* glXChooseVisual( Display *dpy, int screen, int *attribList ); @@ -300,6 +304,8 @@ extern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable, /* GLX 1.4 and later */ extern void (*glXGetProcAddress(const GLubyte *procname))(); +#endif /* GLX_VERSION_1_X */ + #ifndef GLX_GLXEXT_LEGACY #include <GL/glxext.h> diff --git a/make/stub_includes/opengl/GL/glxext.h b/make/stub_includes/opengl/GL/glxext.h index 2ed99a824..ad580022e 100644 --- a/make/stub_includes/opengl/GL/glxext.h +++ b/make/stub_includes/opengl/GL/glxext.h @@ -266,16 +266,13 @@ extern "C" { typedef void (*__GLXextFuncPtr)(void); -#ifdef GLX_GLXEXT_PROTOTYPES -extern __GLXextFuncPtr glXGetProcAddress (const GLubyte *); -#endif /* GLX_GLXEXT_PROTOTYPES */ -typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName); - #ifndef GLX_ARB_get_proc_address #define GLX_ARB_get_proc_address 1 #ifdef GLX_GLXEXT_PROTOTYPES +extern __GLXextFuncPtr glXGetProcAddress (const GLubyte *); extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *); #endif /* GLX_GLXEXT_PROTOTYPES */ +typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName); typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSARBPROC) (const GLubyte *procName); #endif @@ -868,9 +865,9 @@ typedef void ( * PFNGLXRELEASETEXIMAGEEXTPROC) (Display *dpy, #endif #ifndef GLX_NV_present_video -#define GLX_NV_present_video +#define GLX_NV_present_video 1 #ifdef GLX_GLXEXT_PROTOTYPES -extern unsigned int *glXEnumerateVideoDevicesNV(Display *dpy, +extern unsigned int* glXEnumerateVideoDevicesNV(Display *dpy, int screen, int *nelements); extern int glXBindVideoDeviceNV(Display *dpy, diff --git a/make/stub_includes/opengl/GL3/gl3.h b/make/stub_includes/opengl/GL3/gl3.h index 41ed2ad2e..7db3851bd 100755 --- a/make/stub_includes/opengl/GL3/gl3.h +++ b/make/stub_includes/opengl/GL3/gl3.h @@ -1059,7 +1059,7 @@ typedef void GLvoid; #define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 #define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 #define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 -#define GL_INVALID_INDEX 0xFFFFFFFFu +/** Manual: #define GL_INVALID_INDEX -1 == (int) 0xFFFFFFFFu */ #endif #ifndef GL_ARB_copy_buffer @@ -1103,8 +1103,6 @@ typedef unsigned short GLhalfARB; typedef unsigned short GLhalfNV; #endif -#include "glext-64bit-types.h" - #ifndef GL_VERSION_1_0 #define GL_VERSION_1_0 1 #ifdef GL3_PROTOTYPES diff --git a/make/stub_includes/opengl/GL3/gl3ext.h b/make/stub_includes/opengl/GL3/gl3ext.h index 8dcc9b4a3..7d391921f 100644 --- a/make/stub_includes/opengl/GL3/gl3ext.h +++ b/make/stub_includes/opengl/GL3/gl3ext.h @@ -1,6 +1,185 @@ #ifndef __gl3ext_h_ #define __gl3ext_h_ +#include "gl3-64bit-types.h" + +/* + * ------------------------------------------------ + * Everything here and below was added manually + * to the version of glext.h obtained from: + * http://oss.sgi.com/projects/ogl-sample/registry/index.html + * ------------------------------------------------ + * + * Structure is: + * #ifndef GL_EXTENSION_NAME + * Add DEFINES here + * #endif + * #ifndef GL_EXTENSION_NAME + * Add TYPEDEFS here + * #endif + * #ifndef GL_EXTENSION_NAME + * #define GL_EXTENSION_NAME 1 + * #ifdef GL_GL3EXT_PROTOTYPES + * Add FUNCTION DECLARATIONS here + * #endif + * FUNCTION POINTER DECLARATIONS NOT NEEDED + * #endif + */ + +#ifndef GL_VERSION_3_2 +#define GL_VERSION_3_2 1 +/* OpenGL 3.2 also reuses entry points from these extensions: */ +/* ARB_vertex_array_bgra */ +/* ARB_draw_elements_base_vertex */ +/* ARB_fragment_coord_conventions */ +/* ARB_provoking_vertex */ +/* ARB_seamless_cube_map */ +/* ARB_texture_multisample */ +/* ARB_depth_clamp */ +/* ARB_geometry_shader4 */ +/* ARB_sync */ +#ifdef GL_GL3EXT_PROTOTYPES +#endif /* GL3_PROTOTYPES */ +#endif + +/** + * http://www.opengl.org/registry/specs/ARB/vertex_array_bgra.txt + */ +#ifndef GL_ARB_vertex_array_bgra +#define GL_BGRA 0x80E1 +#endif +#ifndef GL_ARB_vertex_array_bgra +#define GL_ARB_vertex_array_bgra 1 +#ifdef GL_GL3EXT_PROTOTYPES +/* No FUNCTIONS */ +#endif +/* No need for explicit function pointer: we force generation of ProcAddress .. */ +#endif + +/** + * http://www.opengl.org/registry/specs/ARB/draw_elements_base_vertex.txt + */ +#ifndef GL_ARB_draw_elements_base_vertex +/* No TOKENS */ +#endif +#ifndef GL_ARB_draw_elements_base_vertex +#define GL_ARB_draw_elements_base_vertex 1 +#ifdef GL_GL3EXT_PROTOTYPES +GLAPI void APIENTRY glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, + GLvoid *indices, GLint basevertex); +GLAPI void APIENTRY glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, + GLsizei count, GLenum type, GLvoid *indices, GLint basevertex); +GLAPI void APIENTRY glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, + GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex); +GLAPI void APIENTRY glMultiDrawElementsBaseVertex(GLenum mode, GLsizei *count, GLenum type, + GLvoid **indices, GLsizei primcount, GLint *basevertex); +#endif +/* No need for explicit function pointer: we force generation of ProcAddress .. */ +#endif + +/** + * http://www.opengl.org/registry/specs/ARB/fragment_coord_conventions.txt + */ +#ifndef GL_ARB_fragment_coord_conventions +/* No Tokens */ +#endif +#ifndef GL_ARB_fragment_coord_conventions +#define GL_ARB_fragment_coord_conventions 1 +#ifdef GL_GL3EXT_PROTOTYPES +/* No Functions */ +#endif +/* No need for explicit function pointer: we force generation of ProcAddress .. */ +#endif + +/** + * http://www.opengl.org/registry/specs/ARB/provoking_vertex.txt + */ +#ifndef GL_ARB_provoking_vertex +#define GL_FIRST_VERTEX_CONVENTION 0x8E4D +#define GL_LAST_VERTEX_CONVENTION 0x8E4E +#define GL_PROVOKING_VERTEX 0x8E4F +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C +#endif +#ifndef GL_ARB_provoking_vertex +#define GL_ARB_provoking_vertex 1 +#ifdef GL_GL3EXT_PROTOTYPES +GLAPI void APIENTRY glProvokingVertex(GLenum mode); +#endif +/* No need for explicit function pointer: we force generation of ProcAddress .. */ +#endif + +/** + * http://www.opengl.org/registry/specs/ARB/seamless_cube_map.txt + */ +#ifndef GL_ARB_seamless_cube_map +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F +#endif +#ifndef GL_ARB_seamless_cube_map +#define GL_ARB_seamless_cube_map 1 +#ifdef GL_GL3EXT_PROTOTYPES +/* No Functions */ +#endif +/* No need for explicit function pointer: we force generation of ProcAddress .. */ +#endif + +/** + * http://www.opengl.org/registry/specs/ARB/texture_multisample.txt + */ +#ifndef GL_ARB_texture_multisample +#define GL_SAMPLE_POSITION 0x8E50 +#define GL_SAMPLE_MASK 0x8E51 +#define GL_SAMPLE_MASK_VALUE 0x8E52 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 +#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 +#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E +#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F +#define GL_MAX_INTEGER_SAMPLES 0x9110 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 +#define GL_TEXTURE_SAMPLES 0x9106 +#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 +#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 +#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D +#endif +#ifndef GL_ARB_texture_multisample +#define GL_ARB_texture_multisample 1 +#ifdef GL_GL3EXT_PROTOTYPES +GLAPI void APIENTRY glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, + GLsizei width, GLsizei height, + GLboolean fixedsamplelocations); +GLAPI void APIENTRY glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, + GLsizei width, GLsizei height, GLsizei depth, + GLboolean fixedsamplelocations); +GLAPI void APIENTRY glGetMultisamplefv(GLenum pname, GLuint index, GLfloat *val); +GLAPI void APIENTRY glSampleMaski(GLuint index, GLbitfield mask); +#endif +/* No need for explicit function pointer: we force generation of ProcAddress .. */ +#endif + +/** + * http://www.opengl.org/registry/specs/ARB/depth_clamp.txt + */ +#ifndef GL_ARB_depth_clamp +#define GL_DEPTH_CLAMP 0x864F +#endif +#ifndef GL_ARB_depth_clamp +#define GL_ARB_depth_clamp 1 +#ifdef GL_GL3EXT_PROTOTYPES +/* No FUNCTIONS */ +#endif +/* No need for explicit function pointer: we force generation of ProcAddress .. */ +#endif + +/** + * http://www.opengl.org/registry/specs/ARB/geometry_shader4.txt + */ #ifndef GL_ARB_geometry_shader4 #define GL_LINES_ADJACENCY_ARB 0x000A #define GL_LINE_STRIP_ADJACENCY_ARB 0x000B @@ -23,7 +202,6 @@ /* reuse GL_MAX_VARYING_COMPONENTS */ /* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ #endif - #ifndef GL_ARB_geometry_shader4 #define GL_ARB_geometry_shader4 1 #ifdef GL_GL3EXT_PROTOTYPES @@ -31,22 +209,62 @@ GLAPI void APIENTRY glProgramParameteriARB (GLuint, GLenum, GLint); GLAPI void APIENTRY glFramebufferTextureARB (GLenum, GLenum, GLuint, GLint); GLAPI void APIENTRY glFramebufferTextureLayerARB (GLenum, GLenum, GLuint, GLint, GLint); GLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum, GLenum, GLuint, GLint, GLenum); -#endif /* GL_GL3EXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); +#endif +/* No need for explicit function pointer: we force generation of ProcAddress .. */ #endif +/** + * http://www.opengl.org/registry/specs/ARB/sync.txt + */ +#ifndef GL_ARB_sync +#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 +#define GL_OBJECT_TYPE 0x9112 +#define GL_SYNC_CONDITION 0x9113 +#define GL_SYNC_STATUS 0x9114 +#define GL_SYNC_FLAGS 0x9115 +#define GL_SYNC_FENCE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 +#define GL_UNSIGNALED 0x9118 +#define GL_SIGNALED 0x9119 +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +/* Manual: #define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFul */ +#define GL_ALREADY_SIGNALED 0x911A +#define GL_TIMEOUT_EXPIRED 0x911B +#define GL_CONDITION_SATISFIED 0x911C +#define GL_WAIT_FAILED 0x911D +#endif +#ifndef GL_ARB_sync +typedef int64_t GLint64; +typedef uint64_t GLuint64; +typedef struct __GLsync *GLsync; +#endif +#ifndef GL_ARB_sync +#define GL_ARB_sync 1 +#ifdef GL_GL3EXT_PROTOTYPES +GLAPI GLsync APIENTRY glFenceSync(GLenum condition, GLbitfield flags); +GLAPI GLboolean APIENTRY glIsSync(GLsync sync); +GLAPI void APIENTRY glDeleteSync(GLsync sync); +GLAPI GLenum APIENTRY glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); +GLAPI void APIENTRY glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); +GLAPI void APIENTRY glGetInteger64v(GLenum pname, GLint64 *params); +GLAPI void APIENTRY glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +#endif +/* No need for explicit function pointer: we force generation of ProcAddress .. */ +#endif -/* - * ------------------------------------------------ - * Everything here and below was added manually - * to the version of glext.h obtained from: - * http://oss.sgi.com/projects/ogl-sample/registry/index.html - * ------------------------------------------------ +/** + * Convenient names only .. actually subsumed into core */ - +#ifndef GL_ARB_texture_rectangle +#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 +#endif + +#ifndef GL_ARB_texture_rectangle +#define GL_ARB_texture_rectangle 1 +#endif /** * http://www.opengl.org/registry/specs/AMD/vertex_shader_tessellator.txt @@ -60,9 +278,8 @@ typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLen #define GL_TESSELLATION_MODE_AMD 0x9004 #define GL_TESSELLATION_FACTOR_AMD 0x9005 #endif - #ifndef GL_AMD_vertex_shader_tessellator -#define GL_AMD_vertex_shader_tessellator +#define GL_AMD_vertex_shader_tessellator 1 #ifdef GL_GL3EXT_PROTOTYPES GLAPI void APIENTRY glTessellationFactorAMD(GLfloat factor); GLAPI void APIENTRY glTessellationModeAMD(GLenum mode); @@ -71,5 +288,67 @@ typedef void (APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor); typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode); #endif +#ifndef GL_APPLE_float_pixels +#define GL_HALF_APPLE 0x140B +#define GL_COLOR_FLOAT_APPLE 0x8A0F +#define GL_RGBA_FLOAT32_APPLE 0x8814 +#define GL_RGB_FLOAT32_APPLE 0x8815 +#define GL_ALPHA_FLOAT32_APPLE 0x8816 +#define GL_INTENSITY_FLOAT32_APPLE 0x8817 +#define GL_LUMINANCE_FLOAT32_APPLE 0x8818 +#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 +#define GL_RGBA_FLOAT16_APPLE 0x881A +#define GL_RGB_FLOAT16_APPLE 0x881B +#define GL_ALPHA_FLOAT16_APPLE 0x881C +#define GL_INTENSITY_FLOAT16_APPLE 0x881D +#define GL_LUMINANCE_FLOAT16_APPLE 0x881E +#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F #endif +#ifndef GL_APPLE_float_pixels +#define GL_APPLE_float_pixels 1 +#endif + +#ifndef GL_ATI_texture_float +#define GL_RGBA_FLOAT32_ATI 0x8814 +#define GL_RGB_FLOAT32_ATI 0x8815 +#define GL_ALPHA_FLOAT32_ATI 0x8816 +#define GL_INTENSITY_FLOAT32_ATI 0x8817 +#define GL_LUMINANCE_FLOAT32_ATI 0x8818 +#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 +#define GL_RGBA_FLOAT16_ATI 0x881A +#define GL_RGB_FLOAT16_ATI 0x881B +#define GL_ALPHA_FLOAT16_ATI 0x881C +#define GL_INTENSITY_FLOAT16_ATI 0x881D +#define GL_LUMINANCE_FLOAT16_ATI 0x881E +#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F +#endif + +#ifndef GL_ATI_texture_float +#define GL_ATI_texture_float 1 +#endif + +#ifndef GL_NV_float_buffer +#define GL_FLOAT_R_NV 0x8880 +#define GL_FLOAT_RG_NV 0x8881 +#define GL_FLOAT_RGB_NV 0x8882 +#define GL_FLOAT_RGBA_NV 0x8883 +#define GL_FLOAT_R16_NV 0x8884 +#define GL_FLOAT_R32_NV 0x8885 +#define GL_FLOAT_RG16_NV 0x8886 +#define GL_FLOAT_RG32_NV 0x8887 +#define GL_FLOAT_RGB16_NV 0x8888 +#define GL_FLOAT_RGB32_NV 0x8889 +#define GL_FLOAT_RGBA16_NV 0x888A +#define GL_FLOAT_RGBA32_NV 0x888B +#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C +#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D +#define GL_FLOAT_RGBA_MODE_NV 0x888E +#endif + +#ifndef GL_NV_float_buffer +#define GL_NV_float_buffer 1 +#endif + +#endif /* __gl3ext_h_ */ + diff --git a/make/stub_includes/opengl/GLES/gl.h b/make/stub_includes/opengl/GLES/gl.h index da71230b5..41afe2239 100755 --- a/make/stub_includes/opengl/GLES/gl.h +++ b/make/stub_includes/opengl/GLES/gl.h @@ -71,6 +71,8 @@ typedef int GLsizeiptr; #define GL_VERSION_ES_CM_1_1 1 #define GL_VERSION_ES_CL_1_1 1 +#ifndef GL_VERSION_ES_1_0 + /* ClearBufferMask */ #define GL_DEPTH_BUFFER_BIT 0x00000100 #define GL_STENCIL_BUFFER_BIT 0x00000400 @@ -576,6 +578,8 @@ typedef int GLsizeiptr; #define GL_DOT3_RGB 0x86AE #define GL_DOT3_RGBA 0x86AF +#endif /* GL_VERSION_ES_1_0 */ + /*------------------------------------------------------------------------* * required OES extension tokens *------------------------------------------------------------------------*/ @@ -617,6 +621,8 @@ typedef int GLsizeiptr; /*************************************************************/ +#ifndef GL_VERSION_ES_CM +#define GL_VERSION_ES_CM 1 /* Available only in Common profile */ GL_API void GL_APIENTRY glAlphaFunc (GLenum func, GLclampf ref); GL_API void GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); @@ -658,7 +664,10 @@ GL_API void GL_APIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat * GL_API void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); GL_API void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); GL_API void GL_APIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z); +#endif /* GL_VERSION_ES_CM */ +#ifndef GL_VERSION_ES_CL_CM +#define GL_VERSION_ES_CL 1 /* Available in both Common and Common-Lite profiles */ GL_API void GL_APIENTRY glActiveTexture (GLenum texture); GL_API void GL_APIENTRY glAlphaFuncx (GLenum func, GLclampx ref); @@ -768,6 +777,7 @@ GL_API void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffs GL_API void GL_APIENTRY glTranslatex (GLfixed x, GLfixed y, GLfixed z); GL_API void GL_APIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); GL_API void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); +#endif /* GL_VERSION_ES_CL */ /*------------------------------------------------------------------------* * Required OES extension functions diff --git a/make/stub_includes/opengl/GLES/glext.h b/make/stub_includes/opengl/GLES/glext.h index ee6ebae20..f9e181dd0 100755 --- a/make/stub_includes/opengl/GLES/glext.h +++ b/make/stub_includes/opengl/GLES/glext.h @@ -244,7 +244,6 @@ typedef void* GLeglImageOES; #define GL_3DC_XY_AMD 0x87FA #endif -/* GL_AMD_compressed_ATC_texture */ #ifndef GL_AMD_compressed_ATC_texture #define GL_ATC_RGB_AMD 0x8C92 #define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 @@ -634,7 +633,6 @@ typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum #define GL_AMD_compressed_3DC_texture 1 #endif -/* GL_AMD_compressed_ATC_texture */ #ifndef GL_AMD_compressed_ATC_texture #define GL_AMD_compressed_ATC_texture 1 #endif diff --git a/make/stub_includes/opengl/GLES2/gl2.h b/make/stub_includes/opengl/GLES2/gl2.h index 9c68b1e7a..44338000e 100755 --- a/make/stub_includes/opengl/GLES2/gl2.h +++ b/make/stub_includes/opengl/GLES2/gl2.h @@ -99,8 +99,7 @@ typedef int GLclampx; typedef int GLintptr; typedef int GLsizeiptr; -/* OpenGL ES core versions */ -#define GL_ES_VERSION_2_0 1 +#ifndef GL_ES_VERSION_2_0 /* ClearBufferMask */ #define GL_DEPTH_BUFFER_BIT 0x00000100 @@ -532,10 +531,14 @@ typedef int GLsizeiptr; #define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +#endif /* GL_ES_VERSION_2_0 */ + /*------------------------------------------------------------------------- * GL core functions. *-----------------------------------------------------------------------*/ +#ifndef GL_ES_VERSION_2_0 +#define GL_ES_VERSION_2_0 1 GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture); GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader); GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const char* name); @@ -678,6 +681,7 @@ GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint indx, GLfloat x, GL GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint indx, const GLfloat* values); GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* ptr); GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); +#endif /* GL_ES_VERSION_2_0 */ #ifdef __cplusplus } diff --git a/make/stub_includes/opengl/GLES2/gl2ext.h b/make/stub_includes/opengl/GLES2/gl2ext.h index 8580e2bdf..e3bbede8a 100755 --- a/make/stub_includes/opengl/GLES2/gl2ext.h +++ b/make/stub_includes/opengl/GLES2/gl2ext.h @@ -61,9 +61,7 @@ extern "C" { #define GL_NVIDIA_PLATFORM_BINARY_NV 0x890B -#define GL_OES_EGL_image 1 - -#ifdef GL_OES_EGL_image +#ifndef GL_OES_EGL_image /** sgothel: wrong defines and/or numbers: * #define GL_TEXTURE_2D_OES 0x1 @@ -76,12 +74,17 @@ extern "C" { #define GL_RENDERBUFFER_OES 0x9 #define GL_TEXTURE_RECTANGLE_NV_OES 0xb */ +#endif /* GL_OES_EGL_image */ +#ifndef GL_OES_EGL_image typedef void *GLeglImageOES; +#endif /* GL_OES_EGL_image */ + +#ifndef GL_OES_EGL_image +#define GL_OES_EGL_image 1 GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image); #ifdef GL_GLEXT_PROTOTYPES typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); - #endif #endif diff --git a/make/stub_includes/opengl/gl2es12.c b/make/stub_includes/opengl/gl2es12.c index 75cb4acfc..bc9d24ace 100644 --- a/make/stub_includes/opengl/gl2es12.c +++ b/make/stub_includes/opengl/gl2es12.c @@ -6,8 +6,3 @@ #include <GL/gl.h> -// removed due to renaming and the fact that the renamed version is not included -// in the super interfaces .. -GLAPI void APIENTRY glWeightPointer (GLint, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glMatrixIndexPointer (GLint, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCurrentPaletteMatrix (GLint); diff --git a/make/stub_includes/opengl/gl3-64bit-types.h b/make/stub_includes/opengl/gl3-64bit-types.h new file mode 100644 index 000000000..fc8b4ce05 --- /dev/null +++ b/make/stub_includes/opengl/gl3-64bit-types.h @@ -0,0 +1,41 @@ +#ifndef __gl3_64bit_types_h_ +#define __gl3_64bit_types_h_ + +#ifndef GL3_64_TYPES_DEFINED + /* This code block is duplicated in glext.h, so must be protected */ + #define GL3_64_TYPES_DEFINED + /* Define int32_t, int64_t, and uint64_t types for UST/MSC */ + /* (as used in the GL_EXT_timer_query extension). */ + #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + #include <inttypes.h> + #elif defined(__sun__) + #include <inttypes.h> + #if defined(__STDC__) + #if defined(__arch64__) + typedef long int int64_t; + typedef unsigned long int uint64_t; + #else + typedef long long int int64_t; + typedef unsigned long long int uint64_t; + #endif /* __arch64__ */ + #endif /* __STDC__ */ + #elif defined( __VMS ) + #include <inttypes.h> + #elif defined(__SCO__) || defined(__USLC__) + #include <stdint.h> + #elif defined(__UNIXOS2__) || defined(__SOL64__) + typedef long int int32_t; + typedef long long int int64_t; + typedef unsigned long long int uint64_t; + #elif defined(WIN32) && defined(__GNUC__) + #include <stdint.h> + #elif defined(_WIN32) + typedef __int32 int32_t; + typedef __int64 int64_t; + typedef unsigned __int64 uint64_t; + #else + #include <inttypes.h> /* Fallback option */ + #endif +#endif + +#endif /* __gl3_64bit_types_h_ */ diff --git a/make/stub_includes/opengl/glu-impl.c b/make/stub_includes/opengl/glu-impl.c deleted file mode 100644 index 2328639d8..000000000 --- a/make/stub_includes/opengl/glu-impl.c +++ /dev/null @@ -1,3 +0,0 @@ -#include <GL/glu.h> - - diff --git a/make/stub_includes/win32/wingdi.h b/make/stub_includes/win32/wingdi.h index 4d980755b..46aeec2b6 100644 --- a/make/stub_includes/win32/wingdi.h +++ b/make/stub_includes/win32/wingdi.h @@ -6,6 +6,8 @@ * */ +#ifndef WGL_GDI_VERSION_1_X + typedef struct tagRGBQUAD { BYTE rgbBlue; BYTE rgbGreen; @@ -163,6 +165,11 @@ typedef struct tagPIXELFORMATDESCRIPTOR #define SW_FORCEMINIMIZE 11 #define SW_MAX 11 +#endif /* WGL_GDI_VERSION_1_X */ + +#ifndef WGL_GDI_VERSION_1_X +#define WGL_GDI_VERSION_1_X + // Windows routines WINBASEAPI DWORD WINAPI GetLastError(VOID); WINBASEAPI HMODULE WINAPI LoadLibraryA(LPCSTR lpLibFileName); @@ -214,3 +221,5 @@ WINUSERAPI BOOL WINAPI DestroyWindow(HWND hWnd); // Routines for changing gamma ramp of display device WINGDIAPI BOOL WINAPI GetDeviceGammaRamp(HDC,LPVOID); WINGDIAPI BOOL WINAPI SetDeviceGammaRamp(HDC,LPVOID); + +#endif /* WGL_GDI_VERSION_1_X */ diff --git a/src/jogl/classes/com/sun/opengl/impl/GLContextImpl.java b/src/jogl/classes/com/sun/opengl/impl/GLContextImpl.java index d1a35b1b6..16eb934bd 100644 --- a/src/jogl/classes/com/sun/opengl/impl/GLContextImpl.java +++ b/src/jogl/classes/com/sun/opengl/impl/GLContextImpl.java @@ -61,7 +61,6 @@ public abstract class GLContextImpl extends GLContext { // platforms anyway in particular with the disabling of the // GLWorkerThread which we found to be necessary in 1.0 beta 4. protected boolean optimizationEnabled = Debug.isPropertyDefined("jogl.GLContext.optimize", true); - protected boolean tryGLContext3_2 = Debug.isPropertyDefined("jogl.GLContext.3_2", true); // Cache of the functions that are available to be called at the current // moment in time diff --git a/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXPbufferCGLContext.java b/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXPbufferCGLContext.java index 4ea3519bf..0754c4b57 100644 --- a/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXPbufferCGLContext.java +++ b/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXPbufferCGLContext.java @@ -86,7 +86,7 @@ public class MacOSXPbufferCGLContext extends MacOSXCGLContext { rect = false; } } - textureTarget = (rect ? GL2.GL_TEXTURE_RECTANGLE_EXT: GL.GL_TEXTURE_2D); + textureTarget = (rect ? GL2.GL_TEXTURE_RECTANGLE : GL.GL_TEXTURE_2D); int[] tmp = new int[1]; gl.glGenTextures(1, tmp, 0); texture = tmp[0]; diff --git a/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXPbufferCGLDrawable.java b/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXPbufferCGLDrawable.java index 0d031ffff..2d7b3ea34 100644 --- a/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXPbufferCGLDrawable.java +++ b/src/jogl/classes/com/sun/opengl/impl/macosx/cgl/MacOSXPbufferCGLDrawable.java @@ -98,7 +98,7 @@ public class MacOSXPbufferCGLDrawable extends MacOSXCGLDrawable { GLProfile glProfile = capabilities.getGLProfile(); int renderTarget; if (glProfile.isGL2() && capabilities.getPbufferRenderToTextureRectangle()) { - renderTarget = GL2.GL_TEXTURE_RECTANGLE_EXT; + renderTarget = GL2.GL_TEXTURE_RECTANGLE; } else { int w = getNextPowerOf2(getWidth()); int h = getNextPowerOf2(getHeight()); diff --git a/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLContext.java b/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLContext.java index e459d0c5a..9a3860ae2 100644 --- a/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLContext.java +++ b/src/jogl/classes/com/sun/opengl/impl/windows/wgl/WindowsWGLContext.java @@ -178,7 +178,8 @@ public class WindowsWGLContext extends GLContextImpl { if(glCaps.getGLProfile().isGL3()) { // Try >= 3.2 core first ! - // In contrast to GLX no verify with a None drawable binding (default framebuffer) is necessary. + // In contrast to GLX no verify with a None drawable binding (default framebuffer) is necessary, + // if no 3.2 is available creation fails already! attribs[0+1] = 3; attribs[2+1] = 2; attribs[6+0] = WGLExt.WGL_CONTEXT_PROFILE_MASK_ARB; @@ -186,7 +187,7 @@ public class WindowsWGLContext extends GLContextImpl { hglrc = wglExt.wglCreateContextAttribsARB(drawable.getNativeWindow().getSurfaceHandle(), hglrc2, attribs, 0); if(0==hglrc) { if(DEBUG) { - System.err.println("WindowsWGLContext.createContext couldn't create >= 3.2 core context"); + System.err.println("WindowsWGLContext.createContext couldn't create >= 3.2 core context - fallback"); } // Try >= 3.1 forward compatible - last resort for GL3 ! attribs[0+1] = 3; @@ -201,6 +202,13 @@ public class WindowsWGLContext extends GLContextImpl { if(0==hglrc) { // 3.1 or 3.0 .. hglrc = wglExt.wglCreateContextAttribsARB(drawable.getNativeWindow().getSurfaceHandle(), hglrc2, attribs, 0); + if(DEBUG) { + if(0==hglrc) { + System.err.println("WindowsWGLContext.createContext couldn't create >= 3.0 context - fallback"); + } else { + System.err.println("WindowsWGLContext.createContext >= 3.0 available 0x"+Long.toHexString(hglrc)); + } + } } if(0==hglrc) { diff --git a/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXContext.java b/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXContext.java index 126062d27..d5a5f3433 100644 --- a/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXContext.java +++ b/src/jogl/classes/com/sun/opengl/impl/x11/glx/X11GLXContext.java @@ -202,27 +202,30 @@ public abstract class X11GLXContext extends GLContextImpl { }; if(glCaps.getGLProfile().isGL3()) { - if(tryGLContext3_2) { - // Try >= 3.2 core first - // and verify with a None drawable binding (default framebuffer) - attribs[0+1] = 3; - attribs[2+1] = 2; - // FIXME: attribs[8+0] = GLX.GLX_CONTEXT_PROFILE_MASK_ARB; - // FIXME: attribs[8+1] = GLX.GLX_CONTEXT_CORE_PROFILE_BIT_ARB; - - context = glXExt.glXCreateContextAttribsARB(display, config.getFBConfig(), share, direct, attribs, 0); - if(0!=context) { - if (!GLX.glXMakeContextCurrent(display, 0, 0, context)) { - if(DEBUG) { - System.err.println("X11GLXContext.createContext couldn't make >= 3.2 core context current - fallback"); - } - GLX.glXMakeContextCurrent(display, 0, 0, 0); - GLX.glXDestroyContext(display, context); - context = 0; - } else if(DEBUG) { - System.err.println("X11GLXContext.createContext >= 3.2 available 0x"+Long.toHexString(context)); + // Try >= 3.2 core first + // and verify with a None drawable binding (default framebuffer) + attribs[0+1] = 3; + attribs[2+1] = 2; + // FIXME NV Bug: attribs[8+0] = GLX.GLX_CONTEXT_PROFILE_MASK_ARB; + // FIXME NV Bug: attribs[8+1] = GLX.GLX_CONTEXT_CORE_PROFILE_BIT_ARB; + + context = glXExt.glXCreateContextAttribsARB(display, config.getFBConfig(), share, direct, attribs, 0); + if(0!=context) { + if (!GLX.glXMakeContextCurrent(display, + drawable.getNativeWindow().getSurfaceHandle(), + drawable.getNativeWindow().getSurfaceHandle(), + context)) { + if(DEBUG) { + System.err.println("X11GLXContext.createContext couldn't make >= 3.2 core context current - fallback"); } + GLX.glXMakeContextCurrent(display, 0, 0, 0); + GLX.glXDestroyContext(display, context); + context = 0; } else if(DEBUG) { + System.err.println("X11GLXContext.createContext >= 3.2 available 0x"+Long.toHexString(context)); + } + } else { + if(DEBUG) { System.err.println("X11GLXContext.createContext couldn't create >= 3.2 core context - fallback"); } } @@ -238,6 +241,25 @@ public abstract class X11GLXContext extends GLContextImpl { if(0==context) { // 3.1 or 3.0 .. context = glXExt.glXCreateContextAttribsARB(display, config.getFBConfig(), share, direct, attribs, 0); + if(0!=context) { + if (!GLX.glXMakeContextCurrent(display, + drawable.getNativeWindow().getSurfaceHandle(), + drawable.getNativeWindow().getSurfaceHandle(), + context)) { + if(DEBUG) { + System.err.println("X11GLXContext.createContext couldn't make >= 3.0 core context current - fallback"); + } + GLX.glXMakeContextCurrent(display, 0, 0, 0); + GLX.glXDestroyContext(display, context); + context = 0; + } else if(DEBUG) { + System.err.println("X11GLXContext.createContext >= 3.0 available 0x"+Long.toHexString(context)); + } + } else { + if(DEBUG) { + System.err.println("X11GLXContext.createContext couldn't create >= 3.0 core context - fallback"); + } + } } if(0==context) { @@ -253,22 +275,17 @@ public abstract class X11GLXContext extends GLContextImpl { drawable.getNativeWindow().getSurfaceHandle(), drawable.getNativeWindow().getSurfaceHandle(), context)) { + GLX.glXMakeContextCurrent(display, 0, 0, 0); + GLX.glXDestroyContext(display, temp_context); throw new GLException("Error making context (old) current: display 0x"+Long.toHexString(display)+", context 0x"+Long.toHexString(context)+", drawable "+drawable); } if(DEBUG) { System.err.println("X11GLXContext.createContext done (old ctx < 3.0 - no 3.0) 0x"+Long.toHexString(context)); } } else { - GLX.glXMakeContextCurrent(display, 0, 0, 0); GLX.glXDestroyContext(display, temp_context); // need to update the GL func table .. - if (!GLX.glXMakeContextCurrent(display, - drawable.getNativeWindow().getSurfaceHandle(), - drawable.getNativeWindow().getSurfaceHandle(), - context)) { - throw new GLException("Error making context (new) current: display 0x"+Long.toHexString(display)+", context 0x"+Long.toHexString(context)+", drawable "+drawable); - } updateGLProcAddressTable(); if(DEBUG) { System.err.println("X11GLXContext.createContext done (new ctx >= 3.0) 0x"+Long.toHexString(context)); |