1. 26 Nov, 2021 1 commit
  2. 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
  3. 28 Oct, 2021 2 commits
  4. 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 !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
  5. 11 Oct, 2021 1 commit
  6. 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 !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
  7. 04 Oct, 2021 4 commits
  8. 30 Sep, 2021 2 commits
  9. 20 Sep, 2021 2 commits
  10. 17 Sep, 2021 1 commit
  11. 16 Sep, 2021 1 commit
  12. 13 Sep, 2021 8 commits
    • Kyle Brenneman's avatar
      CI: Test builds with TSD stubs and TLS variables · 4de6e673
      Kyle Brenneman authored
      Add builds to the CI script that use the TSD dispatch stubs, but use the
      TLS variable in u_current_tls.c for the dispatch table.
      
      That's the combination you'd get with musl or other non-glibc systems.
      4de6e673
    • Kyle Brenneman's avatar
      meson: Add an option to use the TSD dispatch stubs. · 79b012c6
      Kyle Brenneman authored
      Add a 'dispatch-tls' option. Setting the option to false will force it
      to use the TSD dispatch stubs for builds that would otherwise support
      the TLS stubs.
      
      This is mostly for test coverage, to make it easier to test builds that
      use the __thread variable (u_current_tls.c), but still use the TSD
      dispatch stubs.
      79b012c6
    • Kyle Brenneman's avatar
      meson: Change the 'tls' option to be boolean. · 94ea1327
      Kyle Brenneman authored
      Change the 'tls' option to be a boolean value instead of a feature.
      
      This still allows manually disabling TLS in builds that would otherwise
      support it, but it shouldn't be affected by meson's --auto-features
      option.
      94ea1327
    • Kyle Brenneman's avatar
      Merge branch 'tls-portability' into 'master' · f3ef4d4a
      Kyle Brenneman authored
      Use initial-exec TLS for glibc and FreeBSD only, auto-enable TLSDESC
      
      See merge request !249
      f3ef4d4a
    • Alex's avatar
      Auto-enable TLSDESC support · 280843d7
      Alex authored
      TLSDESC speeds up access to global-dynamic TLS. TLS asm stubs do not
      support TLSDESC, but all accesses are to initial-exec symbols anyways,
      so it is not necessary to handle that separately.
      280843d7
    • Alex's avatar
      Use initial-exec TLS for glibc and FreeBSD only · e87d51f0
      Alex authored
      It is not portable to use initial-exec TLS in dlopened libraries. glibc
      and FreeBSD allocate extra memory for extra initial-exec variables
      specifically for libGL, but other libcs including musl do not.
      
      Since TLS entry asm assumes IE TLS, use TSD asm in other cases. Update
      autoconf to match meson logic: enable ELF TLS if it is supported,
      regardless of which type of asm is being used.
      e87d51f0
    • Kyle Brenneman's avatar
      Merge branch 'master' into 'master' · 0dfeb77d
      Kyle Brenneman authored
      Update bin/symbols-check.py from mesa main
      
      See merge request !250
      0dfeb77d
    • Adrian Bunk's avatar
      01ef19ca
  13. 24 Aug, 2021 2 commits
  14. 23 Aug, 2021 1 commit
    • Kyle Brenneman's avatar
      Update the EGL headers. · b29f99d8
      Kyle Brenneman authored
      Updated the EGL headers and XML file to the Khronos repository, from commit
      745e9ad435ad10323d0f42da1f279ad3cae2dba3.
      
      Fixes #206
      b29f99d8