[Midnightbsd-cvs] mports [24054] trunk/graphics/libdrm: update libdrm to 2.4.92

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Fri Aug 31 19:39:20 EDT 2018


Revision: 24054
          http://svnweb.midnightbsd.org/mports/?rev=24054
Author:   laffer1
Date:     2018-08-31 19:39:20 -0400 (Fri, 31 Aug 2018)
Log Message:
-----------
update libdrm to 2.4.92

Modified Paths:
--------------
    trunk/graphics/libdrm/Makefile
    trunk/graphics/libdrm/distinfo
    trunk/graphics/libdrm/files/patch-xf86drmMode.c
    trunk/graphics/libdrm/pkg-plist

Added Paths:
-----------
    trunk/graphics/libdrm/files/Makefile.am
    trunk/graphics/libdrm/files/configure.ac
    trunk/graphics/libdrm/files/extra-xf86drm.c
    trunk/graphics/libdrm/files/patch-Makefile.in
    trunk/graphics/libdrm/files/patch-config.h.in
    trunk/graphics/libdrm/files/patch-configure
    trunk/graphics/libdrm/files/patch-libkms_vmwgfx.c
    trunk/graphics/libdrm/files/patch-libsync.h
    trunk/graphics/libdrm/files/patch-xf86drm.c
    trunk/graphics/libdrm/files/patch-xf86drm.h

Modified: trunk/graphics/libdrm/Makefile
===================================================================
--- trunk/graphics/libdrm/Makefile	2018-08-31 23:05:26 UTC (rev 24053)
+++ trunk/graphics/libdrm/Makefile	2018-08-31 23:39:20 UTC (rev 24054)
@@ -1,7 +1,7 @@
 # $MidnightBSD$
 
 PORTNAME=	libdrm
-PORTVERSION=	2.4.60
+PORTVERSION=	2.4.92
 PORTEPOCH=	1
 CATEGORIES=	graphics x11
 MASTER_SITES=	http://dri.freedesktop.org/libdrm/
@@ -11,55 +11,63 @@
 
 LICENSE=	mit
 
-LIB_DEPENDS=	libpciaccess.so:${PORTSDIR}/devel/libpciaccess \
-		libpthread-stubs.so:${PORTSDIR}/devel/libpthread-stubs
+BUILD_DEPENDS=	${LOCALBASE}/libdata/pkgconfig/pthread-stubs.pc:devel/libpthread-stubs
+LIB_DEPENDS=	libpciaccess.so:devel/libpciaccess
 
 USES=		libtool pkgconfig tar:bzip2
 GNU_CONFIGURE=	yes
+CONFIGURE_TARGET=	${ARCH}-portbld-freebsd10.4
 USE_LDCONFIG=	yes
 INSTALL_TARGET=	install-strip
 
-OPTIONS_DEFINE=	MANPAGES
+OPTIONS_DEFINE=	MANPAGES TESTS
+OPTIONS_SUB=	yes
 
+TESTS_DESC=	Install test programs (which are always built)
+
 .if defined(PACKAGE_BUILDING)
 OPTIONS_DEFAULT+=	MANPAGES
 .endif
 
-USES+=		gmake
+MANPAGES_CONFIGURE_ENABLE=	manpages
+MANPAGES_BUILD_DEPENDS=	${LOCALBASE}/share/xsl/docbook/manpages/docbook.xsl:textproc/docbook-xsl
+MANPAGES_USE=		GNOME=libxslt:build
 
-.include <bsd.mport.options.mk>
+TESTS_CONFIGURE_ENABLE=	install-test-programs
 
-# KMS support in the kernel is only build on these archs, disable others
-.if ${ARCH} == "amd64" || ${ARCH} == "i386"
-CONFIGURE_ARGS+=--enable-libkms
-PLIST_SUB+=	KMS="" NOUVEAU=""
-.else
-CONFIGURE_ARGS+=--disable-libkms
-PLIST_SUB+=	KMS="@comment " NOUVEAU="@comment "
-.endif
+# avoid circular dependency in case cairo supports OpenGL (cairo->mesa-libs->libdrm->cairo)
+CONFIGURE_ARGS+=	--disable-cairo-tests
 
-.if ${PORT_OPTIONS:MMANPAGES}
-BUILD_DEPENDS+=	${LOCALBASE}/share/xsl/docbook/manpages/docbook.xsl:${PORTSDIR}/textproc/docbook-xsl
-USE_GNOME+=	libxslt:build
-PLIST_SUB+=	MAN=""
-.else
-CONFIGURE_ARGS+=--disable-manpages
-PLIST_SUB+=	MAN="@comment "
-.endif
+.include <bsd.mport.options.mk>
 
-CONFIGURE_ARGS+=--disable-vmwgfx
-
 .if ${ARCH} == amd64 || ${ARCH} == i386
+PLIST_SUB+=	ARM_DRIVERS="@comment "
 PLIST_SUB+=	INTEL_DRIVER=""
+PLIST_SUB+=	NOUVEAU_DRIVER=""
 PLIST_SUB+=	RADEON_DRIVERS=""
-.elif ${ARCH} == ia64 || ${ARCH} == powerpc || ${ARCH} == powerpc64
+.elif ${ARCH} == powerpc || ${ARCH} == powerpc64
+PLIST_SUB+=	ARM_DRIVERS="@comment "
 PLIST_SUB+=	INTEL_DRIVER="@comment "
+PLIST_SUB+=	NOUVEAU_DRIVER=""
 PLIST_SUB+=	RADEON_DRIVERS=""
+.elif ${ARCH} == aarch64 || ${ARCH} == armv6 || ${ARCH} == armv7
+PLIST_SUB+=	ARM_DRIVERS=""
+PLIST_SUB+=	INTEL_DRIVER="@comment "
+PLIST_SUB+=	NOUVEAU_DRIVER="@comment "
+PLIST_SUB+=	RADEON_DRIVERS="@comment "
 .else
+PLIST_SUB+=	ARM_DRIVERS="@comment "
 PLIST_SUB+=	INTEL_DRIVER="@comment "
+PLIST_SUB+=	NOUVEAU_DRIVER="@comment "
 PLIST_SUB+=	RADEON_DRIVERS="@comment "
 .endif
 
+# This variable is not for users. So use a non-default name, intended for
+# people working on DRM kernel module development.
+.if !defined(LIBDRM_SKIP_RETURN_PATCH)
+EXTRA_PATCHES+=	${FILESDIR}/extra-xf86drm.c
+.endif
+
 pre-patch:
 	@${REINPLACE_CMD} 's|{libdir}/pkgconfig|{prefix}/libdata/pkgconfig|g; \
 			   s,i?86|x86_64),i?86|amd64|x86_64),g' \

Modified: trunk/graphics/libdrm/distinfo
===================================================================
--- trunk/graphics/libdrm/distinfo	2018-08-31 23:05:26 UTC (rev 24053)
+++ trunk/graphics/libdrm/distinfo	2018-08-31 23:39:20 UTC (rev 24054)
@@ -1,2 +1,3 @@
-SHA256 (libdrm-2.4.60.tar.bz2) = 99575fc6c8e31f59193f5320fd4db7a5478e2641b5266147caab9aa875b59889
-SIZE (libdrm-2.4.60.tar.bz2) = 581786
+TIMESTAMP = 1535758662
+SHA256 (libdrm-2.4.92.tar.bz2) = e9e48fdb4de139dc4d9880aa1473158a16ff6aff63d14341367bd30a51ff39fa
+SIZE (libdrm-2.4.92.tar.bz2) = 821789

Added: trunk/graphics/libdrm/files/Makefile.am
===================================================================
--- trunk/graphics/libdrm/files/Makefile.am	                        (rev 0)
+++ trunk/graphics/libdrm/files/Makefile.am	2018-08-31 23:39:20 UTC (rev 24054)
@@ -0,0 +1,14 @@
+--- Makefile.am.orig	2016-12-13 03:45:20.000000000 +0100
++++ Makefile.am	2017-01-30 14:02:04.821902000 +0100
+@@ -115,9 +115,9 @@
+ libdrm_la_LTLIBRARIES = libdrm.la
+ libdrm_ladir = $(libdir)
+ libdrm_la_LDFLAGS = -version-number 2:4:0 -no-undefined
+-libdrm_la_LIBADD = @CLOCK_LIB@ -lm
++libdrm_la_LIBADD = @CLOCK_LIB@ -lm @LIBDEVQ_LIBS@
+ 
+-libdrm_la_CPPFLAGS = -I$(top_srcdir)/include/drm
++libdrm_la_CPPFLAGS = -I$(top_srcdir)/include/drm @LIBDEVQ_CFLAGS@
+ AM_CFLAGS = \
+ 	$(WARN_CFLAGS) \
+ 	$(VALGRIND_CFLAGS)


