| Summary: | NVIDIA 331.38 (Linux X11) EGL impl. only supports _one_ EGL Display via eglGetDisplay(..) | ||
|---|---|---|---|
| Product: | [JogAmp] Jogl | Reporter: | Sven Gothel <sgothel> |
| Component: | opengl | Assignee: | Sven Gothel <sgothel> |
| Status: | RESOLVED FIXED | ||
| Severity: | major | ||
| Priority: | --- | ||
| Version: | 2 | ||
| Hardware: | All | ||
| OS: | all | ||
| Type: | DEFECT | SCM Refs: |
fbe00e6f5dca8043b40dd96f096fecc9424e0cc3
f1af72e1d93e8b928409c7bd8da0acb2b41cd345
|
| Workaround: | TRUE | ||
|
Description
Sven Gothel
2014-01-23 05:51:30 CET
NV proprietary driver 331.38 for GNU/Linux contains a 32bit libEGL and libGLES* libs. They seem not to operate w/ an X11 graphics device, only w/ the default EGL device. Currently we assume a functional driver w/ teh desktop-device, if the EGL device test was successful. Hence we shall test whether ES[1-3] is operational on desktop-device. NVIDIA 331.38 (Linux X11) EGL impl. only supports _one_ EGL Device via eglGetDevice. - Subsequent eglGetDevice(..) calls fail. - Using the same 'global' egl-device does work though Remedy: Add 'GLRendererQuirks.SingletonEGLDeviceOnly' (In reply to comment #2) > NVIDIA 331.38 (Linux X11) EGL impl. only supports _one_ EGL Device via > eglGetDevice. > > - Subsequent eglGetDevice(..) calls fail. > > - Using the same 'global' egl-device does work though > > Remedy: Add 'GLRendererQuirks.SingletonEGLDeviceOnly' NVIDIA 331.38 (Linux X11) EGL impl. only supports _one_ EGL Device via eglGetDisplay. - Subsequent eglGetDisplay(..) calls fail. - Using the same 'global' egl-display does work though Remedy: Add 'GLRendererQuirks.SingletonEGLDisplayOnly' fbe00e6f5dca8043b40dd96f096fecc9424e0cc3
Detection of quirk is done as usual in GLContextImpl.setRendererQuirks(..),
and EGLDrawableFactory passes the quirk, if detected, down to EGLDisplayUtil.
The latter implements the singleton eglDisplay handle.
EGLDisplayUtil: Cleaned up ..
- EGLDisplayRef employs the reference handling incl. eglInitialize(..) and eglTerminate(),
as well as the new singleton quirk.
- Mark all internal methods 'private',
to remove possible [untested] sideffects.
f1af72e1d93e8b928409c7bd8da0acb2b41cd345
Refines commit fbe00e6f5dca8043b40dd96f096fecc9424e0cc3
Instead of querying driver artifacts (vendor, platform, version ..)
we simply can autodetect this quirk by trying to get a second egl-display handle
when initializing the EGLDrawablFactory's default device:
EGL.eglGetDisplay(EGL.EGL_DEFAULT_DISPLAY)
|