| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
EGL and Desktop GLDrawableFactory
|
|
|
|
|
|
|
|
|
| |
(adding dummy methods)
Commits deff49c901915e007f43a1df1a0d217a786e9f06 and 6ab634654f58afcf4549fcd1a796a0f9fd13298c
changed/removed a few protected methods of public classes ..
Re-added dummy methods .. shall be removed for next 2.4.* version
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[GLX|WGL]_EXT_swap_control_tear extensions support
asynchronous buffer swaps, i.e. adaptive Vsync.
<https://www.opengl.org/wiki/SwapInterval_aka_vsync#Adaptive_Vsync>
<https://www.opengl.org/registry/specs/EXT/wgl_swap_control_tear.txt>
<https://www.opengl.org/registry/specs/EXT/glx_swap_control_tear.txt>
<http://keithp.com/blogs/async_flip/>
The extensions utilizes a negative interval value,
enabling late swaps to occur without synchronization to the video frame.
Hence '-1' has new semantics, previously it was the 'default value'
of 'untouched vsync interval'.
New default is:
- 0 for unrealized context
- 1 for realized context
+++
It requires [GLX|WGL]_EXT_swap_control,
hence we shall ensure to use use this extension
in the implementation of GLContext.setSwapInterval(..).
+++
Mesa3D seems to support GLX_SGI_swap_control only.
+++
Implemented on Windows and X11.
+++
On GNU/Linux using NVidia driver w/ my setup(*), sadly the query
GLX.glXQueryDrawable(displayHandle, drawable.getHandle(), GLX.GLX_LATE_SWAPS_TEAR_EXT, val);
always returns zero here, indicating async vsync is not supported.
(Queried the attribute for every frame in windowed or fullscreen mode)
Fullscreen
(*)
- Debian 8
- Kernel 3.16
- KDE/Kwin
- GL Version 4.5 (Core profile, arb, compat[ES2, ES3, ES31], FBO, hardware) - 4.5.0 NVIDIA 355.06 [GL 4.5.0, vendor 355.6.0 (NVIDIA 355.06)]
- GL_RENDERER GeForce GTX 660/PCIe/SSE2
- Samsung U28D590 (DFP-4): Internal DisplayPort
+++
|
|
|
|
|
|
|
|
| |
- Fix STATE_MASK_CREATENATIVE
- Simplify resetStateMask()
- Windows WindowDriver: Remove STATE_MASK_STICKY from supported states
- TestGearsNEWT: Use NEWTDemoListener
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
getSupportedReconfigMaskImpl()
- See getSupportedStateMask() for semantics
- getSupportedReconfigMaskImpl() result now used for isReconfigureMaskSupported()
- getSupportedReconfigMaskImpl() implementations:
- Full featured: X11, Windows and OSX
- X11: Use WindowManager Atoms for certain features (dynamic)
- Others: Use fixed features.
- TODO: Consider avoiding actions if not supported.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
test.
- ImageIOUtil -> ImageType + ImageType.Util
- ImageType.Util.getFileSuffix(..):
- Fix byte type conversion, i.e. 'b == (byte)0x89',
cast is required to avoid byte -> int conversion.
Note: signed byte -128 - +128
- Parse in O(1), i.e. lexicographical parsing
- FIXME: We seem to have at least three type collisions, validate!
- ImageType:
- Complete T_* w/ API doc -> FIXME/TODO missing type references!
- ImageType instancing via InputStream or manual type definition.
- TextureData
- Contains optional source ImageType
- TextureProvider:
- Deprecate newTextureData(..) variants other than InputStream
simplifying TextureIO.
- TextureProvider.SupportsImageTypes:
- Added interface, allowing mapping ImageType -> provider
- Tested standalone ImageType (TestImageTypeNEWT) and
via TextureIO (TestTextureIONEWT) utilizing list of all
test data (ImageTstFiles), i.e. PNG, JPG, TGA and DDS.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
WindowImpl
- remove updateMinMaxSize(..) - unused info
- fix appendStateToString: show all maximized state changes if reconfig
- add sizePosMaxInsetsChanged(..) and sendMouseEventRequestFocus(..)
accumulating multiple callbacks from impl.
- add: maximizedChanged(..) notification from native impl.
- refine manual maximized mode
used for OSX and Windows (single extent)
- reconfigMaximizedManual(..)
- resetMaximizedManual(..)
X11 WindowDriver:
- Update maximized at xreconfig, read from _NET_WM_STATE
- Use less Java callbacks from JNI
Windows WindowDriver:
- Use native maximized, if HORZ && VERT,
otherwise use manual maximized for single extent.
- Invisible of top-window -> MINIMIZED/ICONIFY
showing the app in task-bar.
|
|
|
|
|
|
|
|
|
| |
child windows
It has been experienced that UnmapNotify is not sent for child windows when using IconicState!
Hence the visible:=false event never reaches the Window, causing an error.
This patch only uses IconicState for top-level windows and if requested.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
alwaysOnBottom and sticky/all-desktop (Part 1)
Change also implements Bug 1186: 'NEWT Window: Use a Bitfield holding all state flags and expose it accordingly',
since it is essential for an efficient implementation.
Part 1:
- Bug 1186
- Using Bitfield, holding public (Window) and private state bits/mask
- Bug 1188
- Window adds:
- [is|set]AlwaysOnBottom(..),
- [is|set]Resizable(..),
- [is|set]Sticky(..),
- [is|set]Maximized(..),
- isChildWindow(),
- Full implementation for X11
- TODO: Implement for OSX and Windows
- Manual tests:
- TestGearsES2NEWT, TestGearsES2NEWTSimple and TestGearsES2NewtCanvasAWT
utilize new NewtDemoListener, which has a key-listener to perform
all [new] actions. See source code of NewtDemoListener.
|
| |
|
|
|
|
| |
classes)
|
|
|
|
| |
assertion checks and latter test uses FloatBuffer
|
|
|
|
| |
BUTTON1_MASK instead of BUTTON1_DOWN_MASK
|
|
|
|
| |
in slave-creation (causes failure on windows)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
+ // We cannot use EventQueue.invokeAndWait(..) since it will
+ // block this will block the current thread, holding the context!
+ // The whole issue w/ an external shared context is make-current
+ // synchronization. JOGL attempts to lock the surface/drawable
+ // of the master context to avoid concurrent usage.
+ // The semantic constraints of a shared context are not well defined,
+ // i.e. some driver may allow creating a shared context w/ a master context
+ // to be in use - others don't.
+ // Hence it is up to the user to sync the external master context in this case,
+ // see 'masterLock' of in this code!
+ // EventQueue.invokeAndWait(initializer);
|
| |
|
| |
|
|\
| |
| | |
Unit test for bug 1160: context sharing between external GL context and offscreen drawable
|
| |
| |
| |
| | |
external GL context
|
| |
| |
| |
| |
| |
| |
| |
| | |
tool-tip within JDialog
Test passes on GNU/Linux X11 and Windows - both using NVidia driver.
Unit test is based on Robin Provost's code as attached in Bug 1158.
|
| | |
|
| |
| |
| |
| | |
allow reset origin of location-sensor
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Note: The ovrd server must run, otherwise no device is being detected.
General Stereo API Changes:
- EyePose -> ViewerPose
- We only use the viewer pose and derive the pupile position
via EyeParameter.
- Hence we reduce complexity.
- A single ViewerPose will be maintained by StereoDeviceRenderer
- position is in meter, allowing StereoGLEventListener to scale
device independent.
- StereoDevice receives knowledge of certain sensors,
to be queried and used for start-sensors.
OVR:
- Simply apply the above general changes
- Build: Remove [more] unused API entries for SDK rendering
|
|/
|
|
|
|
|
|
|
| |
shader
On GNU/Linux NVidia 340.76 the test TestGLPointsNEWT failed otherwise:
error: precision mismatch between shaders for uniform (named mgl_PointParams[0])
error: precision mismatch between shaders for uniform (named mgl_PointParams[1])
|
|
|
|
| |
EGL.KHRONOS_BOOLEAN_ENUM_FORCE_SIZE manually to avoid binary incompatibility
|
| |
|
|
|
|
| |
commit c156343fec33ceea7f238b9766a9f4985fb92687)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(*) Version v230 -> v23x
Violates the semantic versioning spec a bit, i.e.
minor API change within 'com/jogamp/opengl/util/stereo/' !
2/ 11: com.jogamp.opengl.util.stereo.StereoDevice.Config : Remove 1, Change 0, Deprecate 0, Add 0
4/ 11: com.jogamp.opengl.util.stereo.StereoDeviceFactory : Remove 1, Change 0, Deprecate 0, Add 4
6/ 11: com.jogamp.opengl.util.stereo.StereoDeviceRenderer : Remove 1, Change 0, Deprecate 0, Add 1
Class com.jogamp.opengl.util.stereo.StereoDevice.Config
Removed Class , access public super synchronized
Class com.jogamp.opengl.util.stereo.StereoDeviceFactory
Removed Method createDevice, desc (ILcom/jogamp/opengl/util/stereo/StereoDevice$Config;Z)Lcom/jogamp/opengl/util/stereo/StereoDevice;, access abstract public
Class com.jogamp.opengl.util.stereo.StereoDeviceRenderer
Removed Method getSingleSurfaceSize, desc ()Lcom/jogamp/nativewindow/util/DimensionImmutable;, access abstract public
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ovr_Shutdown() and ovrHmd_Destroy(hmdDesc).
Add extra DK1 detection
- SDK 0.4.4 w/ DK1 (Linux): ovrHmd_Detect() returns zero!
- In such case: Try creating one device, which works for DK1 on Linux
Add call to ovr_Shutdown() and ovrHmd_Destroy(hmdDesc).
- Add StereoDeviceFactory.shutdown() and call
ovr_Shutdown() for in OVRStereoDeviceFactory.shutdown().
- Call ovrHmd_Destroy(hmdDesc) in OVRStereoDevice.dispose().
|
|
|
|
|
|
| |
rotation. Add verbosity.
Allowing user to permanently rotate the device ..
|
|
|
|
|
|
|
|
| |
'disableOpenGLARBContext', i.e. exclude OSX
Also add 'TestGLProfileXXNEWTPost',
run w/o any properties after TestGLProfile*NoARBCtx
to be sure follow-up unit tests are tested under default conditions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
>= 3.1' issues
This fix solves the described issues below.
Test cases added for onscreen and offscreen drawables,
the latter includes Window's bitmap special case.
GLContextImpl.createImpl(..): Fix NoARBCreateContext and '!ARB GL >= 3.1' issues:
=================================================================================
GLContextImpl.createImpl(..) implementation of X11GLXContext and WindowsWGLContext
wrongly handles the case of NoARBCreateContext.
Here the !ARB created context shall allow GL >= 3.1,
since ARB context creation is disabled and 'no mix' can occur.
The latter was already intended due to failure criteris 'createContextARBTried'
in:
if( glCaps.getGLProfile().isGL3() && createContextARBTried ) {
failure("createImpl ctx !ARB but ARB is used, profile > GL2 requested");
}
Further, WindowsWGLContext treats glCaps.isBitmap()
within the 'createContextARBTried=true' case, but it shall never
tried using the ARB context creation method.
This even lead to the issue of creating a 1.1 context,
but having the ProcAddressTable being still on the GL > 2 cached table.
This is due to 'setGLFunctionAvailability(..)'.
Ensure 'setGLFunctionAvailability(..)' is functional
====================================================
Caller shall either throws an exception if method returns false
or issues a state reset.
In case 'setGLFunctionAvailability(..)' throws an exception itself,
the states are no issue.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adopt to bug 1147, commit 2c88b6dfd4eb7e2cd9a50fa48e08ecafc980931a.
Using the native unique deviceID makes monitor identification more robust.
This also allows us simplify
displayID -> NSScreen-idx -> MonitorDevice
into
displayID -> MonitorDevice
and to survive a primary monitor change.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- DK2's screen on X11 (at least) starts in rotated mode,
detect and apply MonitorDevice rotation via NEWT's OpenGL StereoDeviceUtil
- Move StereoDevice.Config -> StereoDeviceConfig
- Expose generic StereoDevice to public: GenericStereoDeviceConfig + GenericStereoDeviceFactory
- GenericStereoDeviceFactory exposes public GenericStereoDeviceConfig creation
for mono, sbs-stereo and lense-sbs-stereo w/ diff. parameters.
- Pass eye surface/texture size for each eye from device to renderer,
instead of assuming unified values.
- Unify GenericStereoDevice.createRenderer(..) and OVRStereoDevice.createRenderer(..) code
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
DelegateImplementation) due to new GlueGen Semantics
GlueGen would usually use the original native C method name
for proc-address or direct call.
GLEmitter however uses the renamed method name,
assuming it is shorter and resulted from a 'RenameExtensionIntoCore' directive.
GLUgl2 native usage was broken since 2.2.4
GLUgl2 and CGL use RenameJavaSymbol w/ the intention of delegation,
hence resolve the issue using the new DelegateImplementation directive
which preserves the original function name for the native call.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Support added for
- Windows
- X11 XRandR 1.3
- OSX
Note: Our whole MonitorMode association handling is currently _not_ dynamic.
- only on Windows we actually use native unique ID,
which might not change (adapter and monitor idx)
- On OSX and X11 we simply use indices,
but if monitor setup changes - they refer to different instances.
In case it is desired to cover dynamic monitor setup change,
we need to address this issue in a new bug entry.
|
|
|
|
| |
machine (Linux/Ubuntu) doesn't rotate screen reliably.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The mapping AWT Component -> NEWT [Screen, MonitorDevice]
shall allow generic AWT applications to utilize NEWT's MonitorDevice
information like physical monitor-size and DPI.
- AWT-Component -> NEWT-Display:
- NewtFactoryAWT.createDisplay
- AWT-Component -> NEWT-Screen:
- NewtFactoryAWT.createScreen
- AWT-Component -> NEWT-MonitorMode:
- NewtFactoryAWT.getMonitorDevice
- NewtFactoryAWT.getMonitorDevice
- If OSX, utilizing OSX's AWT Component -> MonitorDevice-Index mapping
- Otherwise using the coverage to identify MonitorDevice
See TestGearsES2GLJPanelAWT 'GetPixelScale',
demonstrating the mapping while pressing 'p' (cached MonitorMode)
and pressing SHIFT-'p' (non-cached MonitorMode).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Iterate-over and identify all adapter:monitor. (Bug 1129)
- Identify cloned devices (fully covered)
- MonitorDevice gets 'isCloned()' to identify whether
it is a cloned device, i.e. fully covered by another monitor.
This detection may happen natively but will always performed
platform agnostic.
- getMainMonitor(..) now exclude 'cloned' devices
- Windows: Iterate-over and identify all adapter:monitor
- Since we also list cloned monitor,
we need to iterate over all adapter and all it's monitor-devices.
- The native monitor-id is now defined as: ( adapter-idx << 8 ) | monitor-idx.
- Bug 1129 <- listed under this bug entry for convenience
|
|
|
|
| |
.. thx to Julien Gouesse's review.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On Windows, one must read the monitor's EDID data as stored in the registry,
no 'simple' API works otherwise.
The proper way requires utilizing the Windows Setup-API.
This code is inspired by Ofek Shilon's code and blog post:
<http://ofekshilon.com/2014/06/19/reading-specific-monitor-dimensions/>
See: function 'NewtEDID_GetMonitorSizeFromEDIDByModelName'
In contrast to Ofek's code, function 'NewtEDID_GetMonitorSizeFromEDIDByDevice'
uses the proper link from
DISPLAY_DEVICE.DeviceID -> SP_DEVICE_INTERFACE_DETAIL_DATA.DevicePath,
where DISPLAY_DEVICE.DeviceID is the monitor's enumeration via:
EnumDisplayDevices(adapterName, monitor_idx, &ddMon, EDD_GET_DEVICE_INTERFACE_NAME);
Hence the path to the registry-entry is well determined instead of just comparing
the monitor's model name.
|
|
|
|
|
|
|
|
|
| |
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/**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Use float[2] for pixel-scale.
Utilize simple integer rounding:
int-pixel-units = (int) ( int-window-units * pixel-scale + 0.5f )
- Provide minimum and maximum allowed pixel-scale values
to be set by platform, supporting generic pixel-scale validation.
- Remove 'OSXUtil.GetPixelScale(final RectangleImmutable r, final int[] screenIndexOut)',
implementation for all platforms would cause huge redundancy of
Screen and MonitorDevice code (duplication of NEWT).
- instead, add 'float[2] pixelScale' to NEWT's MonitorDevice
- Detect change of pixel-scale and propagate accordingly.
This allows GLCanvas, GLJPanel and NewtCanvasAWT instances
to be dragged between monitor devices w/ different pixel-scale.
- OSX: Handle native triggered reshape events off-thread to avoid EDT congestion
due to locked window when consuming deferred events on EDT.
|
|\ |
|
| | |
|
| | |
|
| |
| |
| |
| | |
screenIndexOut) ( Part-1 )
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
DirectDataBufferInt/BufferedImageInt
- PixelFormat
Refine definition allowing complete format conversion by its attributes
instead of static 'knowledge'.
- PixelFormat has_a *new* PixelFormat.Composition
- PixelFormat.Composition contains all pixel component layout
information as required for inspection and conversion.
Component names are enumerated via PixelFormat.CType.
- PixelFormatUtil.convert(..) utilizes generic conversion
based on PixelFormat.Composition rather static type mapping.
However, a int32 RGBA static conversion is still supported for performance.
Utilizes Bitstream for varying pixel component bit-width.
- Complete w/ hashCode() and equals(..)
- GLPixelBuffer
- Take 'pack' mode into account when determine GLPixelAttributes,
i.e. on GLES pack=true (e.g. glReadPixel) only RGBA is guaranteed to work.
Hence querying GLPixelAttributes requires the GLProfile, PixelFormat and pack mode.
- Complete GLPixelAttributes conversions from PixelFormat or GL format/data-type,
while taking GL data-type into account, as well as pack-mode.
- Complete w/ hashCode() and equals(..)
- SingletonGLPixelBufferProvider queries singleton GLPixelBuffer via
- PixelFormat.Composition hostPixelComp,
- GLPixelAttributes pixelAttributes,
- boolean pack
which comprise a unique key, allowing the implementation to utilize
a hash map. This is implemented in AWTSingletonGLPixelBufferProvider.
This allows distinct singleton GLPixelBuffer for different
host PixelFormat (conversion) and GLPixelAttributes (depending on GLProfile).
- Removes field 'componentCount' which was 'hacked in' to pass
information about an optional host memory layout.
Implementations utilizing conversion, e.g. AWTGLPixelBuffer,
can implement GLPixelBufferProvider's
'PixelFormat.Composition getHostPixelComp(final GLProfile glp, final int componentCount)'
and manage such implementation details, see use-case GLJPanel.
- DirectDataBufferInt/BufferedImageInt: Expose underlying NIO ByteBuffer
- AWTMisc.createCursor(..) uses DirectDataBufferInt.BufferedImageInt exposed
NIO ByteBuffer, allowing to use generic PixelFormatUtil.convert(..).
|