Property changes on: trunk/graphics/libdrm/files/Makefile.am
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+MidnightBSD=%H
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/graphics/libdrm/files/configure.ac
===================================================================
--- trunk/graphics/libdrm/files/configure.ac	                        (rev 0)
+++ trunk/graphics/libdrm/files/configure.ac	2018-08-31 23:39:20 UTC (rev 24054)
@@ -0,0 +1,39 @@
+--- configure.ac.orig	2017-01-28 02:15:16.000000000 +0100
++++ configure.ac	2017-01-30 14:00:14.452530000 +0100
+@@ -72,6 +72,11 @@
+                               [Enable support for using udev instead of mknod (default: disabled)])],
+               [UDEV=$enableval], [UDEV=no])
+ 
++AC_ARG_ENABLE([devq],
++              [AS_HELP_STRING([--enable-devq],
++                              [Enable support for using devq for device detection (default: disabled)])],
++              [DEVQ=$enableval], [DEVQ=no])
++
+ AC_ARG_ENABLE(libkms,
+ 	      AS_HELP_STRING([--disable-libkms],
+ 	      [Disable KMS mm abstraction library (default: auto, enabled on supported platforms)]),
+@@ -322,6 +327,10 @@
+ 	AC_DEFINE(UDEV, 1, [Have UDEV support])
+ fi
+ 
++if test "x$DEVQ" = xyes; then
++	AC_DEFINE(DEVQ, 1, [Have DEVQ support])
++fi
++
+ AC_CANONICAL_HOST
+ if test "x$LIBKMS" = xauto ; then
+ 	case $host_os in
+@@ -451,6 +460,13 @@
+ AC_MSG_RESULT([$CAIRO])
+ AM_CONDITIONAL(HAVE_CAIRO, [test "x$CAIRO" = xyes])
+ 
++# For FreeBSD support
++PKG_CHECK_MODULES([LIBDEVQ], [libdevq-1.0 >= 0.0.4], [HAVE_LIBDEVQ=yes], [HAVE_LIBDEVQ=no])
++if test "x$HAVE_LIBDEVQ" = xyes; then
++	AC_DEFINE(HAVE_LIBDEVQ, 1, [Have libdevq support])
++fi
++AM_CONDITIONAL(HAVE_LIBDEVQ, [test "x$HAVE_LIBDEVQ" = xyes])
++
+ # xsltproc for docbook manpages
+ AC_ARG_ENABLE([manpages],
+               AS_HELP_STRING([--enable-manpages], [enable manpages @<:@default=auto@:>@]),


Property changes on: trunk/graphics/libdrm/files/configure.ac
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/graphics/libdrm/files/extra-xf86drm.c
===================================================================
--- trunk/graphics/libdrm/files/extra-xf86drm.c	                        (rev 0)
+++ trunk/graphics/libdrm/files/extra-xf86drm.c	2018-08-31 23:39:20 UTC (rev 24054)
@@ -0,0 +1,19 @@
+Error code 512 is being leaked from kernel space. While it should be
+converted to either EINTR or EAGAIN in the kernel. Teach libdrm to do this
+for now. Newer kernel modules will have this fixed included.
+
+dragonfly fixed this issue in,
+http://gitweb.dragonflybsd.org/dragonfly.git/commit/b922632f623ee2cc2c1346bb3a6894a7756676aa
+which has been included since the 4.4 release.
+
+--- xf86drm.c.orig	2017-01-30 13:59:15.919081000 +0100
++++ xf86drm.c
+@@ -197,7 +197,7 @@ drmIoctl(int fd, unsigned long request, 
+ 
+     do {
+         ret = ioctl(fd, request, arg);
+-    } while (ret == -1 && (errno == EINTR || errno == EAGAIN));
++    } while (ret == -1 && (errno == EINTR || errno == EAGAIN || errno == 512));
+     return ret;
+ }
+ 


Property changes on: trunk/graphics/libdrm/files/extra-xf86drm.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/graphics/libdrm/files/patch-Makefile.in
===================================================================
--- trunk/graphics/libdrm/files/patch-Makefile.in	                        (rev 0)
+++ trunk/graphics/libdrm/files/patch-Makefile.in	2018-08-31 23:39:20 UTC (rev 24054)
@@ -0,0 +1,13 @@
+--- Makefile.in.orig	2017-01-28 02:00:33 UTC
++++ Makefile.in
+@@ -562,8 +562,8 @@ SUBDIRS = \
+ libdrm_la_LTLIBRARIES = libdrm.la
+ libdrm_ladir = $(libdir)
+ libdrm_la_LDFLAGS = -version-number 2:4:0 -no-undefined
+-libdrm_la_LIBADD = @CLOCK_LIB@ -lm
+-libdrm_la_CPPFLAGS = -I$(top_srcdir)/include/drm
++libdrm_la_LIBADD = @CLOCK_LIB@ -lm @LIBDEVQ_LIBS@
++libdrm_la_CPPFLAGS = -I$(top_srcdir)/include/drm @LIBDEVQ_CFLAGS@
+ AM_CFLAGS = \
+ 	$(WARN_CFLAGS) \
+ 	$(VALGRIND_CFLAGS)


Property changes on: trunk/graphics/libdrm/files/patch-Makefile.in
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/graphics/libdrm/files/patch-config.h.in
===================================================================
--- trunk/graphics/libdrm/files/patch-config.h.in	                        (rev 0)
+++ trunk/graphics/libdrm/files/patch-config.h.in	2018-08-31 23:39:20 UTC (rev 24054)
@@ -0,0 +1,22 @@
+--- config.h.in.orig	2017-01-28 02:00:33 UTC
++++ config.h.in
+@@ -8,6 +8,9 @@
+ /* Define to 1 if using `alloca.c'. */
+ #undef C_ALLOCA
+ 
++/* Have DEVQ support */
++#undef DEVQ
++
+ /* Define to 1 if you have `alloca', as a function or macro. */
+ #undef HAVE_ALLOCA
+ 
+@@ -51,6 +54,9 @@
+ /* Define to 1 if you have the <inttypes.h> header file. */
+ #undef HAVE_INTTYPES_H
+ 
++/* Have libdevq support */
++#undef HAVE_LIBDEVQ
++
+ /* Enable if your compiler supports the Intel __sync_* atomic primitives */
+ #undef HAVE_LIBDRM_ATOMIC_PRIMITIVES
+ 


Property changes on: trunk/graphics/libdrm/files/patch-config.h.in
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/graphics/libdrm/files/patch-configure
===================================================================
--- trunk/graphics/libdrm/files/patch-configure	                        (rev 0)
+++ trunk/graphics/libdrm/files/patch-configure	2018-08-31 23:39:20 UTC (rev 24054)
@@ -0,0 +1,182 @@
+--- configure.orig	2017-01-30 19:04:05 UTC
++++ configure
+@@ -646,6 +646,10 @@ HAVE_MANPAGES_STYLESHEET_TRUE
+ MANPAGES_STYLESHEET
+ BUILD_MANPAGES_FALSE
+ BUILD_MANPAGES_TRUE
++HAVE_LIBDEVQ_FALSE
++HAVE_LIBDEVQ_TRUE
++LIBDEVQ_LIBS
++LIBDEVQ_CFLAGS
+ HAVE_CAIRO_FALSE
+ HAVE_CAIRO_TRUE
+ CAIRO_LIBS
+@@ -838,6 +842,7 @@ with_gnu_ld
+ with_sysroot
+ enable_libtool_lock
+ enable_udev
++enable_devq
+ enable_libkms
+ enable_intel
+ enable_radeon
+@@ -877,6 +882,8 @@ CUNIT_CFLAGS
+ CUNIT_LIBS
+ CAIRO_CFLAGS
+ CAIRO_LIBS
++LIBDEVQ_CFLAGS
++LIBDEVQ_LIBS
+ VALGRIND_CFLAGS
+ VALGRIND_LIBS'
+ 
+@@ -1511,6 +1518,8 @@ Optional Features:
+   --disable-libtool-lock  avoid locking (might break parallel builds)
+   --enable-udev           Enable support for using udev instead of mknod
+                           (default: disabled)
++  --enable-devq           Enable support for using devq for device detection
++                          (default: disabled)
+   --disable-libkms        Disable KMS mm abstraction library (default: auto,
+                           enabled on supported platforms)
+   --disable-intel         Enable support for intel's KMS API (default: auto,
+@@ -1586,6 +1595,10 @@ Some influential environment variables:
+   CAIRO_CFLAGS
+               C compiler flags for CAIRO, overriding pkg-config
+   CAIRO_LIBS  linker flags for CAIRO, overriding pkg-config
++  LIBDEVQ_CFLAGS
++              C compiler flags for LIBDEVQ, overriding pkg-config
++  LIBDEVQ_LIBS
++              linker flags for LIBDEVQ, overriding pkg-config
+   VALGRIND_CFLAGS
+               C compiler flags for VALGRIND, overriding pkg-config
+   VALGRIND_LIBS
+@@ -13217,6 +13230,14 @@ else
+ fi
+ 
+ 
++# Check whether --enable-devq was given.
++if test "${enable_devq+set}" = set; then :
++  enableval=$enable_devq; DEVQ=$enableval
++else
++  DEVQ=no
++fi
++
++
+ # Check whether --enable-libkms was given.
+ if test "${enable_libkms+set}" = set; then :
+   enableval=$enable_libkms; LIBKMS=$enableval
+@@ -13873,6 +13894,12 @@ $as_echo "#define UDEV 1" >>confdefs.h
+ 
+ fi
+ 
++if test "x$DEVQ" = xyes; then
++
++$as_echo "#define DEVQ 1" >>confdefs.h
++
++fi
++
+ 
+ if test "x$LIBKMS" = xauto ; then
+ 	case $host_os in
+@@ -14331,6 +14358,92 @@ else
+ fi
+ 
+ 
++# For FreeBSD support
++
++pkg_failed=no
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBDEVQ" >&5
++$as_echo_n "checking for LIBDEVQ... " >&6; }
++
++if test -n "$LIBDEVQ_CFLAGS"; then
++    pkg_cv_LIBDEVQ_CFLAGS="$LIBDEVQ_CFLAGS"
++ elif test -n "$PKG_CONFIG"; then
++    if test -n "$PKG_CONFIG" && \
++    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libdevq-1.0 >= 0.0.4\""; } >&5
++  ($PKG_CONFIG --exists --print-errors "libdevq-1.0 >= 0.0.4") 2>&5
++  ac_status=$?
++  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++  test $ac_status = 0; }; then
++  pkg_cv_LIBDEVQ_CFLAGS=`$PKG_CONFIG --cflags "libdevq-1.0 >= 0.0.4" 2>/dev/null`
++		      test "x$?" != "x0" && pkg_failed=yes
++else
++  pkg_failed=yes
++fi
++ else
++    pkg_failed=untried
++fi
++if test -n "$LIBDEVQ_LIBS"; then
++    pkg_cv_LIBDEVQ_LIBS="$LIBDEVQ_LIBS"
++ elif test -n "$PKG_CONFIG"; then
++    if test -n "$PKG_CONFIG" && \
++    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libdevq-1.0 >= 0.0.4\""; } >&5
++  ($PKG_CONFIG --exists --print-errors "libdevq-1.0 >= 0.0.4") 2>&5
++  ac_status=$?
++  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
++  test $ac_status = 0; }; then
++  pkg_cv_LIBDEVQ_LIBS=`$PKG_CONFIG --libs "libdevq-1.0 >= 0.0.4" 2>/dev/null`
++		      test "x$?" != "x0" && pkg_failed=yes
++else
++  pkg_failed=yes
++fi
++ else
++    pkg_failed=untried
++fi
++
++
++
++if test $pkg_failed = yes; then
++   	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++
++if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
++        _pkg_short_errors_supported=yes
++else
++        _pkg_short_errors_supported=no
++fi
++        if test $_pkg_short_errors_supported = yes; then
++	        LIBDEVQ_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libdevq-1.0 >= 0.0.4" 2>&1`
++        else
++	        LIBDEVQ_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libdevq-1.0 >= 0.0.4" 2>&1`
++        fi
++	# Put the nasty error message in config.log where it belongs
++	echo "$LIBDEVQ_PKG_ERRORS" >&5
++
++	HAVE_LIBDEVQ=no
++elif test $pkg_failed = untried; then
++     	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++	HAVE_LIBDEVQ=no
++else
++	LIBDEVQ_CFLAGS=$pkg_cv_LIBDEVQ_CFLAGS
++	LIBDEVQ_LIBS=$pkg_cv_LIBDEVQ_LIBS
++        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++$as_echo "yes" >&6; }
++	HAVE_LIBDEVQ=yes
++fi
++if test "x$HAVE_LIBDEVQ" = xyes; then
++
++$as_echo "#define HAVE_LIBDEVQ 1" >>confdefs.h
++
++fi
++ if test "x$HAVE_LIBDEVQ" = xyes; then
++  HAVE_LIBDEVQ_TRUE=
++  HAVE_LIBDEVQ_FALSE='#'
++else
++  HAVE_LIBDEVQ_TRUE='#'
++  HAVE_LIBDEVQ_FALSE=
++fi
++
++
+ # xsltproc for docbook manpages
+ # Check whether --enable-manpages was given.
+ if test "${enable_manpages+set}" = set; then :
+@@ -14737,6 +14850,10 @@ if test -z "${HAVE_CAIRO_TRUE}" && test 
+   as_fn_error $? "conditional \"HAVE_CAIRO\" was never defined.
+ Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ fi
++if test -z "${HAVE_LIBDEVQ_TRUE}" && test -z "${HAVE_LIBDEVQ_FALSE}"; then
++  as_fn_error $? "conditional \"HAVE_LIBDEVQ\" was never defined.
++Usually this means the macro was only invoked conditionally." "$LINENO" 5
++fi
+ if test -z "${BUILD_MANPAGES_TRUE}" && test -z "${BUILD_MANPAGES_FALSE}"; then
+   as_fn_error $? "conditional \"BUILD_MANPAGES\" was never defined.
+ Usually this means the macro was only invoked conditionally." "$LINENO" 5


