summaryrefslogtreecommitdiffstats
path: root/src/jogl/classes
Commit message (Collapse)AuthorAgeFilesLines
* Stabilize open InputStream's / Closeable's: Decorate w/ try-finally and ↵Sven Gothel2012-03-101-30/+39
| | | | | | close within the latter See gluegen commit 24f8694a188b4a5255d4ac4f8b49982bd8ad3228
* GLContextImpl: Expose GL_RENDERER for impl. / EGLContext workaround Android ↵Sven Gothel2012-03-072-24/+47
| | | | | | | | | | 4.0.3, Pandaboard ES, PowerVR SGX 540 Bug GLContextImpl: Expose GL_RENDERER for impl. - This allows reusing the 'early' string. EGLContext workaround Android 4.0.3, Pandaboard ES, PowerVR SGX 540 Bug - On mentioned platform, the app crashes when eglSwapInterval() has been called.
* NativeWindow public* reorg 3/3 ; NativeVisualID -> VisualIDHolder incl. ↵Sven Gothel2012-03-068-132/+82
| | | | | | | | | | | | | | | | | | | | | | proper utilization. - VisualIDHolder: Update documentation (Exception case, etc) - NativeVisualID -> VisualIDHolder (public) - incl. generic Comparator - better doc and enum values - VID_UNDEFINED == 0 - methods shall not throw exception, but return UNDEFINED - CapabilitiesImmutable extends VisualIDHolder - All Capabilties impl. - use VID_UNDEFINED for undef. value - use final private (immutable) fields - AbstractGraphicsConfiguration extends VisualIDHolder - X11 CreateDummyWindow takes (int) visualID
* NativeWindow public-spec to public-impl reorg ↵Sven Gothel2012-03-0623-62/+83
| | | | (javax.media.nativewindow.<impl> -> com.jogamp.nativewindow.<impl>) 2/3
* X11 Fix NativeVisualID regression (commit ↵Sven Gothel2012-03-053-34/+5
| | | | | | | | | | | | 90c46b1ef1f199ceb63e85c85e9ebeb919d49c4a) ; Using plain X11 Capabilities In case X11GLXGraphicsConfigurationFactory and hence X11GLCapabilities (glx) is not being used, the X11GraphicsConfigurationFactory used plain Capabilities object for the chosen caps. The latter is not derived from NativeVisualID. - Added X11Capabilities supporting NativeVisualID to fit our needs. - X11Capabilities.XVisualIDComparator uses NativeVisualID.NVIDType.X11_XVisualID - *Capabilities have better unique names in toString()
* Fix GLWindow/SWT-GLCanvas: set context synchronized ; Misc ChangesSven Gothel2012-03-052-2/+6
| | | | | | | | | | | | Fix GLWindow/SWT-GLCanvas: set context synchronized - GLWindow fix commit a0177c8a1048683e5d43f4712f8f9e37091d4e85. Removed explicit recursive surface lock requires recursive context locking, otherwise concurrent rendering fails. The implicit recursive surface lock within context makeCurrent() is applied after the context lock itself. Misc Changes - Fix TestPBufferDeadlockAWT, which was not using the unique profile string reference
* Complete LOCK_SURFACE_CHANGED ; Introduce NativeVisualID (Daisy chaining ↵Sven Gothel2012-03-0514-203/+369
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | *GraphicsConfiguration) ; ... NativeVisualID: New interface for Capabilities implementations, allowing retrieval of the native 'visual id'. Impl. by WGL, X11 and EGL. JAWTWindow.lockSurface() - Detect surfaceHandle change an return LOCK_SURFACE_CHANGED (see: LOCK_SURFACE_CHANGED) EGLDrawable: - Impl. updateHandle() (see: LOCK_SURFACE_CHANGED) - use NativeVisualID for EGLGraphicsConfiguration selection to respect a native 'visual id' EGLContext.createContextImpl: Use NIO for attributes EGLDisplayUtil: Enhance eglGetDisplay w/ DEBUG code and NativeSurface / EGL_DEFAULT_DISPLAY variation EGL, XGL, WGL GraphicsConfiguration: - Don't set ALPHA_SIZE and STENCIL_SIZE if not requested in attribute list for context creation. - toString() shows proper identification, eg.: egl, x11, win32 .. EGLGraphicsConfigurationFactory: Daisy chain GraphicsConfigurationFactory for native device type (currently only X11). This allows choosing the EGLGraphicsConfiguration and hence native visual id based on EGL when invoked via the factory model (generic). In case EGLGraphicsConfigurationFactory is not suitable or doesn't produce a native visual id, it falls back the the original one. X11AWTGraphicsConfigurationFactory and X11Window: Use generic NativeVisualID which allows EGLGraphicsConfiguration implicit. *GraphicsConfiguration's DEBUG flag is pushed up to DefaultGraphicsConfiguration LOCK_SURFACE_CHANGED: - commit 006e9fe402a0a47b45fd2c4af51296aef895e8b5 - commit a0177c8a1048683e5d43f4712f8f9e37091d4e85 Impact: - Fixes EGL/GLES (wrapper/native) usage on X11, proper Xvisual selection w/ EGL - Fixes EGL/GLES (wrapper/native) usage on Windows, ANGLE works w/ NEWT and forced ES2
* Fix GLArrayDataServer.destroy(GL): vboName was cleared by super class before ↵Sven Gothel2012-03-051-3/+6
| | | | deletion
* NEWT/GLWindow.display(): No explicit surface locking/unlocking for ↵Sven Gothel2012-03-043-7/+26
| | | | | | | | | | GLDrawableHelper.invokeGL(..) - it's done implicit at makeCurrent()/release() The explicit locking takes away the locking result, eg. SURFACE_CHANGED, which is required to update the delegated drawable handles (e.g.: EGL surface handle). With the followup fix of EGLDrawable.updateHandle()'s recreate EGL surface, an EGL 'wrapper' can work on Windows (eg. ANGLE).
* Software Rasterizer: Add 'Mesa X11' to GL_RENDERER list. EGLDrawable: Remove ↵Sven Gothel2012-02-292-9/+11
| | | | | | | | | getWidth()/getHeight() EGL surface queries. EGLDrawable: Remove getWidth()/getHeight() EGL surface queries. This code is not only redunant, since the surface dimension is known in the NativeWindow surface returned by GLDrawableImpl., but also causes an exception since the EGL surface might not be realized at the time it's dimension is being queried.
* GLContext.isCurrentContextHardwareRasterizer(): Recognize 'softpipe' ↵Sven Gothel2012-02-261-3/+18
| | | | (Gallium) as software rasterizer. Check for NULL and issue warnings (TRIAGE THIS).
* Include GraphicsConfigurationFactory in lifecycle (initSingleton/shutdown) - ↵Sven Gothel2012-02-251-1/+9
| | | | | | fixes recursion on fallback GraphicsConfigurationFactory .. also validate the X11 GraphicsConfigurationFactory in X11GLXGraphicsConfigurationFactory and fail fast
* X11: Fix unavailable GLX (Server): Use fallback GraphicsConfigurationFactory ↵Sven Gothel2012-02-253-18/+29
| | | | | | | | | | | (X11GLX -> X11) - GraphicsConfigurationFactory.registerFactory(..) returns previous mapped GraphicsConfigurationFactory. This allows daisy chaining of GraphicsConfigurationFactory, in case one is not suitable. - X11GLXGraphicsConfigurationFactory: - Store the previously mapped factory as fallback - choose*Impl(): If GLX is not available, use fallback
* Cleanup DEBUG flags of *GraphicsConfigurationFactory (Use the common ↵Sven Gothel2012-02-254-7/+0
| | | | 'nativewindow.debug.GraphicsConfiguration')
* X11/GLX: Query X Server whether GLX is available (X11/SharedResourceRunner) ↵Sven Gothel2012-02-255-26/+36
| | | | | | | | | | | | ; Minor cleanups. Before gathering GLX details and actually instantiate a X11/GLX shared resource, we shall query whether GLX is actually available. Since GLX availability is being queried on the server side, more changes are required for the X11GLX* impl, eg. not using X11GLXGraphicsConfigurationFactory and fall back to X11GraphicsConfigurationFactory.
* Fix commit 9e66972c193399d6dcdf9e6662f4335bdf15736aSven Gothel2012-02-251-1/+1
|
* Fix GLProfile/GLDrawableFactory bug: Recursion on default desktop device, ↵Sven Gothel2012-02-257-31/+71
| | | | | | | | | | | | | | since no profile was mapped. GLDrawableFactory*: - Initialize defaultDevice, even if impl. is not available (no GL libraries for impl.), hence - getDefaultDevice() always returns a valid device - getIsDeviceCompatible() only returns 'true' if device is supported _and_ drawable factory is functional GLProfile: - default-desktop-device becomes default-device even if the desktop-factory itself is not functional. This is due to the fact that the subsequent EGL-factory always handles desktop-devices (X11->EGL, GDI->EGL, etc).
* JoglVersion: Avoid NPE if no caps are available.Sven Gothel2012-02-251-3/+5
|
* Min. Graph Parameter type change: texSize/width/.. for multipass-renderer: ↵Sven Gothel2012-02-258-29/+43
| | | | | | | | | | int -> int[] "texWidth desired texture width for multipass-rendering. The actual used texture-width is written back when mp rendering is enabled, otherwise the store is untouched." This allows the 'backend' to correct the texSize, ie in regards to GL_MAX_TEXTURE_SIZE .. etc. Without this write-back, it would re-create the FBO for every frame.
* Add GLProfile.getGL2GL3() meta profile getter completing getGL2ES[12]()Sven Gothel2012-02-241-0/+32
|
* MemoryObject: Use proper generics styleSven Gothel2012-02-231-2/+2
|
* Enhance GLProfile's profile tests - compare the final String references, ↵Sven Gothel2012-02-231-19/+19
| | | | | | | | | instead of String comparison. GLProfile's 'profile' string reference is final and one of the static final GL* string references, with which it is compared. Hence only the references can be used here. Impact: Performance.
* Fix GLProfile.isGL2ES2(): "isGL2() || isGL3()" -> "isGL2GL3()"Sven Gothel2012-02-231-14/+14
| | | | .. was excluding: GL2GL3 common profile.
* EGL Display Lifecycle Robustness Patch (impl. workaround)Sven Gothel2012-02-224-7/+115
| | | | | | | | | | Added EGLDisplayUtil helper class managing the lifecycle of the EGL display handle recursively. This class is required, due to implementation bugs within EGL where EGL.eglTerminate(long) does not mark the resource for deletion when still in use, bug releases them immediatly. This fixes unit test com.jogamp.opengl.test.junit.jogl.acore.TestInitConcurrentNEWT on Linux ARM w/ Omap4 and Tegra2.
* Fix commit 33249b6eca519947b02f3bfbf05b73d73c936094Sven Gothel2012-02-221-4/+0
|
* DEBUG Output: More thread-names to drawable/context lifecycle; Remove ↵Sven Gothel2012-02-2222-108/+115
| | | | massive '!!!' occurence
* GraphicsConfigurationFactory: Add DEBUG dump @ chooserSven Gothel2012-02-221-0/+1
|
* ExtensionAvailabilityCache: Remove 'XXX_NV_vertex_array_range' hackSven Gothel2012-02-221-11/+1
|
* Fix VBORegion2PES2: Don't exceed MAQX_TEXTURE_SIZESven Gothel2012-02-221-0/+8
|
* TextureIO (TGA/NetPbm): Allow GL_BGR[A] and use GL_BGRA if available ; Fix ↵Sven Gothel2012-02-224-61/+76
| | | | | | | | | | | | | NetPbmTextureWriter ; Added unit tests - Allow GL_BGR[A] usage (TGA / NetPbm) - Use GL_BGRA if available (TGA), utilize GLContext.isTextureFormatBGRA8888Available() - Fix NetPbmTextureWriter - Maintain 'auto' magic mode for 'spi' role in TextureIO (was overwritten) - Use FileChannel for nio buffer streaming, instead of array copy
* Fix GLReadBufferUtil for ES platforms: RGB read format may not be supported. ↵Sven Gothel2012-02-221-13/+44
| | | | Use GL_IMPLEMENTATION_COLOR_READ_FORMAT/TYPE query
* FBObject: Meaningfull error message if TexImage2D fails.Sven Gothel2012-02-221-10/+17
|
* FontSet (graph): get*(..) throws IOException - Proper passing and handling ↵Sven Gothel2012-02-225-19/+26
| | | | of IOException
* EGLDrawable: use the original requested Capabilities, ignore previously ↵Sven Gothel2012-02-221-3/+2
| | | | | | | | | chosen ones (x11,win32,..) - they are not fit The previous chosen caps might come from GLX, WGL .. however, these caps doesn't reflect EGL's capabilities - they may reflect less features. This fixes missing MSAA on linux/armv7 w/ GLX enabled.
* Minor GL/GLContext additions / cleanups (GL_BGRA, isNPOTTextureAvailable())Sven Gothel2012-02-225-11/+22
| | | | | | | | - Subsume GL_EXT_texture_format_BGRA8888 -> GL, Added GLContext.isTextureFormatBGRA8888Available() - Movied generic isNPOTTextureAvailable() from GL -> GLContext, used by GL (desktop), added simplified impl. in GLES1/GLES2 (false/true)
* Remove unused class jogamp/opengl/gl2/UtilSven Gothel2012-02-221-244/+0
|
* API Change [GLProfile/GLContext]: Add notion of hardware acceleration in ↵Sven Gothel2012-02-206-112/+247
| | | | | | | | | | | | | | | | | | | | | | | | | | GLProfile.get<Profile>() methods. We need to distinguish between software and hardware accelerated OpenGL profiles to allow choosing the proper profiles [default, GL2ES1, GL2ES2, ..] on platforms where both, software and hardware implementations exist (GL, GLES2, ..). Where no preference is being requested, hardware acceleration is favored: GLProfile.getDefault() GLProfile.getGL2ES1() GLProfile.getGL2ES2() Some method signatures needed to change GLProfile: getMaxProgrammable(AbstractGraphicsDevice device) -> getMaxProgrammable(AbstractGraphicsDevice device, boolean favorHardwareRasterizer) GLProfile adds: isHardwareRasterizer() Determination whether a hardware acceleration is being used or not is extended in GLContextImpl by querying the current context's GL_RENDERER string. If the latter contains 'software' (case insensitive) it is not hardware accelerated. At least this works w/ newer Mesa3D impl, where GLX_SLOW_CONFIG is not set!
* Fix commit fb7165e690546359dee92dd60b04be69f141c87e; Clarify ↵Sven Gothel2012-02-204-35/+15
| | | | ShaderState.attachShaderProgram(..)
* Cleanup ShaderCode/Program/StateSven Gothel2012-02-194-34/+63
| | | | | | - Add multiple sources for create ShaderCode - Add Shaderstate attachShaderProgram w/ enable flag - Clarify doc
* GLGLuegen: Enhance debug/analysis code and API commentsSven Gothel2012-02-154-41/+94
| | | | | | | | | | | | | - Use Gluegen.debug() setting - BuildStaticGLInfo.getExtension(name) returns a set of all extension where name occurs - GLConfiguration.shouldIgnoreExtension() reflects all extensions, inclusive the renames one and gives a warning in case the symbol belongs to multiple extension - in debug mode! - API comment: List all extensions, incl. the one from the renames, this allows having a proper list to which extensions the define/function belongs to.
* Fix ExtensionAvailabilityCache ; Enhance caching.Sven Gothel2012-02-1412-123/+129
| | | | | | | | | | | | | | | | | | | ExtensionAvailabilityCache regression / enhancement: - Set context version (w/o string) before caching. This is required since we query the ctx version. Regression from 4011e70eed8c88aee0fcd051a50ab3f15bb94f68 - Remove GLContextImpl state. Only use the passed value at initialization. - Defined initialization, due to the 'new' cache/instantiation logic Remove redundant GLContext profile bits: - CTX_OPTION_ANY: implicit if !CTX_OPTION_FORWARD - CTX_IMPL_ACCEL_HARD: implicit if !CTX_IMPL_ACCEL_SOFT Cache key (ProcAddressTable, Extensions): - Mask out GLContext.CTX_OPTION_DEBUG | GLContext.CTX_IMPL_ES2_COMPAT, since they don't influence the cached values.
* Enhance ExtensionAvailabilityCache ; Expose extension count in GLContext ↵Sven Gothel2012-02-138-106/+150
| | | | | | | | | | | | | | (and clean up) - GLContext - Expose isFunctionAvailable(), isExtensionAvailable(), getPlatformExtensionCount(), getGLExtensionCount() - sort methods a bit ExtensionAvailabilityCache: - Favor StringBuilder instead of StringBuffer (faster) - Resuse set's - Hold dedicated counts of extensions, platform and GL
* MacOSXCGLDrawableFactory: Fix typo 'Applet' -> 'Apple' for APPLE_float_pixelsSven Gothel2012-02-132-8/+15
| | | | - be verbose about features in DEBUG mode (RECT, NPOT, APPLE_float_pixels)
* Java2D OGLPipeline: Disabled for Max OSXSven Gothel2012-02-131-2/+12
|
* Fix JOGL GLContextImpl ProcAddressTable and Extension CachingSven Gothel2012-02-136-39/+29
| | | | | | | | | Bug caused using wrong extension cache and probably the wrong procAddress table. - do not reuse local field value if not cached - issue resetState() after each createContextARBMapVersionsAvailable(..) query - remove cache entry for extension (copy/paste bug) - resetState() shall clean platform extProcAddressTable in specializations
* OpenGL ES/EGL OverhaulSven Gothel2012-02-1322-298/+585
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - GLProfile properly detects native EGL/ES1/ES2 on the 'desktop' device factory. This allows usage of Mesa's EGL/ES or Imageon's PVR emulation, etc. - GLProfile drops getDefaultDesktopDevice() and getDefaultEGLDevice() since both are aligned by getDefaultDevice(). - Fix GL_ARB_ES2_compatibility detection and utilize resulting isGLES2Compatible() where possible. This allows ES2 compatible desktop profiles to use core ES2 functionality (glShaderBinary() .. etc) even with a GL2ES2 desktop implementation. - EGLDrawable: If createSurface(..) fails (BAD_NATIVE_WINDOW) w/ surfaceHandle it uses windowHandle if available and differs. This allows the ANGLE impl. to work. - Properly order of EGL/ES library lookup: ES2: libGLESv2.so.2, libGLESv2.so, GLES20, GLESv2_CM EGL: libEGL.so.1, libEGL.so, EGL - *DynamicLookupHelper reference will be null if it's library is not complete (all tool libs, all glue libs and a ProcAddressFunc lookup function - if named). - Enhance GL version string (incl. ES2 compatible, hw/sw, ..) - GLBase: Fix docs and remove redundancies - Prepared (disabled) DesktopES2DynamicLibraryBundleInfo to be used for a real EGL/ES2 implementation within the desktop GL lib (AMD). Sadly it currenly crashed within eglGetDisplay(EGL_DEFAULT_DISPLAY), hence it's disabled.
* javac - setup encoding to UTF-8Sven Gothel2012-01-232-7/+7
|
* GLDynamicLibraryBundleInfo: Remove 'nativewindow_x11' preload lib ↵Sven Gothel2012-01-233-12/+0
| | | | (implicitly loaded by NativeWindowFactory)
* Minor edit: Suppress USE_WGLVersion_Of_5WGLGDIFuncSet message when default.Sven Gothel2012-01-231-1/+3
|
* Use glFlush() in favor of glFinish() for bug 548 and bug 533 fix - due to ↵Sven Gothel2012-01-231-4/+4
| | | | | | | | | | performance issues. Chris reported a better performance using glFlush() instead of glFinish() while maintaining stability in respect to the NV bug on OSX 10.6.8. Even though this is at release() where we would assume a passed GL sync point (swap buffers) the driver may involve a whole I/O roundtrip .. well.