Moved GlueGen out of the JOGL workspace and into its own project. Restructured JOGL and JOAL build processes to separately invoke GlueGen's main build.xml before using it to generate their code. Refactored OS/CPU detection code into gluegen-cpptasks.xml build file in GlueGen workspace, which is now imported by both the JOGL and JOAL build processes. Unfortunately it seems to be somewhat difficult to completely factor out the C compiler configuration into the GlueGen workspace so this has been left for a later date. Added missed ALProcAddressLookup file to JOAL workspace. Updated JOGL and JOAL build documentation. More documentation for the GlueGen workspace is forthcoming.
Moved GlueGen out of the JOGL workspace and into its own project. Restructured JOGL and JOAL build processes to separately invoke GlueGen's main build.xml before using it to generate their code. Refactored OS/CPU detection code into gluegen-cpptasks.xml build file in GlueGen workspace, which is now imported by both the JOGL and JOAL build processes. Unfortunately it seems to be somewhat difficult to completely factor out the C compiler configuration into the GlueGen workspace so this has been left for a later date. Added missed ALProcAddressLookup file to JOAL workspace. Updated JOGL and JOAL build documentation. More documentation for the GlueGen workspace is forthcoming.
Intermediate checkin for FBO support in Java2D/JOGL bridge. Needed to keep track of server-side OpenGL objects, like textures and display lists, created by the end user to preserve the illusion of independent contexts even though they will all share textures and display lists with the Java2D OpenGL context in order to access its FBO. Added GLObjectTracker class to track creation and destruction of these objects and to support cleanup when the last referring context has been destroyed. Modified GLContextShareSet to create and install GLObjectTrackers when necessary and GLContext to ref and unref tracker appropriately. Changed GlueGen's JavaPrologue and JavaEpilogue directives (and their documentation) to perform argument name substitution. Wrote documentation section on argument name substitution and specified behavior for primitive arrays (converts to string "array_name, array_name_offset" in substitution). Rephrased GlueGen's RangeCheck directives in terms of JavaPrologue directives and deleted old specialized code. Fixed bug in handling of VBO support in GLConfiguration when JavaPrologue was present for affected functions. Added JavaPrologue and JavaEpilogue directives to all existing OpenGL routines creating server-side objects (though it's possible some were missed) to call GLObjectTracker when necessary. Added RangeCheck directives for these routines as well. Worked around bug in JOGL demos where shutdownDemo() was being called more than once.
Added checking of whether the correct GLContext is current to the DebugGL pipeline. Fixed dependencies in JOGL and JOAL build.xml files so that generated code gets automatically rebuilt if GlueGen is updated.
Fixed Issue 6: unqualified class names in generated java code
Applied and expanded patch from user tck to fully qualify all references to New I/O classes in generated code. Tested by removing Import of java.nio.* from JOGL and JOAL; required modification of the custom Java code for those packages, but otherwise working well.
Cleanup for a better OpenGL 3.2 integration, for subsuming extensions: - Allow RenameExtensionIntoCore generate duplicate names, ie those will not be generated. - Add proper comment showing the extension of the symbol. - Fail if no 'GLHeader' is specified, but we are processing a GL/ProcAddress config - Fail if a GL function is not part of an extension
MethodBinding, ConstantDefinition cleanup: - getName() returns the renamed name - getOrigName() returns the original - getAliasedNames() returns the aliased ones
MethodBinding: - Change: equals() operates on renamed name - Add: hashCode() function - same criteria as equals()
Impact: - All config options etc shall trigger with the renamed name, but ignore, rename etc. - Generated Java impl. uses the renamed base name as well
Change: emitDefine() uses the ConstantDefinition
Add: JavaConfiguration: dumpRenames()
Change JavaConfiguration.shouldIgnoreInInterface/Impl(): - respect the renamed symbol name as well
Change JavaEmitter.emitFunctions(): - only emit a generated MethodBinding once, therefor store emitted method bindings in a HashSet
Fix BuildStaticGLInfo: - Allow white space at the end of #ifndef and #define - Trim strings - Allow 'const' qualifier in function pattern
Fix GLEmitter: - Fail if no 'GLHeader' is specified, but a RenameIntoCore option .. - Don't emit marker defines, marking an extension (ie not part of an extension)
Fix GLJavaMethodBindingEmitter: - Fail if a GL function is not part of an extension
Fix PCPP: - Pass constant type qualifiers for hex-constants: 'l' 'L' ...
Fix ProcAddressEmitter: - Operate on the aliased/renamed name for querying ProcAddress usage and generating code.
Cleanup for a better OpenGL 3.2 integration, for subsuming extensions: - Allow RenameExtensionIntoCore generate duplicate names, ie those will not be generated. - Add proper comment showing the extension of the symbol. - Fail if no 'GLHeader' is specified, but we are processing a GL/ProcAddress config - Fail if a GL function is not part of an extension
MethodBinding, ConstantDefinition cleanup: - getName() returns the renamed name - getOrigName() returns the original - getAliasedNames() returns the aliased ones
MethodBinding: - Change: equals() operates on renamed name - Add: hashCode() function - same criteria as equals()
Impact: - All config options etc shall trigger with the renamed name, but ignore, rename etc. - Generated Java impl. uses the renamed base name as well
Change: emitDefine() uses the ConstantDefinition
Add: JavaConfiguration: dumpRenames()
Change JavaConfiguration.shouldIgnoreInInterface/Impl(): - respect the renamed symbol name as well
Change JavaEmitter.emitFunctions(): - only emit a generated MethodBinding once, therefor store emitted method bindings in a HashSet
Fix BuildStaticGLInfo: - Allow white space at the end of #ifndef and #define - Trim strings - Allow 'const' qualifier in function pattern
Fix GLEmitter: - Fail if no 'GLHeader' is specified, but a RenameIntoCore option .. - Don't emit marker defines, marking an extension (ie not part of an extension)
Fix GLJavaMethodBindingEmitter: - Fail if a GL function is not part of an extension
Fix PCPP: - Pass constant type qualifiers for hex-constants: 'l' 'L' ...
Fix ProcAddressEmitter: - Operate on the aliased/renamed name for querying ProcAddress usage and generating code.
Fix: Remove PFD_ defines. Add GL Option: AllowNonGLExtensions <bool> to allow non GL extensions to be passed. Allow ifndef/define pattern to have any characters at the end
Refactored ProcAddressTable generation. - ProcAddressTable is now the common superclass for all tables - Removed ProcAddressHelpers and added FunctionAddressResolver extension mechanism
Adding patches for gluegen interoperability and adding some extensions:
- eglplatform.h: if platform not recognized, use 'void pointer' for EGLNativeDisplayType, EGLNativeWindowType and EGLNativePixmapType - egl.h: adding ifndef core extension for gluegen and eglGetProcAddress - eglext.h: adding EGL_NV_texture_rectangle, EGL_NV_system_time, EGL_NV_omx_il_sink, EGL_RMSURFACE_NV
Adding patches for gluegen interoperability and adding some extensions: - all: changed 'TYPE name[3]' -> 'TYPE * name' for gluegen - gl.h: adding ifndef core extension and profiles for gluegen
Complete removal of NV KD and OMX started with 46f17013c7cd59d551371edb2c1a4a57f8cbd84f (code dependencies)
This currently removes KD fullscreen for NV devices and the whole OMX NV stream/file type detection, which renders the OMX hack useless. However, updated EGL sync (NV proprietary) to EGL_KHR_reusable_sync and EGL_KHR_fence_sync.
Fix buffer size: 64bit GLBufferSizeTracker, hash over addr+size, save fail-fast hash cache, ..
Relates to GlueGen 6b6b9b3b81cdc85b7260664ebec547756a6be5d7, branch sgothel_wip_fixes01.
Memory object size is ptrdiff_t, hence long (64bit). The hash value must include size as well, otherwise boundaries cannot be verified. (security) Double check hash collisions while adding a new MemoryObject.
- Adding gluegen-gl.jar for GlueGen GL compile time parts. - Removed dead build-gluegen.xml - Adding com/jogamp/gluegen/runtime/opengl/* to jogl core - Moved gluegen gl part to jogl/classes