Property changes on: trunk/graphics/libdrm/files/patch-configure
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/graphics/libdrm/files/patch-libkms_vmwgfx.c
===================================================================
--- trunk/graphics/libdrm/files/patch-libkms_vmwgfx.c	                        (rev 0)
+++ trunk/graphics/libdrm/files/patch-libkms_vmwgfx.c	2018-08-31 23:39:20 UTC (rev 24054)
@@ -0,0 +1,27 @@
+# the defintion of ERESTART is behind a check for _KERNEL, but
+# defining that causes errno to not be defined. fortunately, there's
+# an alternative switch. unfortunately, those differ by platform and
+# _WANT_KERNEL_ERRNO is too recent to be part of any release, so just
+# define ERESTART if we still don't have it after including errno.h 
+#
+--- libkms/vmwgfx.c.orig	2018-05-09 22:26:03 UTC
++++ libkms/vmwgfx.c
+@@ -26,10 +26,18 @@
+  **************************************************************************/
+ 
+ 
++#if defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
++#define _WANT_KERNEL_ERRNO
++#elif defined(__DragonFly__)
++#define _KERNEL_STRUCTURES
++#endif
+ #include <errno.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include "internal.h"
++#ifndef ERESTART
++#define ERESTART (-1)
++#endif
+ 
+ #include "xf86drm.h"
+ #include "libdrm_macros.h"


