On Sat, Mar 22, 2014 at 11:45:35AM +0000, Emil Velikov wrote: > On 22/03/14 04:05, Jonathan Gray wrote: > > On Sat, Mar 22, 2014 at 12:10:26AM +0000, Emil Velikov wrote: > >> On 19/03/14 01:06, Jonathan Gray wrote: > >>> On Tue, Mar 18, 2014 at 07:56:21PM +0000, Emil Velikov wrote: > >>>> On 18/03/14 14:59, Jonathan Gray wrote: > >>>>> Signed-off-by: Jonathan Gray <j...@jsg.id.au> > >>>>> --- > >>>> Hi Jonathan > >>>> > >>>> While the summary covers what the patch does, the *ahem* commit message > >>>> fails to explain why it's needed. AFAICS this will cause some very nasty > >>>> breakage in some cases, which we want to avoid without a valid reason. > >>>> > >>>> -Emil > >>> > >>> The summary is the commit message though? > >>> > >>> Anyway without this I can't load dri drivers at all on OpenBSD > >>> with mesa 10.x. FreeBSD/NetBSD/Solaris/etc would also be broken > >>> which strikes me as rather serious breakage... > >>> > >> Kind of expecting to see a fraction of the above in the commit message, > >> maybe I was expecting too much. > >> > >> Wrt "will cause some very nasty breakage" I take that back, as I've > >> missed the commit that enforces libudev on linux, which handles those > >> lovely scenarios. > >> > >> FWIW For patches 1, 2 and 4. > >> Reviewed-by: Emil Velikov <emil.l.veli...@gmail.com> > > > > Thanks, I can send another patch with more explanation in the > > commit message if you like. > > > No problems, just as a future reference it would be nice :) > > >> > >> Btw, if you're looking for egl, wayland, opencl etc. similar fixes to > >> patch 3 may be needed. > > > > The sticking point for egl with non x11 platforms has been > > the udev dependency in gbm. Though it seems the loader changes have > > removed this, the configure script still wants libudev to configure gbm. > > > > The drm platform has the same issue issue with configure. > > > > libgbm and drm platform support in egl seem to build and install fine > > with the following patch for example: > > > Build is the smallest problem here. There is some deeper hacking > required, as the loader functions are executed before the > wayland/egl/gbm auth hooks are setup, let alone executed. I've never > been too deep into the respective codebases so I could be wrong. > > IMHO it would be better to hold off the following patch until we make > sure that the resulting binaries work. > > -Emil
Well that and two other small patches result in being able to use glamoregl with the intel driver here [ 1003.926] (II) Loading sub module "glamoregl" [ 1003.926] (II) LoadModule: "glamoregl" [ 1003.928] (II) Loading /usr/X11R6/lib/modules/libglamoregl.so [ 1003.929] (II) Module glamoregl: vendor="X.Org Foundation" [ 1003.929] compiled for 1.14.5, module version = 0.6.0 [ 1003.929] ABI class: X.Org ANSI C Emulation, version 0.4 [ 1003.929] (II) glamor: OpenGL accelerated X.org driver based. [ 1003.960] (II) glamor: EGL version 1.4 (DRI2): [ 1003.974] (II) intel(0): glamor detected, initialising egl layer. commit 92681e94efe1fa3b85df431d6ddda7bbda2e5314 Author: Jonathan Gray <j...@jsg.id.au> Date: Sat Mar 22 18:44:38 2014 +1100 configure: don't require libudev for gbm or egl drm/wayland After the loader changes libudev is no longer required for gbm or the egl drm/wayland platforms. Lets these build/run on OpenBSD. Signed-off-by: Jonathan Gray <j...@jsg.id.au> diff --git a/configure.ac b/configure.ac index 9c67a9b..47c315b 100644 --- a/configure.ac +++ b/configure.ac @@ -1133,10 +1133,6 @@ if test "x$enable_gbm" = xauto; then esac fi if test "x$enable_gbm" = xyes; then - if test x"$have_libudev" != xyes; then - AC_MSG_ERROR([gbm requires udev >= $LIBUDEV_REQUIRED]) - fi - if test "x$enable_dri" = xyes; then GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri" if test "x$enable_shared_glapi" = xno; then @@ -1145,7 +1141,7 @@ if test "x$enable_gbm" = xyes; then fi fi AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes) -GBM_PC_REQ_PRIV="libudev >= $LIBUDEV_REQUIRED" +GBM_PC_REQ_PRIV="" GBM_PC_LIB_PRIV="$DLOPEN_LIBS" AC_SUBST([GBM_PC_REQ_PRIV]) AC_SUBST([GBM_PC_LIB_PRIV]) @@ -1426,11 +1422,6 @@ for plat in $egl_platforms; do AC_MSG_ERROR([EGL platform '$plat' does not exist]) ;; esac - - case "$plat$have_libudev" in - waylandno|drmno) - AC_MSG_ERROR([cannot build $plat platform without udev >= $LIBUDEV_REQUIRED]) ;; - esac done # libEGL wants to default to the first platform specified in commit b5a6354509d02459a2bc04433075268fa855583c Author: Jonathan Gray <j...@jsg.id.au> Date: Sat Mar 22 18:35:37 2014 +1100 egl/dri2: don't require libudev to build drm/wayland platforms After the loader changes libudev is no longer required to build gbm or the egl drm/wayland platforms. Remove a libudev ifdef which allows the the drm egl driver to be loaded on OpenBSD. Signed-off-by: Jonathan Gray <j...@jsg.id.au> diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 8abe8ac..dc541ad 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -630,7 +630,6 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp) return dri2_initialize_x11(drv, disp); #endif -#ifdef HAVE_LIBUDEV #ifdef HAVE_DRM_PLATFORM case _EGL_PLATFORM_DRM: if (disp->Options.TestOnly) @@ -643,7 +642,6 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp) return EGL_TRUE; return dri2_initialize_wayland(drv, disp); #endif -#endif #ifdef HAVE_ANDROID_PLATFORM case _EGL_PLATFORM_ANDROID: if (disp->Options.TestOnly) commit b4556b175a7c8a76f1efdf6f07cca2094f6b5859 Author: Jonathan Gray <j...@jsg.id.au> Date: Sat Mar 22 18:31:12 2014 +1100 egl/dri2: use drm macros to construct device name Don't hardcode /dev/dri/card0 but instead use the drm macros which allows the correct /dev/drm0 device to be opened on OpenBSD. Signed-off-by: Jonathan Gray <j...@jsg.id.au> diff --git a/src/egl/drivers/dri2/platform_drm.c b/src/egl/drivers/dri2/platform_drm.c index 2f7edb9..a866e9a 100644 --- a/src/egl/drivers/dri2/platform_drm.c +++ b/src/egl/drivers/dri2/platform_drm.c @@ -481,6 +481,7 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp) struct gbm_device *gbm; int fd = -1; int i; + char buf[64]; loader_set_logger(_eglLog); @@ -491,8 +492,9 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp) disp->DriverData = (void *) dri2_dpy; gbm = disp->PlatformDisplay; + sprintf(buf, DRM_DEV_NAME, DRM_DIR_NAME, 0); if (gbm == NULL) { - fd = open("/dev/dri/card0", O_RDWR); + fd = open(buf, O_RDWR); dri2_dpy->own_device = 1; gbm = gbm_create_device(fd); if (gbm == NULL) _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev