| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PointerIconImpl.validatedHandle() shall not create native resource.
Semantic cleanup for clarity and equal behavior
Align DisplayImpl.createPointerIcon(..) behavior
- return null handle of createPointerIconImplChecked(..) shall be accepted,
no exception for neither of the two creation methods.
PointerIconImpl.validatedHandle() shall not create native resource.
- throws exception if handle is null (about to be used)
- no native creation shall happen here.
Display.PointerIcon.validate(): Removed, not used.
|
|
|
|
| |
rules (launch script w/ key tracker)
|
|
|
|
| |
swapInterval to optionally skip VSYNC if 0
|
|
|
|
| |
must be enabled via -pointerIcon
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Broadcom VC IV can be used from
both console and from inside X11
When used from inside X11
rendering is done on an DispmanX overlay surface
while keeping an X11 nativewindow under as input.
When Broadcom VC IV is guessed
only the Broadcom DispmanX EGL driver is loaded.
Therefore standard TYPE_X11 EGL can not be used.
|
| |
| |
| |
| |
| |
| |
| | |
libbrcmWFC.so since 7 Jul 2016
Raspbian integration (two libGLES side-by-side)
https://github.com/anholt/mesa/issues/24
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Misc:
- Remove unused SysExit..
- showFPS=true default
- allow setting 'useDoubleBuffer' via '-single'
- demos.es2.GearsES2: Don't be verbose on display even w/o animator
IF '-noanim', issue glWindow.display() from main thread
instead of using the animator thread otherwise.
This shall test the swap buffering code in single threaded mode!
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
is the desired one)
First issue was that the proper DRM file had to be queries,
as Raspberry 4 may have two of them:
<--
/dev/dri/dri0
/dev/dri/dri0
/dev/dri/by-path/platform-fec00000.v3d-card -> ../card0
/dev/dri/by-path/platform-soc:gpu-card -> ../card1
-->
This patch attempts to probe all /dev/dri/card[0..99]
using this arbitrary range.
The test loop ends if:
- drmOpenFile succeeds and drmModeGetResources delivers non-null value
- the iterated probed file doesn't even exist
- 100 files has been tested ;-)
|
|/
|
|
| |
The launcher script also allows inflating classes and native libs to test impact on Raspberry Pi 3 Model B+.
|
| |
|
|
|
|
|
|
|
|
| |
commit 453f80e38bcb0945e7eac27a5917dce9bdc6446b added disabling the tracker,
however the NEWT usage didn't cover all mouse tracker null pointer.
Further, let's initialize and spawn off the threads only at first getSingleton() call
not at class initialization earlier.
|
|
|
|
|
|
|
|
|
|
|
| |
disable each
LinuxKeyEventTracker also disable the eventX reading by default, but can be enabled via new property.
The 'return bug' (crash due to underlying console) is indeed not occuring
when using a VT w/o running console application underneath.
As Xerxes showed, one may use chvt to a free known VT or openvt.
|
|
|
|
| |
more documentation
|
|
|
|
|
|
|
|
|
|
|
|
| |
DRM allows 64x64 pixel cursor images, using GBM_FORMAT_ARGB888 only.
Notable: GBM_FORMAT_ARGB888 == PixelFormat.BGRA8888
Having fixed mouse and keyboard input with previous commit,
the demo com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NEWT
shows via key press
- i -> pointer visible/invisible
- c -> pointer icon change
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
keyboard event files
The time structure on 64bit machines uses two 8 byte long values instead of two 4 bytes int values on 32bit machines.
The insufficient read on 64bit machines caused an IllegalArgument exception.
This fix considers 32 or 64 bit operation.
Class renamed: LinuxEventDeviceTracker -> LinuxKeyEventTracker, as it tracks key events specifically.
Now the EventDeviceManager tries to only use /dev/input/by-id/*-event-kbd keyboard event files,
which reduces the handling on kbd event files only.
|
| |
|
|
|
|
|
|
| |
Added this version as the safe version to limit GLRendererQuirks.NoSurfacelessCtx setting.
Bug 1200 - JOGL crashes on Debian8 GNU/Linux x86_64 'NVidia beta driver 355.06' @ probeSurfacelessCtx
|
|
|
|
|
|
| |
430.40 on GNU/Linux X11
Avoiding this method for now.
|
|
|
|
|
|
|
|
|
| |
Mesa 18.3.6 issues mixing EGL_DEFAULT_DISPLAY and GBM device on EGL_PLATFORM_GBM_KHR
Interestingly, the issue is no more reproducible. Weird.
However, it is advised to use a real GBM device handle for EGL display creation
under EGL_PLATFORM_GBM_KHR.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adding new classes DRMLib (gluegen of drm + gbm), DRMUtil and DRMMode GBMDummyUpstreamSurfaceHook
to new package jogamp.nativewindow.drm, allowing full awareness of DRM + GBM within NativeWindow for JOGL + NEWT.
DRMMode replaces the previous native code of collecting drmMode* attributes: active connector, used mode, encoder etc
and also supports multiple active connectors.
DRMUtil handles the global static drmFd (file descriptor), currently only the GNU/Linux DRM device is supported.
GBMDummyUpstreamSurfaceHook provides a simple dummy GBM surface.
NativeWindow provides the new nativewindow_drm.so and nativewindow-os-drm.jar,
which are included in most 'all' jar packages.
build property: setup.addNativeEGLGBM -> setup.addNativeDRMGBM
Changes NativeWindowFactory:
- TYPE_EGL_GBM -> TYPE_DRM_GBM while keeping the package ID of '.egl.gbm' for NEWT (using EGL)
- Initializing DRMUtil at initialization
Changes EGLDrawableFactory:
- Using native GBM device for the default EGL display creation instead of EGL_DEFAULT_DISPLAY.
This resolves issues as seen in Bug 1402, as well in cases w/o surfaceless support.
- GL profile mapping uses surfaceless when available for GBM,
otherwise uses createDummySurfaceImpl (dummy GBM surface via GBMDummyUpstreamSurfaceHook)
- createDummySurfaceImpl uses a dummy GBM surface via GBMDummyUpstreamSurfaceHook
- DesktopGL not available with GBM, see Bug 1401
NEWT's DRM + GBM + EGL Driver
- Using DRMLib, DRMUtil and DRMMode, removed most native code but WindowDriver swapBuffer
- ScreenDriver uses DRMMode, however currently only first connected CRT.
- WindowDriver aligns position and size to screen, positions other than 0/0 causes DRM failure
- WindowDriver reconfigure n/a
NEWT TODO:
- DRM Cursor support (mouse pointer)
- Pointer event handling
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- EGLSurface: Factor out 'eglCreate[Platform]WindowSurface'
NEWT egl.gbm.WindowDriver
-- Properly use GBM fourcc format and use as visualID
for GBM surface creation and EGL config selection
-- Create eglSurface within this class
-- Hook up GBM/DRM page flip (not working yet, no visible artifacts - no swap)
- ProxySurfaceImpl.surfaceSwap() call upstreamSurface's implementation if available
TODO: 'Permission denied' calling:
- drmSetMaster (optional)
- drmModeSetCrtc
- drmModePageFlip
|
| |
|
|
|
|
|
| |
getCustomClass(..) shall throw all required exceptions upstream.
Previous essential NEWT driver exception information got suppressed if failing, only disclosed in debug mode.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
according to Bug 1156
- Special files like '/dev/dri/card0' can't be tested via isFile(), use exists()
Order for GNU/Linux (and other unices) IMHO is
1) Display Server (Vendor neutral)
1.1) running X11 display server (DISPLAY check enough?)
1.2) running WAYLAND display server (WAYLAND_DISPLAY check enough?)
2) Console Mode Vendor Neutral
2.1) GBM (how to check?)
3) Console Mode Vendor Specific
3.1) VCIV (how to check)
|
|
|
|
| |
eglCreatePlatformWindowSurface as well (like eglGetPlatformDisplay)
|
|
|
|
| |
e674f4fa0e795bd67335025123f9af727d856f7d
|
|
|
|
|
|
|
|
|
| |
Using EGL-GBM, using desktop GL we end up with an unsatisfied linkage error after the ProcAddressTable
has been reset using the 'hasMajor' and 'hasCtxOptions'.
However looking up using 'reqMajor' and 'reqCtxOptions' seems to work.
Needs more analysis.
This change also increases robustness for scanning through GL profiles at initialization.
|
|
|
|
| |
Now: TYPE_EGL_GBM == ".egl.gbm"
|
|
|
|
|
|
| |
GBM driver is now under egl/gbm subpackage and has been replaced by bcm_vc_iv boilerplate.
Native code is reentrant capable and cleaned up.
TODO: EGLDisplayUtil work with SharedResourceRunner
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Also issue the orderFront0 call within createWindow1 (aligned with IOS code)
|
| |
|
| |
|
|
|
|
|
|
| |
Introducing boolean property 'newt.macos.useAppKitEDTUtil', which defaults to 'false'.
If enabled, the new AppKitEDTUtil is being used, operating on the AppKit main thread.
This is used to ease debugging Bug 1393, minimizing thread context switches.
|
|
|
|
|
|
|
|
|
| |
context thread animator
MacOS Java11 freezes occur on 3rd NEWT window creation (orderFront) after enabling exclusive context thread animator.
Here we add set visibility upfront which does not trigger the freeze on the AppKit main thread.
Note: OpenJDK8 works flawlessly.
For some reason, the exclusive context thread enabled animator interferes when 'orderFront' is issued.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
X11Window.c's 'NewtWindows_getFrameExtends(..)'
retrieves the insets via XGetWindowProperty on _NET_FRAME_EXTENTS.
Right after window creation this method fails as the WM did not yet
provide the information as the window has not yet been mapped.
Implementation needs to retry for a certain amount of time (250ms)
and maximum number of attempts (96 XEvent).
This issue surfaced while validating fix for Bug 1393,
testing TestDisplayLifecycle02NEWT also on X11.
|
|
|
|
|
|
|
|
| |
The OSX fixes for bug 1393 spun off certain tasks like position/size gathering async to AppKit,
hence we should validate whether both are valid.
Further the TestDisplayLifecycle02NEWT had one bug,
it retrieved 'screen.getViewportInWindowUnits()' while it was not yet initialized.
|
|
|
|
| |
insetsChanged + insetsVisibleChanged
|
|
|
|
| |
argument. Method only changes state.
|
|
|
|
|
|
|
|
| |
To allow proper testing of whether all AppKit calls are performed on its Main-Thread where required,
we inject the libMainThreadChecker.dylib when property 'nativewindow.debug.OSXUtil.MainThreadChecker' is set.
See <https://developer.apple.com/documentation/code_diagnostics/main_thread_checker?language=objc>
Lib-Name: /Applications/Xcode.app/Contents/Developer/usr/lib/libMainThreadChecker.dylib
|
|
|
|
|
|
| |
Additionally, setPointerIcon0 must also be made async on AppKit (instead of wait),
we have to assume/hope the user won't pull the PointerIconImpl instance in-between ;-)
Hence removing the comment regarding the lifecycle.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
AppKit NSWindow creation
MacOS 10.14.6 + OpenJDK11U produces occasional freezes on AppKit Main Thread
Latest manual tests after resolving Bug 1389
disclosed a few occasional freezes using NEWT + Java11.
These are related to probable AWT changes since Java8,
as these do not occur with Java8.
Fix: Spun off orderFront0(=setVisible) async off-thread on AppKit after sync AppKit NSWindow creation.
This fix also aligns the macos createWindow code with the new simplified ios implementation,
see commit 004c67c73a0309158c30929cd0d6513e23f34803
|
|
|
|
| |
unnecessary JNI calls
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Culprit of the crash and the non propagated action on NSApp main-thread
was _simply_ our OSXUtil_KickNSApp() 'kick alive'
NSApplicationDefined NSEvent sent to the NSApp.
Java11's NSApp code overrides sendEvent and handles
NSApplicationDefined + subtype=ExecuteBlockEvent
using the given data1 as a function pointer. 8-O
ExecuteBlockEvent defined as 0, which we have sent.
Simply passing subtype=8888 avoids this side-effect.
Whether it is still required to KickNSApp() is another question.
+++
Further, make code a bit more robuts regarding the offscreenSurfaceLayer
at JAWTWindow invalidate. I.e. if still not detached, do the late cleanup there.
This just in case the OSX Context callback to disassociate the drawable
has been missed.
|