egl: add EGL_platform_device support

Graphics / Mesa 3D Graphics Library / Mesa - Emil Velikov [gmail.com] - 5 June 2019 17:35 EDT

This new 'platform' is added by default with no guards.

It is effectively a copy of the surfaceless one, with updated function names and brand new probe function.

Due to the reuse, some of the ifdef HAVE_SURFACELESS_PLATFORM guards have been dropped.

A worthy mention are the changes in _egFindDisplay, since the original and dup'd fd are required, we make use of the plat_opt argument.

Note that no hacks for eglGetDisplay are added - the API works only with the eglGetPlatformDisplay* API.

v2:- s/_eglCompareDeviceDisplay/_eglSameDeviceDisplay/ (Eric)- let ^^ return bool (Eric)- fixup meson build, move files() further up (Eric)- copy from plat. surfaceless w/o the visual cleanups- close and free when destroying the dpy- sprinkle a few _eglDeviceSupports- split fd handling into separate function- use directly the render node if no FD is given (Mathias)

v3:- s/dpy/disp/g- drop swap_buffers* callbacks- drop loader_set_logger()- drop local define- re-introduce _eglGetDRMDeviceRenderNode()- EGL_WARN on ForceSoftware with HW device - continue using the HW device- bail out for "EGL_MESA_device_software" until it's fixed- wire-up the Android build

v4:- use new style _eglFindDisplay()- split hw vs sw code paths- don't close the internal fd (already handled in FiniDisplay())- make swrast work (bit hacky bit will do for now)- Android for real, drop autotools- Correct HW + LIBGL_ALWAYS_SOFTWARE check- use the dri2_create_drawable() helper

v5:- enhance comment around fd checks (Mathias)- rebase for dri2_init_surface() changes

Cc: Mathias Fröhlich

d6edccee8da egl: add EGL_platform_device support
docs/relnotes/19.2.0.html | 2 +-
src/egl/Android.mk | 1 +
src/egl/drivers/dri2/egl_dri2.c | 3 +
src/egl/drivers/dri2/egl_dri2.h | 13 +-
src/egl/drivers/dri2/platform_device.c | 435 +++++++++++++++++++++++++++++++++
src/egl/main/eglapi.c | 13 +-
src/egl/main/egldevice.c | 16 ++
src/egl/main/egldevice.h | 3 +
src/egl/main/egldisplay.c | 67 +++++
src/egl/main/egldisplay.h | 7 +-
src/egl/main/eglglobals.c | 1 +
src/egl/meson.build | 1 +
12 files changed, 550 insertions(+), 12 deletions(-)

Upstream: cgit.freedesktop.org


  • Share