1. 01 Jun, 2022 3 commits
  2. 21 Mar, 2022 1 commit
  3. 15 Mar, 2022 1 commit
  4. 14 Mar, 2022 2 commits
    • Aidan Foster's avatar
      Update src/EGL/libeglcurrent.c · 1f2bfbb6
      Aidan Foster authored
      1f2bfbb6
    • Aidan Foster's avatar
      Set current thread state to NULL in teardown · 4834bd26
      Aidan Foster authored
      In the EGL destructor, DestroyThreadState gets called by
      __eglCurrentTeardown to free the threadState, but the threadState does
      not get changed to NULL when this happens.
      
      The function eglReleaseThread calls __eglDestroyCurrentThreadAPIState,
      which does set the threadState to NULL, right before calling
      DestroyThreadState. Both eglReleaseThread and
      __eglDestroyCurrentThreadAPIState check to make sure the threadState is
      NULL before continuing.
      
      If eglReleaseThread gets externally called after destruction, the
      threadState is not NULL, so DestroyThreadState will be called to free
      the threadState that was already freed by the destructor, causing a
      double free.
      
      This change is to add the same setting threadState to NULL in
      __eglCurrentTeardown as which already __eglDestroyCurrentThreadAPIState,
      to prevent this double free situation.
      4834bd26
  5. 24 Feb, 2022 2 commits
  6. 07 Feb, 2022 1 commit
  7. 06 Feb, 2022 1 commit
  8. 17 Dec, 2021 2 commits
  9. 07 Dec, 2021 1 commit
  10. 06 Dec, 2021 1 commit
    • Dylan Baker's avatar
      meson: use required : feature option correclty · 9d09a1a2
      Dylan Baker authored
      The code here is a complicated way to write exactly the same thing. If
      `get_option('x11')` returns `disabled`, ie `-Dx11=disabled` then
      `dependency()` short circuits and returns a not found object (just like
      `dependency('', required : false)`, but with the correct name for error
      messages).
      9d09a1a2
  11. 29 Nov, 2021 1 commit
    • Kyle Brenneman's avatar
      EGL: Add support for eglQueryDisplayAttribKHR and NV. · db5ca337
      Kyle Brenneman authored
      There are KHR, EXT, and NV versions of eglQueryDisplayAttrib, so add
      support for all of them.
      
      Define separate eglQueryDisplayAttribEXT, eglQueryDisplayAttribKHR, and
      eglQueryDisplayAttribNV functions. They all call into the same common
      function, with the only difference being the name passed to an error
      callback.
      
      When loading a vendor library, check for the vendor's
      eglQueryDisplayAttrib using all three suffixes, and use whichever one is
      available.
      db5ca337
  12. 26 Nov, 2021 1 commit
  13. 25 Nov, 2021 8 commits
    • Kyle Brenneman's avatar
      tests: Add unit test for eglQueryDisplayAttribEXT. · 288eb48c
      Kyle Brenneman authored
      Extended testegldeviceadd to be able to test calling eglQueryDisplayAttribEXT
      to return a new EGLDeviceEXT handle.
      288eb48c
    • Kyle Brenneman's avatar
      tests: Implement EGL_EXT_device_query in the dummy vendor. · a5688ef2
      Kyle Brenneman authored
      Added implementations for eglQueryDisplayAttribEXT, eglQueryDeviceAttribEXT,
      and eglQueryDeviceStringEXT.
      
      Defined a new EGL_DEVICE_INDEX attribute for eglGetPlatformDisplay that uses
      a device based on its index. This will allow us to test the case where
      eglQueryDisplayAttribEXT returns an EGLDeviceEXT handle that libglvnd hasn't
      seen before.
      a5688ef2
    • Kyle Brenneman's avatar
      tests: Added unit tests for adding new EGLDisplayEXT handles. · af3f7e9c
      Kyle Brenneman authored
      Added a new test program, testegldeviceadd, which tests a vendor library adding
      a new EGLDeviceEXT handle after the application calls eglQueryDevicesEXT.
      
      It's got two subtests right now. "querydevices" will test returning the new
      device through a second eglQueryDevicesEXT call. "returndevice" tests returning
      the new device through a vendor-provided dispatch stub.
      af3f7e9c
    • Kyle Brenneman's avatar
      tests: Update EGL test helpers to match the new EGL dummy vendor functions. · 01316ea9
      Kyle Brenneman authored
      Updated egl_test_utils.c/h to include the new eglTestReturnDevice function.
      
      Added functions to egl_test_utils.c/h to load each vendor's DummySetDeviceCount
      function using dlopen+dlsym.
      01316ea9
    • Kyle Brenneman's avatar
      tests: Add initial support for adding new devices to EGL_dummy. · 6d43e9ba
      Kyle Brenneman authored
      Added a new function to the EGL dummy vendor called DummySetDeviceCount, which
      will change the number of devices that it hands back for eglQueryDevicesEXT.
      
      Also added a new dummy extension function, eglTestReturnDevice, which will
      dispatch based on an EGLDisplay and return an EGLDeviceEXT handle. This is
      used to test the new __EGLapiExports::setVendorForDevice function.
      6d43e9ba
    • Kyle Brenneman's avatar
      EGL: Add a dispatch stub for eglQueryDisplayAttribEXT. · eaffa7bc
      Kyle Brenneman authored
      Add a dispatch stub for eglQueryDisplayAttribEXT, which updates the device
      hashtable if the application queries EGL_DEVICE_EXT.
      
      It's possible that eglQueryDisplayAttribEXT could return an EGLDeviceEXT handle
      that wasn't returned by eglQueryDevicesEXT, so the dispatch stub needs to add
      the handle to the device hashtable.
      eaffa7bc
    • Kyle Brenneman's avatar
      EGL: Allow vendor's dispatch stubs to update the EGL device map. · 26d15a9f
      Kyle Brenneman authored
      Export a new __EGLapiExports::setVendorForDevice function, which allows
      dispatch stubs to update the device hashtable when something returns an
      EGLDeviceEXT handle.
      
      Bumped the ABI version number to 1.2.
      26d15a9f
    • Kyle Brenneman's avatar
      EGL: Allow adding EGLDeviceEXT handles · 2747fcd3
      Kyle Brenneman authored
      It's possible for new devices to become available while a program is running,
      so eglQueryDevicesEXT might need to return a different list.
      
      Change the EGLDeviceEXT hashtable so that each entry is allocated and added
      separately, rathat than allocating every entry in a single malloc.
      
      Added a new __eglAddDevice function, which adds an entry to the device
      hashtable.
      
      When the application calls eglQueryDevicesEXT, always call through to each
      vendor library, and add (or update) each EGLDeviceEXT to the hashtable.
      
      There's still no provision for removing an entry from the device hashtable. The
      semantics of hot-unplugging a device aren't defined yet, and there's no way to
      ensure that libglvnd's mapping will get updated if a device disappears
      asynchonously, so it's up to the vendor library to deal with the old handle.
      2747fcd3
  14. 28 Oct, 2021 2 commits
  15. 27 Oct, 2021 5 commits
    • Kyle Brenneman's avatar
      Merge branch 'meson-test-add-dummy-depends' into 'master' · 6816db80
      Kyle Brenneman authored
      tests/meson: Add dependencies for the dummy vendor libraries.
      
      See merge request glvnd/libglvnd!242
      6816db80
    • Kyle Brenneman's avatar
      Merge branch 'tls-config-options' into 'master' · f73ae479
      Kyle Brenneman authored
      Add test coverage for TLS/TSD combinations
      
      See merge request !251
      f73ae479
    • Kyle Brenneman's avatar
      tests: Remove the X11 dependency from the EGL tests. · 27eb562a
      Kyle Brenneman authored
      The EGL tests don't use X11, and only included the Xlib headers by way
      of eglplatform.h.
      
      Now that we don't set the USE_X11 macro anymore, eglplatform.h won't try
      to include anything from Xlib, and so the EGL tests don't need X11 as a
      dependency.
      27eb562a
    • Kyle Brenneman's avatar
      Replace USE_X11 macro with ENABLE_EGL_X11. · fa9ef397
      Kyle Brenneman authored
      If x11 support is enabled, then the meson and configure scripts will set
      a macro named ENABLE_EGL_X11 instead of USE_X11.
      
      USE_X11 will also select the Xlib typedef of EGLNativeDisplayType in
      eglplatform.h, and libglvnd does not need or want those.
      
      Enabling or disabling X11 support for EGL only affects platform
      detection in eglGetDisplay. The rest of libEGL is supposed to treat
      EGLNativeDisplayType as an opaque void* pointer.
      fa9ef397
    • Kyle Brenneman's avatar
      meson: Don't use x11 at all if the x11 feature is disabled. · 52747d70
      Kyle Brenneman authored
      Currently, building with -Dx11=disabled or -Dx11=auto gives identical
      results.
      
      In both cases, it only makes the x11 dependency optional: It'll still
      look for libx11, and if libx11 is available, then it'll still build with
      X11 support enabled.
      
      This changes the meson build so that if you pass -Dx11=disabled, then it
      will use a dummy dependency for x11, which will cause it to build as if
      libx11 was not available.
      52747d70
  16. 11 Oct, 2021 1 commit
  17. 05 Oct, 2021 2 commits
    • Kyle Brenneman's avatar
      Merge branch 'update-uthash' into 'master' · 185ca4b3
      Kyle Brenneman authored
      Update uthash to v2.3.0
      
      See merge request glvnd/libglvnd!256
      185ca4b3
    • Alexander Richardson's avatar
      Update uthash to v2.3.0 · b3a958fe
      Alexander Richardson authored
      
      
      Also delete files and folders that are only useful in the original
      repository. Updating uthash to this version allows compiling with
      CHERI LLVM where the current version of uthash (1.9.8) triggers a
      warning that our build infrastructure includes in -Werror by default:
      ```
      ../../libglvnd/src/util/winsys_dispatch.c:154:9: error: cast from provenance-free integer type to pointer type will give pointer that can not be dereferenced [-Werror,-Wcheri-capability-misuse]
      ../../libglvnd/include/lkdhash.h:86:5: note: expanded from macro 'LKDHASH_TEARDOWN'
          LKDHASH_TEARDOWN_2(_lh, _param, cur ## _ht,                   \
          ^
      ../../libglvnd/include/lkdhash.h:55:9: note: expanded from macro 'LKDHASH_TEARDOWN_2'
              HASH_DEL(_LH(_lockedhash), _cur);                                       \
              ^
      ../../libglvnd/src/util/uthash/src/uthash.h:271:5: note: expanded from macro 'HASH_DEL'
          HASH_DELETE(hh,head,delptr)
          ^
      ../../libglvnd/src/util/uthash/src/uthash.h:239:14: note: expanded from macro 'HASH_DELETE'
                  ((UT_hash_handle*)((ptrdiff_t)_hd_hh_del->next +                     \
                   ^
      ```
      
      Signed-off-by: Alexander Richardson's avatarAlex Richardson <Alexander.Richardson@cl.cam.ac.uk>
      b3a958fe
  18. 04 Oct, 2021 4 commits
  19. 30 Sep, 2021 1 commit