Property changes on: trunk/graphics/libdrm/files/patch-libkms_vmwgfx.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/graphics/libdrm/files/patch-libsync.h
===================================================================
--- trunk/graphics/libdrm/files/patch-libsync.h	                        (rev 0)
+++ trunk/graphics/libdrm/files/patch-libsync.h	2018-08-31 23:39:20 UTC (rev 24054)
@@ -0,0 +1,14 @@
+# define ETIME as ETIMEOUT same as done in Mesa
+#
+--- libsync.h.orig	2017-04-14 23:29:46 UTC
++++ libsync.h
+@@ -35,6 +35,9 @@
+ #include <sys/ioctl.h>
+ #include <sys/poll.h>
+ #include <unistd.h>
++#ifndef ETIME
++#define ETIME ETIMEDOUT
++#endif
+ 
+ #if defined(__cplusplus)
+ extern "C" {


Property changes on: trunk/graphics/libdrm/files/patch-libsync.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/graphics/libdrm/files/patch-xf86drm.c
===================================================================
--- trunk/graphics/libdrm/files/patch-xf86drm.c	                        (rev 0)
+++ trunk/graphics/libdrm/files/patch-xf86drm.c	2018-08-31 23:39:20 UTC (rev 24054)
@@ -0,0 +1,802 @@
+--- xf86drm.c.orig	2018-05-13 08:59:08 UTC
++++ xf86drm.c
+@@ -46,6 +46,9 @@
+ #include <signal.h>
+ #include <time.h>
+ #include <sys/types.h>
++#ifdef HAVE_SYS_SYSCTL_H
++#include <sys/sysctl.h>
++#endif
+ #include <sys/stat.h>
+ #define stat_t struct stat
+ #include <sys/ioctl.h>
+@@ -59,6 +62,10 @@
+ #endif
+ #include <math.h>
+ 
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++#include <sys/pciio.h>
++#endif
++
+ /* Not all systems have MAP_FAILED defined */
+ #ifndef MAP_FAILED
+ #define MAP_FAILED ((void *)-1)
+@@ -69,18 +76,8 @@
+ 
+ #include "util_math.h"
+ 
+-#ifdef __OpenBSD__
+-#define DRM_PRIMARY_MINOR_NAME  "drm"
+-#define DRM_CONTROL_MINOR_NAME  "drmC"
+-#define DRM_RENDER_MINOR_NAME   "drmR"
+-#else
+-#define DRM_PRIMARY_MINOR_NAME  "card"
+-#define DRM_CONTROL_MINOR_NAME  "controlD"
+-#define DRM_RENDER_MINOR_NAME   "renderD"
+-#endif
+-
+ #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
+-#define DRM_MAJOR 145
++#define DRM_MAJOR 0	/* Major ID unused on systems with devfs */
+ #endif
+ 
+ #ifdef __NetBSD__
+@@ -177,7 +174,7 @@ void drmFree(void *pt)
+ }
+ 
+ /**
+- * Call ioctl, restarting if it is interupted
++ * Call ioctl, restarting if it is interrupted
+  */
+ int
+ drmIoctl(int fd, unsigned long request, void *arg)
+@@ -220,6 +217,89 @@ drmHashEntry *drmGetEntry(int fd)
+     return entry;
+ }
+ 
++static int drmGetMinorBase(int type)
++{
++    switch (type) {
++        case DRM_NODE_PRIMARY:
++        case DRM_NODE_CONTROL:
++        case DRM_NODE_RENDER:
++            return type << 6;
++        default:
++            return -1;
++    };
++}
++
++static int drmGetMinorType(int minor)
++{
++    if (minor < 0)
++        return -1;
++
++    int type = minor >> 6;
++    switch (type) {
++        case DRM_NODE_PRIMARY:
++        case DRM_NODE_CONTROL:
++        case DRM_NODE_RENDER:
++            return type;
++        default:
++            return -1;
++    }
++}
++
++#ifdef __linux__
++static const char *drmGetMinorName(int type)
++{
++    switch (type) {
++        case DRM_NODE_PRIMARY:
++            return DRM_PRIMARY_MINOR_NAME;
++        case DRM_NODE_CONTROL:
++            return DRM_CONTROL_MINOR_NAME;
++        case DRM_NODE_RENDER:
++            return DRM_RENDER_MINOR_NAME;
++        default:
++            return NULL;
++    }
++}
++#endif
++
++static const char *drmGetDeviceName(int type)
++{
++    switch (type) {
++        case DRM_NODE_PRIMARY:
++            return DRM_DEV_NAME;
++        case DRM_NODE_CONTROL:
++            return DRM_CONTROL_DEV_NAME;
++        case DRM_NODE_RENDER:
++            return DRM_RENDER_DEV_NAME;
++        default:
++            return NULL;
++    }
++}
++
++static int drmGetNodeNumber(const char *name)
++{
++    size_t name_len = strnlen(name, DRM_NODE_NAME_MAX);
++    while (name_len && isdigit(name[name_len - 1]))
++        --name_len;
++    return strtol(name + name_len, NULL, 10);
++}
++
++static int drmGetNodeType(const char *name)
++{
++    if (strncmp(name, DRM_PRIMARY_MINOR_NAME,
++                sizeof(DRM_PRIMARY_MINOR_NAME) - 1) == 0)
++        return DRM_NODE_PRIMARY;
++
++    if (strncmp(name, DRM_CONTROL_MINOR_NAME,
++                sizeof(DRM_CONTROL_MINOR_NAME ) - 1) == 0)
++        return DRM_NODE_CONTROL;
++
++    if (strncmp(name, DRM_RENDER_MINOR_NAME,
++                sizeof(DRM_RENDER_MINOR_NAME) - 1) == 0)
++        return DRM_NODE_RENDER;
++
++    return -1;
++}
++
+ /**
+  * Compare two busid strings
+  *
+@@ -287,7 +367,7 @@ static int drmMatchBusID(const char *id1, const char *
+  *
+  * \internal
+  * Checks for failure. If failure was caused by signal call chown again.
+- * If any other failure happened then it will output error mesage using
++ * If any other failure happened then it will output error message using
+  * drmMsg() call.
+  */
+ #if !UDEV
+@@ -324,8 +404,8 @@ static int chown_check_return(const char *path, uid_t 
+ static int drmOpenDevice(dev_t dev, int minor, int type)
+ {
+     stat_t          st;
+-    const char      *dev_name;
+-    char            buf[64];
++    const char      *dev_name = drmGetDeviceName(type);
++    char            buf[DRM_NODE_NAME_MAX];
+     int             fd;
+     mode_t          devmode = DRM_DEV_MODE, serv_mode;
+     gid_t           serv_group;
+@@ -335,21 +415,14 @@ static int drmOpenDevice(dev_t dev, int minor, int typ
+     gid_t           group   = DRM_DEV_GID;
+ #endif
+ 
+-    switch (type) {
+-    case DRM_NODE_PRIMARY:
+-        dev_name = DRM_DEV_NAME;
+-        break;
+-    case DRM_NODE_CONTROL:
+-        dev_name = DRM_CONTROL_DEV_NAME;
+-        break;
+-    case DRM_NODE_RENDER:
+-        dev_name = DRM_RENDER_DEV_NAME;
+-        break;
+-    default:
++    if (!dev_name)
+         return -EINVAL;
+-    };
+ 
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++    sprintf(buf, dev_name, DRM_DIR_NAME, minor + drmGetMinorBase(type));
++#else
+     sprintf(buf, dev_name, DRM_DIR_NAME, minor);
++#endif
+     drmMsg("drmOpenDevice: node name is %s\n", buf);
+ 
+     if (drm_server_info && drm_server_info->get_perms) {
+@@ -453,27 +526,20 @@ wait_for_udev:
+ static int drmOpenMinor(int minor, int create, int type)
+ {
+     int  fd;
+-    char buf[64];
+-    const char *dev_name;
++    char buf[DRM_NODE_NAME_MAX];
++    const char *dev_name = drmGetDeviceName(type);
+ 
+     if (create)
+         return drmOpenDevice(makedev(DRM_MAJOR, minor), minor, type);
+ 
+-    switch (type) {
+-    case DRM_NODE_PRIMARY:
+-        dev_name = DRM_DEV_NAME;
+-        break;
+-    case DRM_NODE_CONTROL:
+-        dev_name = DRM_CONTROL_DEV_NAME;
+-        break;
+-    case DRM_NODE_RENDER:
+-        dev_name = DRM_RENDER_DEV_NAME;
+-        break;
+-    default:
++    if (!dev_name)
+         return -EINVAL;
+-    };
+ 
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++    sprintf(buf, dev_name, DRM_DIR_NAME, minor + drmGetMinorBase(type));
++#else
+     sprintf(buf, dev_name, DRM_DIR_NAME, minor);
++#endif
+     if ((fd = open(buf, O_RDWR, 0)) >= 0)
+         return fd;
+     return -errno;
+@@ -514,51 +580,6 @@ int drmAvailable(void)
+     return retval;
+ }
+ 
+-static int drmGetMinorBase(int type)
+-{
+-    switch (type) {
+-    case DRM_NODE_PRIMARY:
+-        return 0;
+-    case DRM_NODE_CONTROL:
+-        return 64;
+-    case DRM_NODE_RENDER:
+-        return 128;
+-    default:
+-        return -1;
+-    };
+-}
+-
+-static int drmGetMinorType(int minor)
+-{
+-    int type = minor >> 6;
+-
+-    if (minor < 0)
+-        return -1;
+-
+-    switch (type) {
+-    case DRM_NODE_PRIMARY:
+-    case DRM_NODE_CONTROL:
+-    case DRM_NODE_RENDER:
+-        return type;
+-    default:
+-        return -1;
+-    }
+-}
+-
+-static const char *drmGetMinorName(int type)
+-{
+-    switch (type) {
+-    case DRM_NODE_PRIMARY:
+-        return DRM_PRIMARY_MINOR_NAME;
+-    case DRM_NODE_CONTROL:
+-        return DRM_CONTROL_MINOR_NAME;
+-    case DRM_NODE_RENDER:
+-        return DRM_RENDER_MINOR_NAME;
+-    default:
+-        return NULL;
+-    }
+-}
+-
+ /**
+  * Open the device by bus ID.
+  *
+@@ -2737,33 +2758,40 @@ int drmDropMaster(int fd)
+ 
+ char *drmGetDeviceNameFromFd(int fd)
+ {
+-    char name[128];
+-    struct stat sbuf;
+-    dev_t d;
+-    int i;
+-
+     /* The whole drmOpen thing is a fiasco and we need to find a way
+      * back to just using open(2).  For now, however, lets just make
+      * things worse with even more ad hoc directory walking code to
+      * discover the device file name. */
+ 
++    stat_t sbuf;
+     fstat(fd, &sbuf);
+-    d = sbuf.st_rdev;
++    dev_t d = sbuf.st_rdev;
+ 
+-    for (i = 0; i < DRM_MAX_MINOR; i++) {
++    for (int i = 0; i < DRM_MAX_MINOR; i++) {
++        char name[DRM_NODE_NAME_MAX];
+         snprintf(name, sizeof name, DRM_DEV_NAME, DRM_DIR_NAME, i);
+         if (stat(name, &sbuf) == 0 && sbuf.st_rdev == d)
+-            break;
++            return strdup(name);
+     }
+-    if (i == DRM_MAX_MINOR)
+-        return NULL;
+-
+-    return strdup(name);
++    return NULL;
+ }
+ 
+ int drmGetNodeTypeFromFd(int fd)
+ {
+-    struct stat sbuf;
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++    char *name = drmGetDeviceNameFromFd2(fd);
++    if (!name) {
++        errno = ENODEV;
++        return -1;
++    }
++
++    int type = drmGetNodeType(name);
++    free(name);
++    if (type < 0)
++        errno = ENODEV;
++    return type;
++#else
++    stat_t sbuf;
+     int maj, min, type;
+ 
+     if (fstat(fd, &sbuf))
+@@ -2781,6 +2809,7 @@ int drmGetNodeTypeFromFd(int fd)
+     if (type == -1)
+         errno = ENODEV;
+     return type;
++#endif
+ }
+ 
+ int drmPrimeHandleToFD(int fd, uint32_t handle, uint32_t flags, int *prime_fd)
+@@ -2820,7 +2849,7 @@ static char *drmGetMinorNameForFD(int fd, int type)
+ #ifdef __linux__
+     DIR *sysdir;
+     struct dirent *ent;
+-    struct stat sbuf;
++    stat_t sbuf;
+     const char *name = drmGetMinorName(type);
+     int len;
+     char dev_name[64], buf[64];
+@@ -2856,13 +2885,35 @@ static char *drmGetMinorNameForFD(int fd, int type)
+         }
+     }
+     return NULL;
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++    const char *dev_name = drmGetDeviceName(type);
++    if (!dev_name)
++        return NULL;
++
++    char *name = drmGetDeviceNameFromFd2(fd);
++    if (!name)
++        return NULL;
++
++    int oldnum = drmGetNodeNumber(name);
++    int oldtype = drmGetMinorType(oldnum);
++    if (oldtype < 0) {
++        free(name);
++        return NULL;
++    }
++
++    int newnum = oldnum - drmGetMinorBase(oldtype) + drmGetMinorBase(type);
++    snprintf(name, DRM_NODE_NAME_MAX, dev_name, DRM_DIR_NAME, newnum);
++    return name;
+ #else
+-    struct stat sbuf;
+-    char buf[PATH_MAX + 1];
+-    const char *dev_name;
++    stat_t sbuf;
++    char buf[DRM_NODE_NAME_MAX];
++    const char *dev_name = drmGetDeviceName(type);
+     unsigned int maj, min;
+     int n, base;
+ 
++    if (!dev_name)
++        return NULL;
++
+     if (fstat(fd, &sbuf))
+         return NULL;
+ 
+@@ -2872,20 +2923,6 @@ static char *drmGetMinorNameForFD(int fd, int type)
+     if (maj != DRM_MAJOR || !S_ISCHR(sbuf.st_mode))
+         return NULL;
+ 
+-    switch (type) {
+-    case DRM_NODE_PRIMARY:
+-        dev_name = DRM_DEV_NAME;
+-        break;
+-    case DRM_NODE_CONTROL:
+-        dev_name = DRM_CONTROL_DEV_NAME;
+-        break;
+-    case DRM_NODE_RENDER:
+-        dev_name = DRM_RENDER_DEV_NAME;
+-        break;
+-    default:
+-        return NULL;
+-    };
+-
+     base = drmGetMinorBase(type);
+     if (base < 0)
+         return NULL;
+@@ -2982,7 +3019,7 @@ static int drmParseSubsystemType(int maj, int min)
+         return DRM_BUS_HOST1X;
+ 
+     return -EINVAL;
+-#elif defined(__OpenBSD__)
++#elif defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
+     return DRM_BUS_PCI;
+ #else
+ #warning "Missing implementation of drmParseSubsystemType"
+@@ -2990,7 +3027,8 @@ static int drmParseSubsystemType(int maj, int min)
+ #endif
+ }
+ 
+-static int drmParsePciBusInfo(int maj, int min, drmPciBusInfoPtr info)
++static int drmParsePciBusInfo(const char *node, int node_type,
++                              int maj, int min, drmPciBusInfoPtr info)
+ {
+ #ifdef __linux__
+     unsigned int domain, bus, dev, func;
+@@ -3039,6 +3077,60 @@ static int drmParsePciBusInfo(int maj, int min, drmPci
+     info->func = pinfo.func;
+ 
+     return 0;
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++    /*
++     * Only the primary nodes can be mapped to hw.dri.%i via major/minor
++     * Determine the primary node by offset and use its major/minor pair
++     */
++    if (node_type != DRM_NODE_PRIMARY) {
++        char name[DRM_NODE_NAME_MAX];
++        snprintf(name, sizeof(name), DRM_DEV_NAME, DRM_DIR_NAME,
++                 drmGetNodeNumber(node) - drmGetMinorBase(node_type));
++
++        stat_t sbuf;
++        if (stat(name, &sbuf))
++            return -errno;
++
++        maj = major(sbuf.st_rdev);
++        min = minor(sbuf.st_rdev);
++    }
++    /*
++     * Major/minor appear after the driver name in the hw.dri.%i.name node
++     * Find the node with matching major/minor pair and parse the bus ID,
++     * which may be after the name or may be alone in hw.dri.%i.busid
++     */
++    #define bus_fmt "pci:%04x:%02x:%02x.%u"
++    #define name_fmt "%*s %x " bus_fmt
++    for (int i = 0; i < DRM_MAX_MINOR; ++i) {
++        char name[16], value[256];
++        size_t length = sizeof(value);
++        snprintf(name, sizeof(name), "hw.dri.%i.name", i);
++        if (sysctlbyname(name, value, &length, NULL, 0))
++            continue;
++
++        value[length] = '\0';
++        unsigned int rdev = 0, domain = 0, bus = 0, slot = 0, func = 0;
++        int vals = sscanf(value, name_fmt, &rdev, &domain, &bus, &slot, &func);
++
++	if (vals >= 1 && rdev == makedev(maj,min)) {
++            if (vals < 5) {
++                /* busid not in the name, try busid */
++                length = sizeof(value);
++                snprintf(name, sizeof(name), "hw.dri.%i.busid", i);
++                if (sysctlbyname(name, value, &length, NULL, 0))
++                    break;
++                value[length] = '\0';
++                if (sscanf(value, bus_fmt, &domain, &bus, &slot, &func) != 4)
++                    break;
++            }
++            info->domain = domain;
++            info->bus = bus;
++            info->dev = slot;
++            info->func = func;
++            return 0;
++        }
++    }
++    return -ENODEV;
+ #else
+ #warning "Missing implementation of drmParsePciBusInfo"
+     return -EINVAL;
+@@ -3073,32 +3165,6 @@ int drmDevicesEqual(drmDevicePtr a, drmDevicePtr b)
+     return 0;
+ }
+ 
+-static int drmGetNodeType(const char *name)
+-{
+-    if (strncmp(name, DRM_PRIMARY_MINOR_NAME,
+-        sizeof(DRM_PRIMARY_MINOR_NAME) - 1) == 0)
+-        return DRM_NODE_PRIMARY;
+-
+-    if (strncmp(name, DRM_CONTROL_MINOR_NAME,
+-        sizeof(DRM_CONTROL_MINOR_NAME ) - 1) == 0)
+-        return DRM_NODE_CONTROL;
+-
+-    if (strncmp(name, DRM_RENDER_MINOR_NAME,
+-        sizeof(DRM_RENDER_MINOR_NAME) - 1) == 0)
+-        return DRM_NODE_RENDER;
+-
+-    return -EINVAL;
+-}
+-
+-static int drmGetMaxNodeName(void)
+-{
+-    return sizeof(DRM_DIR_NAME) +
+-           MAX3(sizeof(DRM_PRIMARY_MINOR_NAME),
+-                sizeof(DRM_CONTROL_MINOR_NAME),
+-                sizeof(DRM_RENDER_MINOR_NAME)) +
+-           3 /* length of the node number */;
+-}
+-
+ #ifdef __linux__
+ static int parse_separate_sysfs_files(int maj, int min,
+                                       drmPciDeviceInfoPtr device,
+@@ -3168,6 +3234,7 @@ static int parse_config_sysfs_file(int maj, int min,
+ #endif
+ 
+ static int drmParsePciDeviceInfo(int maj, int min,
++                                 drmPciBusInfoPtr info,
+                                  drmPciDeviceInfoPtr device,
+                                  uint32_t flags)
+ {
+@@ -3204,6 +3271,43 @@ static int drmParsePciDeviceInfo(int maj, int min,
+     device->subdevice_id = pinfo.subdevice_id;
+ 
+     return 0;
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++    struct pci_conf_io pc;
++    struct pci_match_conf patterns[1];
++    struct pci_conf results[1];
++
++    int fd = open("/dev/pci", O_RDONLY, 0);
++    if (fd < 0)
++        return -errno;
++
++    bzero(&patterns, sizeof(patterns));
++    patterns[0].pc_sel.pc_domain = info->domain;
++    patterns[0].pc_sel.pc_bus = info->bus;
++    patterns[0].pc_sel.pc_dev = info->dev;
++    patterns[0].pc_sel.pc_func = info->func;
++    patterns[0].flags = PCI_GETCONF_MATCH_DOMAIN | PCI_GETCONF_MATCH_BUS
++                      | PCI_GETCONF_MATCH_DEV | PCI_GETCONF_MATCH_FUNC;
++    bzero(&pc, sizeof(struct pci_conf_io));
++    pc.num_patterns = 1;
++    pc.pat_buf_len = sizeof(patterns);
++    pc.patterns = patterns;
++    pc.match_buf_len = sizeof(results);
++    pc.matches = results;
++
++    if (ioctl(fd, PCIOCGETCONF, &pc) || pc.status == PCI_GETCONF_ERROR) {
++        int error = errno;
++        close(fd);
++        return -error;
++    }
++    close(fd);
++
++    device->vendor_id = results[0].pc_vendor;
++    device->device_id = results[0].pc_device;
++    device->subvendor_id = results[0].pc_subvendor;
++    device->subdevice_id = results[0].pc_subdevice;
++    device->revision_id = results[0].pc_revid;
++
++    return 0;
+ #else
+ #warning "Missing implementation of drmParsePciDeviceInfo"
+     return -EINVAL;
+@@ -3284,7 +3388,7 @@ static drmDevicePtr drmDeviceAlloc(unsigned int type, 
+     unsigned int i;
+     char *ptr;
+ 
+-    max_node_length = ALIGN(drmGetMaxNodeName(), sizeof(void *));
++    max_node_length = ALIGN(DRM_NODE_NAME_MAX, sizeof(void *));
+     extra = DRM_NODE_MAX * (sizeof(void *) + max_node_length);
+ 
+     size = sizeof(*device) + extra + bus_size + device_size;
+@@ -3330,7 +3434,7 @@ static int drmProcessPciDevice(drmDevicePtr *device,
+ 
+     dev->businfo.pci = (drmPciBusInfoPtr)addr;
+ 
+-    ret = drmParsePciBusInfo(maj, min, dev->businfo.pci);
++    ret = drmParsePciBusInfo(node, node_type, maj, min, dev->businfo.pci);
+     if (ret)
+         goto free_device;
+ 
+@@ -3339,7 +3443,7 @@ static int drmProcessPciDevice(drmDevicePtr *device,
+         addr += sizeof(drmPciBusInfo);
+         dev->deviceinfo.pci = (drmPciDeviceInfoPtr)addr;
+ 
+-        ret = drmParsePciDeviceInfo(maj, min, dev->deviceinfo.pci, flags);
++        ret = drmParsePciDeviceInfo(maj, min, dev->businfo.pci, dev->deviceinfo.pci, flags);
+         if (ret)
+             goto free_device;
+     }
+@@ -3689,7 +3793,7 @@ static void drmFoldDuplicatedDevices(drmDevicePtr loca
+                 local_devices[i]->available_nodes |= local_devices[j]->available_nodes;
+                 node_type = log2(local_devices[j]->available_nodes);
+                 memcpy(local_devices[i]->nodes[node_type],
+-                       local_devices[j]->nodes[node_type], drmGetMaxNodeName());
++                       local_devices[j]->nodes[node_type], DRM_NODE_NAME_MAX);
+                 drmFreeDevice(&local_devices[j]);
+             }
+         }
+@@ -3707,7 +3811,7 @@ drm_device_validate_flags(uint32_t flags)
+  * Get information about the opened drm device
+  *
+  * \param fd file descriptor of the drm device
+- * \param flags feature/behaviour bitmask
++ * \param flags feature/behavior bitmask
+  * \param device the address of a drmDevicePtr where the information
+  *               will be allocated in stored
+  *
+@@ -3725,8 +3829,8 @@ int drmGetDevice2(int fd, uint32_t flags, drmDevicePtr
+      * Avoid stat'ing all of /dev needlessly by implementing this custom path.
+      */
+     drmDevicePtr     d;
+-    struct stat      sbuf;
+-    char             node[PATH_MAX + 1];
++    stat_t           sbuf;
++    char             node[DRM_NODE_NAME_MAX];
+     const char      *dev_name;
+     int              node_type, subsystem_type;
+     int              maj, min, n, ret, base;
+@@ -3747,26 +3851,16 @@ int drmGetDevice2(int fd, uint32_t flags, drmDevicePtr
+     if (node_type == -1)
+         return -ENODEV;
+ 
+-    switch (node_type) {
+-    case DRM_NODE_PRIMARY:
+-        dev_name = DRM_DEV_NAME;
+-        break;
+-    case DRM_NODE_CONTROL:
+-        dev_name = DRM_CONTROL_DEV_NAME;
+-        break;
+-    case DRM_NODE_RENDER:
+-        dev_name = DRM_RENDER_DEV_NAME;
+-        break;
+-    default:
++    dev_name = drmGetDeviceName(node_type);
++    if (!dev_name)
+         return -EINVAL;
+-    };
+ 
+     base = drmGetMinorBase(node_type);
+     if (base < 0)
+         return -EINVAL;
+ 
+-    n = snprintf(node, PATH_MAX, dev_name, DRM_DIR_NAME, min - base);
+-    if (n == -1 || n >= PATH_MAX)
++    n = snprintf(node, sizeof(node), dev_name, DRM_DIR_NAME, min - base);
++    if (n == -1 || n >= sizeof(node))
+       return -errno;
+     if (stat(node, &sbuf))
+         return -EINVAL;
+@@ -3787,8 +3881,8 @@ int drmGetDevice2(int fd, uint32_t flags, drmDevicePtr
+     drmDevicePtr d;
+     DIR *sysdir;
+     struct dirent *dent;
+-    struct stat sbuf;
+-    char node[PATH_MAX + 1];
++    stat_t sbuf;
++    char node[DRM_NODE_NAME_MAX];
+     int node_type, subsystem_type;
+     int maj, min;
+     int ret, i, node_count;
+@@ -3808,7 +3902,7 @@ int drmGetDevice2(int fd, uint32_t flags, drmDevicePtr
+     maj = major(sbuf.st_rdev);
+     min = minor(sbuf.st_rdev);
+ 
+-    if (maj != DRM_MAJOR || !S_ISCHR(sbuf.st_mode))
++    if ((DRM_MAJOR && maj != DRM_MAJOR) || !S_ISCHR(sbuf.st_mode))
+         return -EINVAL;
+ 
+     subsystem_type = drmParseSubsystemType(maj, min);
+@@ -3829,14 +3923,14 @@ int drmGetDevice2(int fd, uint32_t flags, drmDevicePtr
+         if (node_type < 0)
+             continue;
+ 
+-        snprintf(node, PATH_MAX, "%s/%s", DRM_DIR_NAME, dent->d_name);
++        snprintf(node, sizeof(node), "%s/%s", DRM_DIR_NAME, dent->d_name);
+         if (stat(node, &sbuf))
+             continue;
+ 
+         maj = major(sbuf.st_rdev);
+         min = minor(sbuf.st_rdev);
+ 
+-        if (maj != DRM_MAJOR || !S_ISCHR(sbuf.st_mode))
++        if ((DRM_MAJOR && maj != DRM_MAJOR) || !S_ISCHR(sbuf.st_mode))
+             continue;
+ 
+         if (drmParseSubsystemType(maj, min) != subsystem_type)
+@@ -3934,7 +4028,7 @@ int drmGetDevice(int fd, drmDevicePtr *device)
+ /**
+  * Get drm devices on the system
+  *
+- * \param flags feature/behaviour bitmask
++ * \param flags feature/behavior bitmask
+  * \param devices the array of devices with drmDevicePtr elements
+  *                can be NULL to get the device number first
+  * \param max_devices the maximum number of devices for the array
+@@ -3953,8 +4047,8 @@ int drmGetDevices2(uint32_t flags, drmDevicePtr device
+     drmDevicePtr device;
+     DIR *sysdir;
+     struct dirent *dent;
+-    struct stat sbuf;
+-    char node[PATH_MAX + 1];
++    stat_t sbuf;
++    char node[DRM_NODE_NAME_MAX];
+     int node_type, subsystem_type;
+     int maj, min;
+     int ret, i, node_count, device_count;
+@@ -3979,14 +4073,14 @@ int drmGetDevices2(uint32_t flags, drmDevicePtr device
+         if (node_type < 0)
+             continue;
+ 
+-        snprintf(node, PATH_MAX, "%s/%s", DRM_DIR_NAME, dent->d_name);
++        snprintf(node, sizeof(node), "%s/%s", DRM_DIR_NAME, dent->d_name);
+         if (stat(node, &sbuf))
+             continue;
+ 
+         maj = major(sbuf.st_rdev);
+         min = minor(sbuf.st_rdev);
+ 
+-        if (maj != DRM_MAJOR || !S_ISCHR(sbuf.st_mode))
++        if ((DRM_MAJOR && maj != DRM_MAJOR) || !S_ISCHR(sbuf.st_mode))
+             continue;
+ 
+         subsystem_type = drmParseSubsystemType(maj, min);
+@@ -4094,7 +4188,7 @@ int drmGetDevices(drmDevicePtr devices[], int max_devi
+ char *drmGetDeviceNameFromFd2(int fd)
+ {
+ #ifdef __linux__
+-    struct stat sbuf;
++    stat_t sbuf;
+     char path[PATH_MAX + 1], *value;
+     unsigned int maj, min;
+ 
+@@ -4117,9 +4211,26 @@ char *drmGetDeviceNameFromFd2(int fd)
+     free(value);
+ 
+     return strdup(path);
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++    stat_t sbuf;
++    if (fstat(fd, &sbuf))
++        return NULL;
++
++    dev_t rdev = sbuf.st_rdev;
++    /* minor numbers don't depend on node name suffix, search for a match */
++    for (int i = 0; i < DRM_MAX_MINOR; ++i) {
++        char node[DRM_NODE_NAME_MAX];
++        for (int j = 0; j < DRM_NODE_MAX; ++j) {
++            snprintf(node, sizeof(node), drmGetDeviceName(j),
++                     DRM_DIR_NAME, drmGetMinorBase(j) + i);
++            if (stat(node, &sbuf) == 0 && sbuf.st_rdev == rdev)
++                return strdup(node);
++        }
++    }
++    return NULL;
+ #else
+-    struct stat      sbuf;
+-    char             node[PATH_MAX + 1];
++    stat_t           sbuf;
++    char             node[DRM_NODE_NAME_MAX];
+     const char      *dev_name;
+     int              node_type;
+     int              maj, min, n, base;
+@@ -4137,26 +4248,16 @@ char *drmGetDeviceNameFromFd2(int fd)
+     if (node_type == -1)
+         return NULL;
+ 
+-    switch (node_type) {
+-    case DRM_NODE_PRIMARY:
+-        dev_name = DRM_DEV_NAME;
+-        break;
+-    case DRM_NODE_CONTROL:
+-        dev_name = DRM_CONTROL_DEV_NAME;
+-        break;
+-    case DRM_NODE_RENDER:
+-        dev_name = DRM_RENDER_DEV_NAME;
+-        break;
+-    default:
++    dev_name = drmGetDeviceName(node_type);
++    if (!dev_name)
+         return NULL;
+-    };
+ 
+     base = drmGetMinorBase(node_type);
+     if (base < 0)
+         return NULL;
+ 
+-    n = snprintf(node, PATH_MAX, dev_name, DRM_DIR_NAME, min - base);
+-    if (n == -1 || n >= PATH_MAX)
++    n = snprintf(node, sizeof(node), dev_name, DRM_DIR_NAME, min - base);
++    if (n == -1 || n >= sizeof(node))
+       return NULL;
+ 
+     return strdup(node);


Property changes on: trunk/graphics/libdrm/files/patch-xf86drm.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: trunk/graphics/libdrm/files/patch-xf86drm.h
===================================================================
--- trunk/graphics/libdrm/files/patch-xf86drm.h	                        (rev 0)
+++ trunk/graphics/libdrm/files/patch-xf86drm.h	2018-08-31 23:39:20 UTC (rev 24054)
@@ -0,0 +1,36 @@
+--- xf86drm.h.orig	2018-03-05 21:06:45 UTC
++++ xf86drm.h
+@@ -78,16 +78,26 @@ extern "C" {
+ 
+ #ifdef __OpenBSD__
+ #define DRM_DIR_NAME  "/dev"
+-#define DRM_DEV_NAME  "%s/drm%d"
+-#define DRM_CONTROL_DEV_NAME  "%s/drmC%d"
+-#define DRM_RENDER_DEV_NAME  "%s/drmR%d"
++#define DRM_PRIMARY_MINOR_NAME  "drm"
++#define DRM_CONTROL_MINOR_NAME  "drmC"
++#define DRM_RENDER_MINOR_NAME   "drmR"
+ #else
+ #define DRM_DIR_NAME  "/dev/dri"
+-#define DRM_DEV_NAME  "%s/card%d"
+-#define DRM_CONTROL_DEV_NAME  "%s/controlD%d"
+-#define DRM_RENDER_DEV_NAME  "%s/renderD%d"
+-#define DRM_PROC_NAME "/proc/dri/" /* For backward Linux compatibility */
++#define DRM_PRIMARY_MINOR_NAME  "card"
++#define DRM_CONTROL_MINOR_NAME  "controlD"
++#define DRM_RENDER_MINOR_NAME   "renderD"
+ #endif
++
++#define DRM_DEV_NAME  "%s/" DRM_PRIMARY_MINOR_NAME "%d"
++#define DRM_CONTROL_DEV_NAME  "%s/" DRM_CONTROL_MINOR_NAME "%d"
++#define DRM_RENDER_DEV_NAME  "%s/" DRM_RENDER_MINOR_NAME "%d"
++
++#define DRM_NODE_NAME_MAX                   \
++    (sizeof(DRM_DIR_NAME) +                 \
++     MAX3(sizeof(DRM_PRIMARY_MINOR_NAME),   \
++         sizeof(DRM_CONTROL_MINOR_NAME),    \
++         sizeof(DRM_RENDER_MINOR_NAME))     \
++    + 3) /* length of the node number */
+ 
+ #define DRM_ERR_NO_DEVICE  (-1001)
+ #define DRM_ERR_NO_ACCESS  (-1002)


Property changes on: trunk/graphics/libdrm/files/patch-xf86drm.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Modified: trunk/graphics/libdrm/files/patch-xf86drmMode.c
===================================================================
--- trunk/graphics/libdrm/files/patch-xf86drmMode.c	2018-08-31 23:05:26 UTC (rev 24053)
+++ trunk/graphics/libdrm/files/patch-xf86drmMode.c	2018-08-31 23:39:20 UTC (rev 24054)
@@ -1,19 +1,40 @@
-Disable checking for hw.dri.%d.modesetting.
-This sysctl is only available if a KMS module is loaded. But the libdrm
-check happens before X got a chance of loading the KMS module.
-
---- xf86drmMode.c.orig	2014-08-27 20:04:46.000000000 +0200
-+++ xf86drmMode.c	2014-10-18 15:12:02.586937600 +0200
-@@ -774,38 +774,7 @@
+--- xf86drmMode.c.orig	2018-05-13 10:01:15 UTC
++++ xf86drmMode.c
+@@ -43,6 +43,7 @@
+ #include <stdlib.h>
+ #include <sys/ioctl.h>
+ #ifdef HAVE_SYS_SYSCTL_H
++#include <sys/types.h>
+ #include <sys/sysctl.h>
+ #endif
+ #include <stdio.h>
+@@ -792,41 +793,59 @@ int drmCheckModesettingSupported(const char *busid)
+ 	closedir(sysdir);
  	if (found)
  		return 0;
- #elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
+-#elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
 -	char kbusid[1024], sbusid[1024];
 -	char oid[128];
 -	int domain, bus, dev, func;
 -	int i, modesetting, ret;
 -	size_t len;
--
++#elif defined (__FreeBSD__) || defined (__FreeBSD_kernel__) || defined (__DragonFly__)
++	#define bus_fmt "pci:%04x:%02x:%02x.%u"
++	#define name_fmt "%*s %*s " bus_fmt
++	unsigned int d1 = 0, b1 = 0, s1 = 0, f1 = 0;
++	if (sscanf(busid, bus_fmt, &d1, &b1, &s1, &f1) != 4)
++                return -EINVAL;
++	/*
++	 * hw.dri.%i.bus is not always present and hw.dri.%i.name does not
++	 * always contain the busid, so try both for best chance of success
++	 */
++	for (int i = 0; i < DRM_MAX_MINOR; ++i) {
++		char name[22], value[256];
++		size_t length = sizeof(value);
++		snprintf(name, sizeof(name), "hw.dri.%i.name", i);
++		if (sysctlbyname(name, value, &length, NULL, 0))
++			continue;
+ 
 -	ret = sscanf(busid, "pci:%04x:%02x:%02x.%d", &domain, &bus, &dev,
 -	    &func);
 -	if (ret != 4)
@@ -20,7 +41,15 @@
 -		return -EINVAL;
 -	snprintf(kbusid, sizeof(kbusid), "pci:%04x:%02x:%02x.%d", domain, bus,
 -	    dev, func);
--
++		value[length] = '\0';
++		unsigned int d2 = 0, b2 = 0, s2 = 0, f2 = 0;
++		switch (sscanf(value, name_fmt, &d2, &b2, &s2, &f2)) {
++		case 0: /* busid not in the name, try busid */
++			length = sizeof(value);
++			snprintf(name, sizeof(name), "hw.dri.%i.busid", i);
++			if (sysctlbyname(name, value, &length, NULL, 0))
++				continue;
+ 
 -	/* How many GPUs do we expect in the machine ? */
 -	for (i = 0; i < 16; i++) {
 -		snprintf(oid, sizeof(oid), "hw.dri.%d.busid", i);
@@ -28,9 +57,33 @@
 -		ret = sysctlbyname(oid, sbusid, &len, NULL, 0);
 -		if (ret == -1) {
 -			if (errno == ENOENT)
--				continue;
++			value[length] = '\0';
++			if (sscanf(value, bus_fmt, &d2, &b2, &s2, &f2) != 4)
+ 				continue;
 -			return -EINVAL;
--		}
++			/* fall through after parsing busid */
++
++		case 4: /* if we jumped here then busid was in the name */ 
++			if (d1 == d2 && b1 == b2 && s1 == s2 && f1 == f2) {
++			/*
++			 * Confirm the drm driver for this device supports KMS,
++			 * except on DragonFly where all the drm drivers do so
++			 * but only hw.dri.0.modesetting is present
++			 */ 
++			#ifndef __DragonFly__
++				int modesetting = 0;
++				length = sizeof(modesetting);
++				snprintf(name, sizeof(name), "hw.dri.%i.modesetting", i);
++				if (sysctlbyname(name, &modesetting, &length, NULL, 0)
++				 || length != sizeof(modesetting) || !modesetting)
++					return -ENOSYS;
++				else
++			#endif
++					return 0;
++			}
++		default:
++			break;
+ 		}
 -		if (strcmp(sbusid, kbusid) != 0)
 -			continue;
 -		snprintf(oid, sizeof(oid), "hw.dri.%d.modesetting", i);
@@ -39,8 +92,9 @@
 -		if (ret == -1 || len != sizeof(modesetting))
 -			return -EINVAL;
 -		return (modesetting ? 0 : -ENOSYS);
--	}
-+	return 0;
- #elif defined(__DragonFly__)
- 	return 0;
- #endif
+ 	}
+-#elif defined(__DragonFly__)
+-	return 0;
+ #elif defined(__OpenBSD__)
+ 	int	fd;
+ 	struct drm_mode_card_res res;

Modified: trunk/graphics/libdrm/pkg-plist
===================================================================
--- trunk/graphics/libdrm/pkg-plist	2018-08-31 23:05:26 UTC (rev 24053)
+++ trunk/graphics/libdrm/pkg-plist	2018-08-31 23:39:20 UTC (rev 24054)
@@ -1,3 +1,14 @@
+%%TESTS%%bin/kms-steal-crtc
+%%TESTS%%bin/kms-universal-planes
+%%TESTS%%bin/kmstest
+%%TESTS%%bin/modeprint
+%%TESTS%%bin/modetest
+%%TESTS%%bin/proptest
+%%TESTS%%bin/vbltest
+%%ARM_DRIVERS%%include/freedreno/freedreno_drmif.h
+%%ARM_DRIVERS%%include/freedreno/freedreno_ringbuffer.h
+%%RADEON_DRIVERS%%include/libdrm/amdgpu.h
+%%RADEON_DRIVERS%%include/libdrm/amdgpu_drm.h
 include/libdrm/drm.h
 include/libdrm/drm_fourcc.h
 include/libdrm/drm_mode.h
@@ -8,7 +19,14 @@
 %%INTEL_DRIVER%%include/libdrm/intel_debug.h
 include/libdrm/mach64_drm.h
 include/libdrm/mga_drm.h
-%%NOUVEAU%%include/libdrm/nouveau.h
+%%NOUVEAU_DRIVER%%include/libdrm/nouveau/nouveau.h
+%%NOUVEAU_DRIVER%%include/libdrm/nouveau/nvif/cl0080.h
+%%NOUVEAU_DRIVER%%include/libdrm/nouveau/nvif/cl9097.h
+%%NOUVEAU_DRIVER%%include/libdrm/nouveau/nvif/class.h
+%%NOUVEAU_DRIVER%%include/libdrm/nouveau/nvif/if0002.h
+%%NOUVEAU_DRIVER%%include/libdrm/nouveau/nvif/if0003.h
+%%NOUVEAU_DRIVER%%include/libdrm/nouveau/nvif/ioctl.h
+%%NOUVEAU_DRIVER%%include/libdrm/nouveau/nvif/unpack.h
 include/libdrm/nouveau_drm.h
 include/libdrm/qxl_drm.h
 include/libdrm/r128_drm.h
@@ -24,36 +42,52 @@
 include/libdrm/savage_drm.h
 include/libdrm/sis_drm.h
 include/libdrm/tegra_drm.h
+include/libdrm/vc4_drm.h
+%%ARM_DRIVERS%%include/libdrm/vc4_packet.h
+%%ARM_DRIVERS%%include/libdrm/vc4_qpu_defines.h
 include/libdrm/via_drm.h
-%%KMS%%include/libkms/libkms.h
+include/libdrm/virtgpu_drm.h
+include/libdrm/vmwgfx_drm.h
+include/libkms/libkms.h
+include/libsync.h
 include/xf86drm.h
 include/xf86drmMode.h
 lib/libdrm.so
 lib/libdrm.so.2
 lib/libdrm.so.2.4.0
+%%RADEON_DRIVERS%%lib/libdrm_amdgpu.so
+%%RADEON_DRIVERS%%lib/libdrm_amdgpu.so.1
+%%RADEON_DRIVERS%%lib/libdrm_amdgpu.so.1.0.0
+%%ARM_DRIVERS%%lib/libdrm_freedreno.so
+%%ARM_DRIVERS%%lib/libdrm_freedreno.so.1
+%%ARM_DRIVERS%%lib/libdrm_freedreno.so.1.0.0
 %%INTEL_DRIVER%%lib/libdrm_intel.so
 %%INTEL_DRIVER%%lib/libdrm_intel.so.1
 %%INTEL_DRIVER%%lib/libdrm_intel.so.1.0.0
-%%NOUVEAU%%lib/libdrm_nouveau.so
-%%NOUVEAU%%lib/libdrm_nouveau.so.2
-%%NOUVEAU%%lib/libdrm_nouveau.so.2.0.0
+%%NOUVEAU_DRIVER%%lib/libdrm_nouveau.so
+%%NOUVEAU_DRIVER%%lib/libdrm_nouveau.so.2
+%%NOUVEAU_DRIVER%%lib/libdrm_nouveau.so.2.0.0
 %%RADEON_DRIVERS%%lib/libdrm_radeon.so
 %%RADEON_DRIVERS%%lib/libdrm_radeon.so.1
 %%RADEON_DRIVERS%%lib/libdrm_radeon.so.1.0.1
-%%KMS%%lib/libkms.so
-%%KMS%%lib/libkms.so.1
-%%KMS%%lib/libkms.so.1.0.0
+lib/libkms.so
+lib/libkms.so.1
+lib/libkms.so.1.0.0
 libdata/pkgconfig/libdrm.pc
+%%RADEON_DRIVERS%%libdata/pkgconfig/libdrm_amdgpu.pc
+%%ARM_DRIVERS%%libdata/pkgconfig/libdrm_freedreno.pc
 %%INTEL_DRIVER%%libdata/pkgconfig/libdrm_intel.pc
-%%NOUVEAU%%libdata/pkgconfig/libdrm_nouveau.pc
+%%NOUVEAU_DRIVER%%libdata/pkgconfig/libdrm_nouveau.pc
 %%RADEON_DRIVERS%%libdata/pkgconfig/libdrm_radeon.pc
-%%KMS%%libdata/pkgconfig/libkms.pc
-%%MAN%%man/man3/drmAvailable.3.gz
-%%MAN%%man/man3/drmHandleEvent.3.gz
-%%MAN%%man/man3/drmModeGetResources.3.gz
-%%MAN%%man/man7/drm-gem.7.gz
-%%MAN%%man/man7/drm-kms.7.gz
-%%MAN%%man/man7/drm-memory.7.gz
-%%MAN%%man/man7/drm-mm.7.gz
-%%MAN%%man/man7/drm-ttm.7.gz
-%%MAN%%man/man7/drm.7.gz
+%%ARM_DRIVERS%%libdata/pkgconfig/libdrm_vc4.pc
+libdata/pkgconfig/libkms.pc
+%%MANPAGES%%man/man3/drmAvailable.3.gz
+%%MANPAGES%%man/man3/drmHandleEvent.3.gz
+%%MANPAGES%%man/man3/drmModeGetResources.3.gz
+%%MANPAGES%%man/man7/drm-gem.7.gz
+%%MANPAGES%%man/man7/drm-kms.7.gz
+%%MANPAGES%%man/man7/drm-memory.7.gz
+%%MANPAGES%%man/man7/drm-mm.7.gz
+%%MANPAGES%%man/man7/drm-ttm.7.gz
+%%MANPAGES%%man/man7/drm.7.gz
+%%RADEON_DRIVERS%%%%DATADIR%%/amdgpu.ids



More information about the Midnightbsd-cvs mailing list