My understanding is that libEGL.so.1 is GLVND-based, where libEGL.375.39 is     
  
non-GLVND.  I think both of them are at some level wrappers around             
libEGL_nvidia.so, which is much larger than either of the libEGL.so and I guess
contains the meat of Nvidia's EGL implementation.                              
                                                                               
The GLVND one looks up the EGL implementations present by inspecting the files 
in /usr/share/glvnd/egl_vendor.d/.  A similar mechanism declares Vulkan        
implementations with JSON files in /usr/share/vulkan/icd.d/, and, sure enough, 
the nvidia-375 package places nvidia_icd.json in /usr/share/vulkan/icd.d/.     
                                                                               
However, nvidia-375 doesn't put anything in /usr/share/glvnd/egl_vendor.d/, so 
libEGL.so.1 doesn't find out about libEGL_nvidia.so and can't forward to it.    
  
                                                                               
If I create /usr/share/glvnd/egl_vendor.d/ and copy in 10_nvidia.json from     
Nvidia's runfile installer, my test case passes.

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to nvidia-graphics-drivers-367 in Ubuntu.
https://bugs.launchpad.net/bugs/1674677

Title:
  eglGetDisplay(EGL_DEFAULT_DISPLAY) returns EGL_NO_DISPLAY

Status in nvidia-graphics-drivers-367 package in Ubuntu:
  Confirmed
Status in nvidia-graphics-drivers-375 package in Ubuntu:
  Confirmed

Bug description:
  I am using EGL to obtain offscreen rendering contexts, but upgrading
  this package today broke my application.  I have written a small test
  case, that I expect to print "PASS":

  ```
  #include <EGL/egl.h>                                                          
 
  #include <iostream>                                                           
 
                                                                                
 
  int main(int argc, char **argv) {                                             
 
      EGLDisplay eglDpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);                   
 
      std::cout << ((eglDpy == EGL_NO_DISPLAY) ? "FAIL" : "PASS") << std::endl; 
 
  }
  ```

  Build with e.g. `g++ egl_test.cpp -lEGL`.  Using nvidia-375
  (375.39-0ubuntu0.16.04.1), this test program will print "FAIL",
  because `eglGetDisplay(EGL_DEFAULT_DISPLAY)` returns `EGL_NO_DISPLAY`.
  If I install the 375.39 driver using Nvidia's installer, the test
  passes, so I think it is not an upstream issue.

  ProblemType: Bug
  DistroRelease: Ubuntu 16.04
  Package: nvidia-375 375.39-0ubuntu0.16.04.1
  ProcVersionSignature: Ubuntu 4.4.0-67.88-generic 4.4.49
  Uname: Linux 4.4.0-67-generic x86_64
  NonfreeKernelModules: nvidia_uvm nvidia_drm nvidia_modeset nvidia
  ApportVersion: 2.20.1-0ubuntu2.5
  Architecture: amd64
  CurrentDesktop: MATE
  Date: Tue Mar 21 12:41:31 2017
  EcryptfsInUse: Yes
  InstallationDate: Installed on 2016-10-11 (160 days ago)
  InstallationMedia: Xubuntu 16.04.1 LTS "Xenial Xerus" - Release amd64 
(20160719)
  SourcePackage: nvidia-graphics-drivers-375
  UpgradeStatus: No upgrade log present (probably fresh install)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers-367/+bug/1674677/+subscriptions

-- 
Mailing list: https://launchpad.net/~desktop-packages
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~desktop-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to