| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
initStream(URL) + initGL(GL)) .. IllegalStateException if wrong. Using internet streams of BigBuckBunny, if avail.
- Splitting the initialization in stream and GL allows using the stream information (eg: size, ..)
for setting the GLDrawable properties ..
- Make the impl. more bullet proof ..
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Android API 14
- Introduce states
- Customize / Access texture target,count,features.
- Expose TextureFrame.
- Use 'long' for all time values in msec.
- Mark information optional in API doc (fps, bps, ..)
|
| |
|
|
|
|
|
|
|
| |
through transparency flag from higher API
The above is necessary to reflect transparency in chosen Capabilities from a higher level API (native windowing)
in case the EGL impl. does not (buggy). This is currently true for Android.
|
|
|
|
|
|
|
|
| |
Android API 14 MediaPlayer impl of GLMediaPlayer.
Android API 14 MediaPlayer allows usage of OMX AL direct decode to texture via libstagefright (OMX AL usage included).
Status: Untested, not working - Need to fix native OMX IL (stream detect and split) and/or GStreamer implementation.
|
|
|
|
| |
instancing using sliced nio-buffer/primitive-array
|
| |
|
|
|
|
|
|
|
|
|
| |
Reusing the native EGLConfig handle of another EGLDisplay is invalid,
hence the EGLCapabilities cfg-handle value shall be 'refreshed'
using the immutable cfg-id and the new EGLDisplay.
Also fix EGLError value in createSurface() exception
and don't override EGLCapabilities transparency value for a given EGLConfig ID.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Threading*:
- add invoke(..) generalizing the Therading decision
GLCanvas:
- remove 'manual' Threading decision, simply call Threading.invoke(..)
- use anonymous Runnable instances
- remove drawable lock, drawable is volatile instead
GLJPanel:
- remove 'manual' Threading decision, simply call Threading.invoke(..)
- use anonymous Runnable instances
- DEBUG: Use getThreadName() prefix
GLContextImpl:
- Remove GLWorkerThread idle command on makeCurrent(),
no holding of context in worker thread while idle.
- DEBUG: Use getThreadName() prefix
X11GLXContext:
- DEBUG: Use getThreadName() prefix
TODO: Validate whether it's OK for GLCanvas and GLJPanel to set Threading.Mode.MT as the default mode!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Tolerate a buggy ARB createContext impl (always failing to create a context).
Now we only reset the GLContext state and
set the context/device availability flag if ARB create context actually was successful.
Otherwise the fallback 'old' context is being used w/o having it's context state cleared
and context/device availability is set later on.
This makes the general use of ARB_create_context more stable.
+++
Minor changes:
- Non compatibility fallback: Try forward context instead.
- Limit ARB context 'seeking' to >= OpenGL 2.0
|
|
|
|
| |
to add thread-name info; GLWorkerThread: Use ArrayList and generics.
|
|
|
|
| |
singlethreading if requested, fix doc: -Dopengl.1thread -> -Djogl.1thread
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
X11/Mesa 8.0.1 offers a GL 3.0 context w/o
having the GLX_ARB_create_context extension available
(even though the func-ptr glXCreateContextAttribsARB is not null).
We assumed that if no GLContext device availability is set,
it can be only GL 2.0 or ES1/ES2.
Fix: Relaxed these (false) constrains and map the created context
reflecting using it's actual attributes.
|
|
|
|
| |
or a stack trace may be helpful.
|
|
|
|
| |
f4ac27e177f6deb444280d3b375e7d343e38bd080 and eedb4b530fb83fc59a26962bcf7847a1404092a0
|
|
|
|
|
|
| |
and desktop (undefined).
*GLContext.setSwapIntervalImpl: Simple return success, set state in GLContext.
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
(javax.media.nativewindow.<impl> -> com.jogamp.nativewindow.<impl>) 2/3
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
- 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*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
|
|
|
|
|
|
|
|
|
|
| |
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).
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
(Gallium) as software rasterizer. Check for NULL and issue warnings (TRIAGE THIS).
|
|
|
|
|
|
| |
fixes recursion on fallback GraphicsConfigurationFactory
.. also validate the X11 GraphicsConfigurationFactory in X11GLXGraphicsConfigurationFactory and fail fast
|
|
|
|
|
|
|
|
|
|
|
| |
(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
|
|
|
|
| |
'nativewindow.debug.GraphicsConfiguration')
|
|
|
|
|
|
|
|
|
|
|
|
| |
; 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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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).
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
massive '!!!' occurence
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
| |
- 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)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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!
|
|
|
|
| |
ShaderState.attachShaderProgram(..)
|
|
|
|
|
|
| |
- Add multiple sources for create ShaderCode
- Add Shaderstate attachShaderProgram w/ enable flag
- Clarify doc
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(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
|
|
|
|
| |
- be verbose about features in DEBUG mode (RECT, NPOT, APPLE_float_pixels)
|
| |
|