aboutsummaryrefslogtreecommitdiffstats
path: root/make/config/jogl/gl-common.cfg
Commit message (Collapse)AuthorAgeFilesLines
* Bug 1233 - Add missing range- and pbo-bound checks on glTexture[Sub]Image[123]D*Sven Gothel2015-09-281-13/+52
| | | | | | | | | | | | | Adding missing range- and pbo-bound checks for: - glTextureImage1DEXT - glTextureImage2DEXT - glTextureImage3DEXT - glTextureSubImage1D - glTextureSubImage1DEXT - glTextureSubImage2D - glTextureSubImage2DEXT - glTextureSubImage3D - glTextureSubImage3DEXT
* Bug 1135: GLBufferObjectTracker for GL 4.5: Separate GL 4.5 DSA and ↵Sven Gothel2015-03-111-19/+8
| | | | | | | | | GL_EXT_direct_state_access We cannot subsume/rename even parts of GL_EXT_direct_state_access, since it is explcit stated in the spec that no assumption shall be made in regards compatibility and interaction. Hence we add both, GL 4.5 DSA and GL_EXT_direct_state_access.
* Bug 1135: Complete GLBufferObjectTracker for GL 4.5 using GlueGen's ↵Sven Gothel2015-03-111-29/+37
| | | | | | | | | | | | DelegateImplementation/ReturnsOpaque (Bug 1144) Using GlueGen's new DelegateImplementation/ReturnsOpaque feature (Bug 1144) allows us to drop manually C implementation stubs, while simply delegating into the renamed private generated variant using the manual stub. Completed glBufferStorage and glNamedBufferStorage for GL 4.4 while subsuming DSA's of GL 4.5 and GL_EXT_direct_state_access (only the single functions, otherwise extension is not compatible).
* Bug 1135: Bump [html] doc to include GL 4.5, ES 3.1 and EGL [ 1.0 .. 1.5 ]Sven Gothel2015-03-111-8/+8
|
* Bug 1135 - (Re-)Include GL header for in generated native code, allowing ↵Sven Gothel2015-03-091-3/+3
| | | | | | | | | | | | | | | | | | | | | 'ProcAddrTypedef' validation Include GL header for in generated native code, since we need the public 'ProcAddrTypedef' to be validated against the GlueGen generated variant by the c-compiler. The 'ProcAddrTypedef' validation semantic has been introduced in GlueGen w/ commit 10060b091b76bee35246c5165d49ab546ebc4e37. Originally the GL header were always included, however, JOGL commit 0d59bd4c655ef9a27f127000848aae7f07f240ae removed the inclusion to simplify handling GL extension collisions mitigated via gl*-supplement.h. The latter produces 'redefine' errors via c-compiler. The 'redefine' issue above is resolved by conditional code (#ifdef __GLUEGEN__ ..) in glext-supplement.h.
* Bug 1135 - Change all GlueGen config files, supporting EGL 1.5 , ES 3.1 and ↵Sven Gothel2015-03-061-47/+135
| | | | GL 4.5
* Bug 682 - Relocating javax.media.opengl.* -> com.jogamp.opengl.* (Part 1)Sven Gothel2015-02-021-2/+2
| | | | | | | | | sed -i 's/javax\.media\.opengl/com\.jogamp\.opengl/g' `grep -Rl "javax\.media\.opengl" src` sed -i 's/javax\.media\.nativewindow/com\.jogamp\.nativewindow/g' `grep -Rl "javax\.media\.nativewindow" src` sed -i 's/javax\/media\//com\/jogamp\//g' `grep -Rl "javax/media/" src` sed -i 's/javax\/media\//com\/jogamp\//g' `grep -Rl "javax/media/" doc` Manually edited all occurences within make/**
* Bug 974 - Add missing [GL4] glMultiDrawArraysIndirect(int mode, int type, ↵Sven Gothel2014-02-131-0/+1
| | | | long indirect_offset, int drawcount, int stride)
* Bug 942: GLBufferObjectTracker: Tracking GLBufferStorage accurately, ↵Sven Gothel2014-01-211-11/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | synchronized and secure [1/2] GLBufferSizeTracker becomes GLBufferObjectTracker and tracks the buffer's data store, GLBufferStorage, accurately, synchronized and secure. Synchronization is required, since the GLBufferStorage can be shared across many GLContext on multiple threads. This requires all GLBufferStorage lifecycle affecting GL functions to utilize synchronized GLBufferObjectTracker methods while passing a native GL-func callback. These GL functions are: - glBufferData, glBufferStorage (GL 4.4), glNamedBufferDataEXT Creating the GLBufferStorage object - glMapBuffer, glMapBufferRange, and their *Named*EXT variants - glUnmapBuffer, glUnmapNamedBufferEXT 'glDeleteBuffers' can simply notify the GLBufferObjectTracker No more HashMap is required to associate the mapped buffer address to the mapped ByteBuffer. GLBufferObjectTracker simply utilizes a buffer-name (int) -> GLBufferStorage map. +++ The security aspect shall be implemented by validating all arguments whether they match the required GL constraints, as well as validating tracked states like 'size'. The following functions will throw an GLException accordingly: - glBufferData, glNamedBufferDataEXT * @throws GLException if size is less-than zero * @throws GLException if a native GL-Error occurs - glBufferStorage (GL 4.4) * @throws GLException if size is less-or-eqaul zero * @throws GLException if a native GL-Error occurs - glMapBuffer, and it's *Named*EXT variant * @throws GLException if buffer is not bound to target * @throws GLException if buffer is not tracked * @throws GLException if buffer is already mapped * @throws GLException if buffer has invalid store size, i.e. less-than zero - glMapBufferRange, and it's *Named*EXT variant * @throws GLException if buffer is not bound to target * @throws GLException if buffer is not tracked * @throws GLException if buffer is already mapped * @throws GLException if buffer has invalid store size, i.e. less-than zero * @throws GLException if buffer mapping range does not fit, incl. offset - glMapBufferRange, and it's *Named*EXT variant Only clear mapped buffer reference of GLBufferStorage if native unmap was successful. Further more special error handling shall be applied to: - glMapBuffer, and it's *Named*EXT variant, glMapBuffer, and it's *Named*EXT variant - A zero GLBufferStorage size will avoid a native call and returns null - A null native mapping result indicating an error will not cause a GLException but returns null This allows the user to handle this case.
* Bug 942 - Review GLBuffer[State|Size]Tracker: Add synchronized access to ↵Sven Gothel2014-01-151-1/+2
| | | | shared bufferSizeTracker
* Revert "Bug 942 - Share GLBufferStateTracker ; Unify GLBufferStateTracker ↵Sven Gothel2014-01-141-1/+1
| | | | | | and GLBufferSizeTracker (simplification)" This reverts commit 7c5483d5b20aed9c87c5ce3f6bc840b6546edcd1.
* Bug 942 - Share GLBufferStateTracker ; Unify GLBufferStateTracker and ↵Sven Gothel2014-01-141-1/+1
| | | | | | | | | | | | | | | | | GLBufferSizeTracker (simplification) Due to future mapped buffer tracking, the GLBufferStateTracker instance shall be shared across shared GLContextImpl instances similar to GLSizeStateTracker! This allows us to merge GLSizeStateTracker code into GLBufferStateTracker to simplify the implementation. +++ Clear the GLBufferStateTracker (@destruction) only if no more created shares are left! +++
* Bug 789: glDrawArraysIndirect and glDrawElementsIndirect are using ↵Sven Gothel2013-10-061-0/+6
| | | | GL_DRAW_INDIRECT_BUFFER, add VBO variant and range-check
* API doc: Add old glext-20130207.h header for complete extension association. ↵Sven Gothel2013-07-171-42/+28
| | | | Fix GL* API doc header, align w/ spec-overview.
* Add Support for GL 4.3 (Bug 716) and ES 3.0 (Bug 717)Sven Gothel2013-07-151-54/+119
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ES3 / GL4.3: - Update all EGL, GLX, WGL and GL (desktop and mobile) khronos headers to latest version. - GL3/gl3* -> GL/glcorearb* - Explicitly preserve ES2_compatibility and ES3_compatibility in header, most extension grouping was removed in new headers. - Always load all GLHeader to ensure proper extension association across all profiles. - Unified method signatures - Added GL_EXT_map_buffer_range to core - Using common 'glMapBufferImpl(..)' for all glMapBuffer(..) and glMapBufferRange(..) impl. - Init necessary fields of GL instances via 'finalizeInit()' called by reflection, if exist. This allows removing initialization checks, i.e. for all buffer validations. - BuildStaticGLInfo: Can handle new GL header structure, i.e. one CPP extenstion block incl. define + funcs. - GLJavaMethodBindingEmitter: Simply print the - No GL duplication due to new intermediate interfaces, see below - OO lineare inheritance (Added GL2ES3, GL3ES3 and GL4ES3 intemediates): GLBase - GL - GL2ES2 - GLES2 GLBase - GL - GL2ES2 - GL2GL3 - [ GL2, GL3 ] GLBase - GL - GL2ES2 - GL2ES3 - GL3ES3 - [ GL3 ] GLBase - GL - GL2ES2 - GL2ES3 - GL3ES3 - GL4ES3 - [ GLES3, GL4, .. ] - Expose 'usable' intermediate interfaces GL3ES3 and GL4ES3 in GLBase/GLProfile/GLContext via is*() and get*(). - GLContext*: - isGL3core() is true if [ GL4, GL3, GLES3 ] (added GLES3) - Added ctxProfile argument to allow handling ES versions: - getMaxMajor(..), getMaxMinor(..), isValidGLVersion(..) and decrementGLVersion(..) - mapGLVersions(..) prepared for ES ARB/KHR validation - EGLContext checks ES3 (via old ctx's GL_VERSION) - ExtensionAvailabilityCache adds GL_ES_Version_X_Y for ES. - Prelim tests w/ Mesa 9.1.3 GL Version 3.0 (ES profile, ES2 compat, ES3 compat, FBO, hardware) - OpenGL ES 3.0 Mesa 9.1.3 [GL 3.0.0, vendor 9.1.3 (Mesa 9.1.3)] - TODO: - Use KHR_create_context in EGLContext.createContextARBImpl(..) - More tests (Mobile, ..) +++ Misc: - GLContext*: - Complete glAllocateMemoryNV w/ glFreeMemoryNV.
* Fix Bug 765: Add glMultiDrawElementsBaseVertex ; Restrict PointerBuffer ↵Sven Gothel2013-07-051-1/+7
| | | | | | | | | | | | | | | | | usage to NIO only. Code snippet for PointerBuffer usage: Code snippet .. how to use PointerBuffer in this case: IntBuffer indices = Buffers.newDirectIntBuffer(count); indices.put(...); ... indices.rewind(); final PointerBuffer indicesP = PointerBuffer.allocateDirect(1); indicesP.referenceBuffer(indices); -> glMultiDrawElementsBaseVertex(int mode, IntBuffer count, int type, PointerBuffer indices, int primcount, IntBuffer basevertex)
* Fix Bug 763 and Bug 764: Proper GL gluegen for glCreateShaderProgramv and ↵Sven Gothel2013-07-051-4/+18
| | | | | | | | | | | | | | | | GL3's glDraw*Elements*. glCreateShaderProgramv: Param idx 2 should be String[] All following draw commands are buffer object types, i.e. shall accept memory buffer reference (VBO/VAO/..): +BufferObjectKind Element glDrawElementsBaseVertex +BufferObjectKind Element glDrawElementsInstanced +BufferObjectKind Element glDrawElementsInstancedBaseInstance +BufferObjectKind Element glDrawElementsInstancedBaseVertex +BufferObjectKind Element glDrawElementsInstancedBaseVertexBaseInstance BufferObjectKind Element glDrawRangeElements +BufferObjectKind Element glDrawRangeElementsBaseVertex
* Fix Bug 692: Add tracking of VERTEX_ARRAY_BINDING, and enable allowing a ↵Sven Gothel2013-04-141-0/+1
| | | | | | | | | | | bound non default VAO to pass VBO enabled test, even if VBO is disabled. VAO is available if: GL >= 3.0 or is having GL_ARB_vertex_array_object extension. checkBufferObject(..) checks whether VERTEX_ARRAY_BINDING has a non default VAO bound in case no VBO is being bound and VAO is allowed. glBindVertexArray(int) is being tracked, i.e. on state VERTEX_ARRAY_BINDING
* Fix Bug 612: glVertexAttribIPointer/glVertexAttribLPointer are ↵Sven Gothel2012-09-201-0/+4
| | | | | | | | | | BufferObjectKind (VBO) and needs a RangeCheck as well Fix glVertexAttribIPointer/glVertexAttribLPointer (Bug 612) Similar to glVertexAttribPointer: - Mark both BufferObjectKind - Add RangeCheck to both
* Fix non NIO direct GL semantics: Restrict certain GL function to ↵Sven Gothel2012-09-201-29/+36
| | | | | | | | | | | | | | | | | | | | | NIODirectOnly (again) Partially reverting commits 375ab2da54ded1f3b3d90dc21b91fc6b87c64285 45a42f7c7f7fce4e6c7eb495591c438bdf0170a2 Both commits had flaws regarding: - GL spec: Pointer functions required passed memory pointers to persist - JNI: Primitive arrays may change their native memory location (swap), even if they were not GC'ed. Xerxes Ranby and I discussed whether we are able to track the primitive non direct NIO backed arrays and pinpoint them. JNI's Get*ArrayElements may be able to pinpoint, however it could result in a copy of the data, which would render this feature non performant. The tracking itself may be another no-go, since it would add up complexity and failing to free resources would be another negative sideeffect.
* Bug 599 - FBObject / Offscreen Support - Part 1Sven Gothel2012-07-191-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - New FBObject implementation handling FBO and it's attachments *** API CHANGE: Util -> Core *** while it's size and sample-count can be reconfigured on the fly. - com.jogamp.opengl.util.FBObject -> com.jogamp.opengl.FBObject - agnostic to texture unit - separate attachments using OO hierarchy reflecting FBO - handling MSAA and blitting - no FBO destruction for reconfig (attach/detach) - New GLFBODrawableImpl impl. an FBObject based GLDrawable - Instantiated by a dummy native surface (onscreen and invisible) hooked up to a dummy GLDrawable, which is the delegation for context creation. - Utilizies ProxySurface.UpstreamSurfaceHook for dummy surface avoiding specialization for native platforms. - TODO: Allow to utilize common surface interface as a dummy-surface to supporting API seperation of windowing/GL. The latter allows impl. of createGLDrawable(NativeSurface) with FBO. - New OffscreenAutoDrawable (extends GLAutoDrawableDelegate) for all offscreen drawables. Shall replace GLPbuffer. - New GLCapabilities*.isFBO() / setFBO(boolean) to request FBO offscreen, similar to isPBuffer(). Rule: if both are requested, FBO shall be favored. - GLContext adds raw FBO availability query (min. FBO avail), FBObject contains fine grained queries (TODO: Move parts to GLContext for efficiency). - Add framebuffer tracking, allowing fast querying: - GLBase/GLContext: public int getBoundFramebuffer(int target); public int getDefaultDrawFramebuffer(); public int getDefaultReadFramebuffer(); - GLContextImpl public final void setBoundFramebuffer(int target, int framebufferName) .. called by GL impl bind framebuffer - GL: getDefaultDrawFramebuffer(), getDefaultReadFramebuffer() Adding default framebuffer queries being issued by GL.glBindFramebuffer(target, 0) w/ a default framebuffer, o.e. zero. This allows a transparent use of a custom FBO even in case the applications attempts to reset FBO to zero. Value flow: GL <- GLContext <- GLDrawable, - GLCapabilities handle fbo/pbuffer seperate, don't disable the other - GLContext/GL track read/write framebuffer to be queried by FBObject to determine whether to bind/unbind a framebuffer - Test cases for multiple FBO w/ and w/o MSAA Other Features: - New interface ProxySurface.UpstreamSurfaceHook, allowing to hook an upstream surface of unknown type providing lifecycle and information (size, ..) callbacks. Used for all new dummy NativeSurface impl and SWT GLCanvas. - GLContext -> GLDrawable propagation context/drawable lifecycle via ProxySurface.UpstreamSurfaceHook allowing dynamic resources to react (create, init, ..) - contextRealized() - contextMadeCurrent() - SurfaceChangeable -> MutableSurface currently only contains setting the surface handle. TODO: May need to move ProxySurface.UpstreamSurfaceHook -> MutableSurface.UpstreamSurfaceHook, allowing other impl. classes (NEWT OffscreenWindow) to utilize the new upstream hookup mechanism - will allow FBO/Dummy window to work. - SWT GLCanvas using ProxySurface.UpstreamSurfaceHook for proper size propagation. - New GLAutoDrawable::getUpstreamWidget(), allowing GLEventListener to fetch the owning Java side UI element (NEWT, SWT, AWT, ..). - GLDrawableFactory: Removed createOffscreenSurface() - unused and not GL related - EGLDrawableFactory handles device/profile avail. mapping while actually creating context/drawable. This allows us to learn whether the ES context is software/hardware as well as FBO avail. - EGLDrawable: Removed secret buckets of EGL configs :) Employ native surface (X11, WGL, ..) to EGL 'mapping' in EGLDrawableFactory utilizing new EGLUpstreamSurfaceHook (implements ProxySurface.UpstreamSurfaceHook). Other Bugs: - Add CTX_OPTION_DEBUG to ctx/extension cache key since only a debug ctx may expose the ARB debug capability. This bug caused lack of ARB/AMD debug functionality. - Fix GLProfile deadlock (debug mode, w/ EGL/ES, no X11), dump availability information _after_ lock. - ImmModeSink draw(): Use GL's glDrawElements(..), don't cast for GL2ES1. Fixes use for GL2ES2. - Fix KeyEvent.getKeyChar() comment (-> only stable for keyTyped(..)) Misc: - Refined alot of API doc - New GLExtensions holds commonly used GL extension strings, allows better referencing and usage lookup. - Move GL (interface) decl. to GLBase - GLBuffers: Cleanup API doc (format, types) - TextureIO: Add PAM and PPM static suffix identifier - GLCapabilities getNumSamples() returns 0 if sampleBuffers is disabled, this seems to be more natural. - finalized a lot
* Fix EGL/ES types GLeglImageOES, EGLImageKHR & EGLClientBuffer - and ↵Sven Gothel2012-04-091-0/+1
| | | | | | | | | | functions: eglCreateImageKHR, eglCreatePbufferFromClientBuffer Unique typedef for: EGLConfig, EGLContext, EGLDisplay, EGLSurface, EGLNativeDisplayType, EGLNativeWindowType, EGLNativePixmapType, EGLImageKHR, GLeglImageOES and EGLSyncKHR allowing to render them individually opaque (long) and keep EGLClientBuffer as NIO buffer.
* NIODirectOnly: Remove invalid comment 'where a Buffer argument shall hold ↵Sven Gothel2012-03-261-8/+8
| | | | | | | return values', glGetPointerv, .. The PrimitiveArrayCritical JNI code takes care of copy back the primitive array data if pinpoint is not available.
* Reviewed JOGL GlueGen Tags: NIODirectOnly - Removed where not technically ↵Sven Gothel2012-03-221-31/+28
| | | | | | | required. Added comment reasoning NIODirectOnly. Impacts code generation for the relaxed methods where NIODirectOnly tag is removed, i.e. it allows an array-backed Buffer object to be passed.
* OpenGL EGL, ES1 and ES2 Header Sync incl. subsuming common extensions.Sven Gothel2012-02-151-1/+3
| | | | | | | | | | | | | | | | | | | | | - New EGL/ES headers from 2012-01-xx - Subsuming ES extensions to core, allowing aliasing of more enums/funcs to GL or GL2ES1/GL2ES2: GL_EXT_color_buffer_half_float GL_EXT_occlusion_query_boolean GL_EXT_robustness GL_ARB_robustness GL_EXT_separate_shader_objects GL_EXT_shadow_samplers GL_EXT_sRGB GL_EXT_texture_array GL_EXT_texture_rg GL_EXT_texture_type_2_10_10_10_REV GL_NV_draw_buffers GL_NV_fbo_color_attachments GL_EXT_packed_float GL_EXT_texture_storage
* OpenGL 4.2 functional support (GL header sync)Sven Gothel2012-02-141-1/+5
| | | | | | | | | Note: EXT_shader_image_load_store is dropped to favor ARB_shader_image_load_store Since no new (4.2) extension still does not require >= 3.1 all extensions are visible within the common profile GL2GL3. Please review!
* GetDebugMessageLogARB/AMD 'messagelog' param is return value, hence can't be ↵Sven Gothel2011-04-281-2/+2
| | | | of type String
* Fixed a few GL method's String parameter (explicit gluegen String declaration)Sven Gothel2011-04-241-1/+22
|
* Move implementation private files from com.jogamp.<module>.impl. to ↵Sven Gothel2011-02-091-1/+1
| | | | | | | | | | | | | | | jogamp.<module> (2/2) - edit files - com.jogamp.opengl.impl -> jogamp.opengl - com.jogamp.opengl.util.glsl.fixedfunc.impl -> jogamp.opengl.util.glsl.fixedfunc - com.jogamp.nativewindow.impl -> jogamp.nativewindow - com.jogamp.newt.impl -> jogamp.newt This sorts implementation details from the top level, ie skipping the public 'com', allowing a better seperation of public classes and implementation details and also reduces strings. This approach of public/private seperation is also used in the OpenJDK.
* JOGL: Proper handling of Read Drawable Support (if not supported), add query.Sven Gothel2010-11-281-1/+1
| | | | | | | | | | | | | | | | | | | Read Drawable feature reflects the make context current API having a seperate read drawable next to the write drawable (default). glXMakeContextCurrent(write, read, ..) On X11 a ready drawable is only supported for GLX >= 1.3, on Windows only if extension WGL_ARB_make_current_read is available, on EGL it's always supported, on OSX not at all. API cleanup GLContext: changes: setGLDrawableRead(GLDrawable) -> setGLReadDrawable(GLDrawable) new: isGLReadDrawableAvailable() new: getGLExtensionsString(); Access qualifier cleanup. GLContextImpl: GLVersionNumber moved out.
* Fix GL profile sets for gluegen code generation according to the updated ↵Sven Gothel2010-11-061-0/+2
| | | | | | | | headers. Needs GlueGen 6b6b9b3b81cdc85b7260664ebec547756a6be5d7, branch sgothel_wip_fixes01. I have manually veryfied all changes of the generated GL header - OK!
* Add OpenGL 3.3, 4.0 and 4.1 language mapping.Sven Gothel2010-08-241-9/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Update header: - GL/glext.h to khronos 2010-08-03 - GL3/gl3.h to khronos 2010-08-03 - Move platform code to GL/glplatform.h GL3/glplatform.h - Unify 64bit typedefs: gl-64bit-types.h - Move GL 3.[123] and 4.[01] complete subsumed extension enums and functions into their extension spec and just reference them. This ensures proper extension availability via lower OpenGL profiles, hence a proper GL2GL3 interface. - GL3/GL4 cleanup: - make-glextension-depignore.sh: determine required GL version for extensions for proper positioning, ie GL2GL3 or GL3 or GL4 via gluegen IgnoreExtension commands. - use ARB_ES2_compatibility for common GL2ES2 methods, if available - consolidated gl2-gl4 subsumed extension to gl-common.cfg - Missing GL3/GL4 Functions: glMultiDrawElementsBaseVertex glDebugMessageCallbackARB glDebugMessageCallbackAMD - TODO (new feature integration): - ARB_ES2_compatibility / ARB_get_program_binary for com/jogamp/opengl/util/glsl, ie - store binaries com/jogamp/opengl/util/glsl/sdk/CompileShader* - query supported binary formats (enums ?) - optional prio binaries - ARB_ES2_compatibility, if available GLES2/GL2ES12 would be available - ARB_separate_shader_objects for com/jogamp/opengl/util/glsl, ie - swizzle vertex/fragment shader in programs - ..
* Fix: Locking/Threading; Common IntIntHashMap and Buffers; Fix: ↵Sven Gothel2010-06-101-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | glMap*Buffer*; GLX/WGL/CgGL: All runtime dynamic; Misc .. TODO: Compile and test on MacOSX .. Fix: ===== Multithreading/Locking: See jogl/doc/Implementation/MultiThreading.txt - Locking layer is not platform agnostic, ie GLContextImpl, GLDrawableImpl, .. and NEWT: Window/Display - No more use of JAWT global lock necessary, removed. - No need for X11 Display lock, on the contrary, this made the NV driver hang. - Use common window/surface lock - All NativeWindow surfaceLock's are recursive now glMapBuffer: If size is 0, don't do cont with the native call. glMapBufferRange: Fix capacity. glNamedBufferDataEXT: Track the size. glMapNamedBufferEXT: Manual impl. - use the tracked size glXGetVisualFromFBConfig, glXChooseFBConfig, glXChooseVisual: Instead of ignoring and implement a renamed version (*Copied), we just use ManualImplementation for the proper copy-result code. DesktopGLDynamicLookupHelper: Initialize _hasGLBinding* attributes in the determing loadGLJNILibrary() method, which is called by super(). Otherwise static init will overwrite them after the super() call. X11GLXDrawableFactory: Don't release anything at shutdown (removed sharedContext.destroy()), since this caused a freeze/SEGV sometimes. Fixed NEWT's reparentWindow() functionality incl NewtCanvasAWT usage. - Native: if not visible, don't focus, etc - NewtCanvasAWT: Use the container size to start with - Run the command on the EDT Using GlueGen's new DynamicLibraryBundle utility: - X11, Windows and MacOSX OpenGL adapted to DynamicLibraryBundleInfo. - X11GLXDynamicLookupHelper -> X11GLXDynamicLibraryBundleInfo - Remove all path from lib names. - GL order: libGL.so.1, libGL.so, GL - shallLinkGlobal: true -> to server some 'old' DRI systems -> http://dri.sourceforge.net/doc/DRIuserguide.html - shallLookupGlobal: false - Try both : glXGetProcAddressARB and glXGetProcAddress - Using bootstrap: GLX.glXGetProcAddress(long glxGetProcAddressHandle, String glFuncName) Found the issue with LIBGL_DRIVERS_PATH, ie if not set no valid GL instance can be found (ie ATI fglrx/DRI). This may happen if using a differen user than the desktop user for whom the env var is set within some /etc/X11/Xsession.d/ script. Enhancements: ============= GLBufferSizeTracker: Use IntIntHashMap and add DirectState size tracking. GLBufferStateTracker: Use IntIntHashMap. GLStateTracker: Use IntIntHashMap. GLDynamicLookupHelper: More generic (global loading/lookup and GetProcAddress function name list), remove redundant code. FIXME: MacOSXCGLDynamicLookupHelper: - Not tested - Not using NSImage lookup anymore as recommended by OSX API Doc, so dlsym is used always (to be tested) WindowsWGLDynamicLookupHelper: - Not tested GLX/WGL/CgGL is all runtime-dynamic as now, ie loaded and looked-up at runtime, no compile time dependencies to GL anymore, nor a need to specify CgGL. Split up WGL in GDI and WGL, to allow proper dynamic runtime linkage of OpenGL32 while using static binding to GDI32 NEWT events generated by native code are enqueued and not send directly. This should ease locking mechanisms .. if any are necessary. NEWT: More platform specific code moved to *Impl method, simplifying the generic code of the superclass and impl protocol. Cleanup: ========= Replace all InternalBufferUtil's with com.jogamp.common.nio.Buffers Removed all InternalBufferUtil's from repository Removed GLContextImpl notion of 'optimized' surface locking, where the surface gets unlocked during makeCurrent/release. This just makes no sense and would impact multithreading in a horrible way.
* JOGL GL4 preperation:Sven Gothel2010-04-161-2/+6
| | | | | | | | | | | | | | - Re-Enable GL3bc native library build, works .. - Adding all the is/get GL4/GL4bc stubs .. - Adding dummy interface GL4 and GL4bc, will be removed when done - Context creation refactoring: - Move Version information to GLContext - Determine version by creation if possible (ARB_create_context), only use the unreliable GL_VERSION string if necessary. - Offering an almost platform independent ARB_create_context path: - createContextARBImpl - platform dependent GLX calls - createContextARB - platform independent setup and version loop
* removed duplicated imports in config files due to changes in gluegen.Michael Bien2010-04-081-1/+0
|
* refactoring: renamed com.sun.opengl -> com.jogamp.opengl.Michael Bien2010-03-271-6/+1
|
* refactoring due to gluegen changes.Michael Bien2010-03-271-0/+5
| | | | - renamed com.sun.gluegen.runtime -> com.jogamp.gluegen.runtime.
* Fix JavaDoc for GL3bcSven Gothel2009-10-181-3/+10
|
* New iteration of check 'imageSizeInBytes':Sven Gothel2009-10-181-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Premises: See http://www.glprogramming.com/red/chapter08.html "If the rectangle in memory is larger than the subrectangle that's being drawn or read, you need to specify the actual length (measured in pixels) of the larger rectangle with *ROW_LENGTH. " This equals ROW_LENGTH == SubPicture-Width + 'Dirt', ie the offset to go from one line to the next. "You also need to specify the number of rows and pixels to skip before starting to copy the data for the subrectangle. These numbers are set using the parameters *SKIP_ROWS and *SKIP_PIXELS, as shown in Figure 8-9. By default, both parameters are 0, so you start at the lower-left corner." This equals to a one time offset _before_ you start copy the data, ie with your DMA engine, using ROW_LENGTH and HEIGHT only. Compared to Mesa3D's implementation (proof): http://cgit.freedesktop.org/mesa/mesa/tree/src/glx/x11/pixelstore.c Line 78 - 200 PixelStore State Tracker: Store the values in the PixelStore structure. http://cgit.freedesktop.org/mesa/mesa/tree/src/glx/x11/pixel.c Line 82 - 155 Line 210: Start position is set one time using SKIP_* values the same way we do. Line 228: Jump to the first pixel in the newxt row, just using ROW_LENGTH Line 230: Jump to the first pixel in the next 'image' just using imageSize, rowsPerImage = IMAGE_HEIGHT>0?IMAGE_HEIGHT:height; groupsPerRow = ROW_LENGTH>0?ROW_LENGTH:width; groupSize = elementSize * components; rowSize = groupsPerRow * groupSize; imageSize = rowSize * rowsPerImage; changes: Removed redundand 'dimension' parameted, which is derived from depth and height, 1D == depth:1 height:1 2D == depth:1 height>1 nD == depth>1 height>1 Safe fail depth to >= 1 Safe fail height to >= 1D Take either the ROW_LENGTH / IMAGE_HEIGHT PixelStore value if > 0, or the given width / height.
* All tracker are aggregated in the GLContext nowSven Gothel2009-10-171-0/+2
| | | | | | | | | | | | | | | and used within the GL*Impl. New GLStateTracker: - Tracking client/server states - Currently supports PixelStorei - Prologued in glPixelStorei and glGetIntegerv, the latter will return the tracked state if available and not call the GL method. Impacts performance and ES1 compatibility (supports ALIGNMENT). Fixed 'imageSizeInBytes' calculation: - skipPixels and skipRows is a static one time offset
* Update GlueGen to 7dc9c5601d5689dcbc003ca51cfe826942ea3e6b (latest)Sven Gothel2009-08-051-49/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | - 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.
* Doc: OpenGL 3.1 .. 3.2 profile clarificationSven Gothel2009-08-031-3/+2
|
* GL: sync glext.hSven Gothel2009-08-021-4/+3
| | | | | | | | | | | | - add GL_NV_present_video - add GL_NV_conditional_render - add GL_EXT_transform_feedback - add GL_EXT_direct_state_access GL3: - GLAPIENTRY -> APIENTRY (as in the orig headers) - Add GL_ARB_geometry_shader4 to gl3ext.h
* Fix doc bug @arg -> @paramSven Gothel2009-08-021-1/+1
|
* Update documentation (OpenGL 3.0, 3.1 specifics); Fix ↵Sven Gothel2009-08-021-3/+10
| | | | ExtensionAvailabilityCache: Add Version 2.1 in case of GL2/OpenGL 3.0
* Update OpenGL GL2 profile subsumed/promoted extensions. Base is 3.0, ignore ↵Sven Gothel2009-08-021-2/+61
| | | | the colission-free subsumed extensions.
* GL3 Related:Sven Gothel2009-08-011-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - Fix glGetStringi's return type to String - Fix ExtensionAvailabilityCache: GL3's glGetStringi for GL_EXTENSIONS Ensure to add GL_VERSION_2_0 in case version >= 3.0 Ensure to not exceed version 3.0 for non GL3.1 context. In case of GL 3.1, do not include GL_VERSIONS below 3.0, since this is a forward compatible context. - Add Prologue to glGetString, where the ExtensionCache is being used for GL_EXTENSIONS - if already initialized. This feature adds backward compatibility for GL3 context on GL_EXTENSION. +++ General: Add GLPipelineFactory, a convenient pipeline factory for Debug/Trace and custom ones .. Change 'void setGL(GL)' to 'GL setGL(GL)', and let it return the successful set GL, or null.
* Gluegen:Sven Gothel2009-07-311-8/+24
| | | | | | | | | | | | | | | | | | | | | | | | - Fix array element type name and const qualifier JOGL: - GL3: Set ArgumentIsString for GL3.1 methods - JAR file creation: Add 'filesonly' option - GLU: Static check of available impl., better fallback for GL2 without GLUgl2. - WGL: (Performance + Java2D/GL FBO works again) - Refactor WGL_ARB_pixel_format's HDC -> GLCapabilities: HDC2Caps - Revert change where we always create a dummy drawable/context for WGL selection (HDC2Caps). In case of no multisampling, use PFD2Caps only. - Update config using HDC2Caps (WGL_ARB_pixel_format) after context creation, if not done already -> updateCapabilitiesByWGL(). - profile.jogl: Add debug jars
* Fixed GL* documentation. Moved common GL functions to GLBase. Moved ↵sg2158892009-07-291-132/+72
| | | | glAllocateMemoryNV to GL2GL3 only. Add GL2GL3 interface. Fix some GL2 signatures. BroadcomEGL disable custom setSize().
* Copied JOGL_2_SANDBOX r1957 on to trunk; JOGL_2_SANDBOX branch is now closedKenneth Russel2009-06-151-0/+641
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@1959 232f8b59-042b-4e1e-8c03-345bb8c30851