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) |