pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/graphics/MesaLib18



Module Name:    pkgsrc
Committed By:   ryoon
Date:           Sun Oct  7 23:49:31 UTC 2018

Added Files:
        pkgsrc/graphics/MesaLib18: DESCR Makefile PLIST buildlink3.mk
            builtin.mk distinfo dri.mk options.mk
        pkgsrc/graphics/MesaLib18/files: patch-manual_fdo90311
        pkgsrc/graphics/MesaLib18/patches: patch-configure patch-configure.ac
            patch-include_GL_internal_dri__interface.h
            patch-src_amd_vulkan_winsys_amdgpu_radv__amdgpu__cs.c
            patch-src_compiler_builtin__type__macros.h
            patch-src_compiler_glsl_glsl__parser__extras.cpp
            patch-src_egl_drivers_dri2_platform__drm.c
            patch-src_egl_drivers_dri2_platform__x11.c
            patch-src_egl_main_eglglobals.c
            patch-src_gallium_auxiliary_drivers_trace_tr__dump.c
            patch-src_gallium_auxiliary_pipe-loader_pipe__loader__drm.c
            patch-src_gallium_auxiliary_util_u__format__tests.c
            patch-src_gallium_drivers_nouveau_nouveau__vp3__video.c
            patch-src_gallium_drivers_nouveau_nv50_nv84__video.c
            patch-src_gallium_drivers_vc4_vc4__bufmgr.c
            patch-src_gallium_include_pipe_p__config.h
            patch-src_gallium_state__trackers_clover_llvm_invocation.cpp
            patch-src_gallium_state__trackers_clover_llvm_metadata.hpp
            patch-src_gallium_state__trackers_clover_util_range.hpp
            patch-src_gbm_Makefile.am patch-src_gbm_Makefile.in
            patch-src_glx_apple_apple__glapi.c patch-src_glx_dri__glx.c
            patch-src_glx_glxclient.h patch-src_glx_glxcurrent.c
            patch-src_glx_glxext.c patch-src_intel_Makefile.in
            patch-src_intel_Makefile.tools.am
            patch-src_intel_compiler_brw__fs__bank__conflicts.cpp
            patch-src_intel_tools_aubinator.c
            patch-src_intel_tools_aubinator__error__decode.c
            patch-src_intel_vulkan_anv__allocator.c
            patch-src_intel_vulkan_anv__device.c
            patch-src_intel_vulkan_anv__gem.c
            patch-src_intel_vulkan_anv__queue.c
            patch-src_mapi_entry__x86-64__tls.h
            patch-src_mapi_entry__x86__tls.h
            patch-src_mapi_glapi_gen_gl__gentable.py
            patch-src_mapi_u__current.c patch-src_mapi_u__current.h
            patch-src_mesa_drivers_dri_i915_intel__screen.c
            patch-src_mesa_drivers_dri_i965_brw__performance__query.c
            patch-src_mesa_drivers_dri_i965_intel__screen.c
            patch-src_mesa_drivers_dri_i965_intel__tiled__memcpy.c
            patch-src_mesa_drivers_dri_swrast_swrast.c
            patch-src_mesa_main_context.c patch-src_mesa_main_extensions.c
            patch-src_mesa_main_macros.h patch-src_mesa_main_shader__query.cpp
            patch-src_mesa_tnl_t__pipeline.c patch-src_mesa_x86_common__x86.c
            patch-src_util_build__id.c patch-src_util_futex.h
            patch-src_util_ralloc.c patch-src_util_strndup.h
            patch-src_util_u__atomic.h patch-src_util_u__queue.c
            patch-src_util_xmlconfig.c

Log Message:
graphics/MesaLib18: import MesaLib-18.2.0 from wip/MesaLib

MesaLib is a 3-D graphics library with an API which is very similar to
that of OpenGL*.  To the extent that Mesa utilizes the OpenGL command syntax
or state machine, it is being used with authorization from Silicon Graphics,
Inc.  However, the author makes no claim that Mesa is in any way a
compatible replacement for OpenGL or associated with Silicon Graphics, Inc.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 pkgsrc/graphics/MesaLib18/DESCR \
    pkgsrc/graphics/MesaLib18/Makefile pkgsrc/graphics/MesaLib18/PLIST \
    pkgsrc/graphics/MesaLib18/buildlink3.mk \
    pkgsrc/graphics/MesaLib18/builtin.mk pkgsrc/graphics/MesaLib18/distinfo \
    pkgsrc/graphics/MesaLib18/dri.mk pkgsrc/graphics/MesaLib18/options.mk
cvs rdiff -u -r0 -r1.1 pkgsrc/graphics/MesaLib18/files/patch-manual_fdo90311
cvs rdiff -u -r0 -r1.1 pkgsrc/graphics/MesaLib18/patches/patch-configure \
    pkgsrc/graphics/MesaLib18/patches/patch-configure.ac \
    pkgsrc/graphics/MesaLib18/patches/patch-include_GL_internal_dri__interface.h \
    pkgsrc/graphics/MesaLib18/patches/patch-src_amd_vulkan_winsys_amdgpu_radv__amdgpu__cs.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_compiler_builtin__type__macros.h \
    pkgsrc/graphics/MesaLib18/patches/patch-src_compiler_glsl_glsl__parser__extras.cpp \
    pkgsrc/graphics/MesaLib18/patches/patch-src_egl_drivers_dri2_platform__drm.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_egl_drivers_dri2_platform__x11.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_egl_main_eglglobals.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_auxiliary_drivers_trace_tr__dump.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_auxiliary_pipe-loader_pipe__loader__drm.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_auxiliary_util_u__format__tests.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_drivers_nouveau_nouveau__vp3__video.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_drivers_nouveau_nv50_nv84__video.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_drivers_vc4_vc4__bufmgr.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_include_pipe_p__config.h \
    pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_state__trackers_clover_llvm_invocation.cpp \
    pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_state__trackers_clover_llvm_metadata.hpp \
    pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_state__trackers_clover_util_range.hpp \
    pkgsrc/graphics/MesaLib18/patches/patch-src_gbm_Makefile.am \
    pkgsrc/graphics/MesaLib18/patches/patch-src_gbm_Makefile.in \
    pkgsrc/graphics/MesaLib18/patches/patch-src_glx_apple_apple__glapi.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_glx_dri__glx.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_glx_glxclient.h \
    pkgsrc/graphics/MesaLib18/patches/patch-src_glx_glxcurrent.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_glx_glxext.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_intel_Makefile.in \
    pkgsrc/graphics/MesaLib18/patches/patch-src_intel_Makefile.tools.am \
    pkgsrc/graphics/MesaLib18/patches/patch-src_intel_compiler_brw__fs__bank__conflicts.cpp \
    pkgsrc/graphics/MesaLib18/patches/patch-src_intel_tools_aubinator.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_intel_tools_aubinator__error__decode.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_intel_vulkan_anv__allocator.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_intel_vulkan_anv__device.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_intel_vulkan_anv__gem.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_intel_vulkan_anv__queue.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_mapi_entry__x86-64__tls.h \
    pkgsrc/graphics/MesaLib18/patches/patch-src_mapi_entry__x86__tls.h \
    pkgsrc/graphics/MesaLib18/patches/patch-src_mapi_glapi_gen_gl__gentable.py \
    pkgsrc/graphics/MesaLib18/patches/patch-src_mapi_u__current.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_mapi_u__current.h \
    pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_drivers_dri_i915_intel__screen.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_drivers_dri_i965_brw__performance__query.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_drivers_dri_i965_intel__screen.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_drivers_dri_i965_intel__tiled__memcpy.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_drivers_dri_swrast_swrast.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_main_context.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_main_extensions.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_main_macros.h \
    pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_main_shader__query.cpp \
    pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_tnl_t__pipeline.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_x86_common__x86.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_util_build__id.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_util_futex.h \
    pkgsrc/graphics/MesaLib18/patches/patch-src_util_ralloc.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_util_strndup.h \
    pkgsrc/graphics/MesaLib18/patches/patch-src_util_u__atomic.h \
    pkgsrc/graphics/MesaLib18/patches/patch-src_util_u__queue.c \
    pkgsrc/graphics/MesaLib18/patches/patch-src_util_xmlconfig.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Added files:

Index: pkgsrc/graphics/MesaLib18/DESCR
diff -u /dev/null pkgsrc/graphics/MesaLib18/DESCR:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/DESCR     Sun Oct  7 23:49:31 2018
@@ -0,0 +1,5 @@
+MesaLib is a 3-D graphics library with an API which is very similar to
+that of OpenGL*.  To the extent that Mesa utilizes the OpenGL command syntax
+or state machine, it is being used with authorization from Silicon Graphics,
+Inc.  However, the author makes no claim that Mesa is in any way a
+compatible replacement for OpenGL or associated with Silicon Graphics, Inc.
Index: pkgsrc/graphics/MesaLib18/Makefile
diff -u /dev/null pkgsrc/graphics/MesaLib18/Makefile:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/Makefile  Sun Oct  7 23:49:31 2018
@@ -0,0 +1,104 @@
+# $NetBSD: Makefile,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+DISTNAME=      mesa-18.2.0
+PKGNAME=       ${DISTNAME:S/mesa/MesaLib/}
+CATEGORIES=    graphics x11
+MASTER_SITES=  ftp://ftp.freedesktop.org/pub/mesa/
+# MASTER_SITES=        ftp://ftp.freedesktop.org/pub/mesa/${PKGVERSION_NOREV}/
+EXTRACT_SUFX=  .tar.xz
+
+MAINTAINER=    pkgsrc-users%NetBSD.org@localhost
+HOMEPAGE=      https://www.mesa3d.org/
+COMMENT=       The Mesa 3D Graphics Library
+LICENSE=       mit
+
+GNU_CONFIGURE= yes
+USE_TOOLS+=    bison pkg-config gmake flex
+USE_LANGUAGES= c99 c++
+USE_LIBTOOL=   yes
+
+PKGCONFIG_OVERRIDE+=   src/egl/main/egl.pc.in
+PKGCONFIG_OVERRIDE+=   src/gallium/targets/d3dadapter9/d3d.pc.in
+PKGCONFIG_OVERRIDE+=   src/gallium/targets/osmesa/osmesa.pc.in
+PKGCONFIG_OVERRIDE+=   src/gallium/targets/xa/xatracker.pc.in
+PKGCONFIG_OVERRIDE+=   src/gbm/main/gbm.pc.in
+PKGCONFIG_OVERRIDE+=   src/mapi/es1api/glesv1_cm.pc.in
+PKGCONFIG_OVERRIDE+=   src/mapi/es2api/glesv2.pc.in
+PKGCONFIG_OVERRIDE+=   src/mesa/drivers/dri/dri.pc.in
+PKGCONFIG_OVERRIDE+=   src/mesa/drivers/osmesa/osmesa.pc.in
+PKGCONFIG_OVERRIDE+=   src/mesa/gl.pc.in
+
+CONFIGURE_ARGS+=               --enable-shared-glapi
+
+# Work around a buildlink and/or libtool bug:
+# In the libtool install/relink stage, if we want to link with two static
+# archives named libglapi.la but in different directories, bad things happen.
+SUBST_CLASSES+=                        wrapper-bug
+SUBST_STAGE.wrapper-bug=       pre-configure
+SUBST_MESSAGE.wrapper-bug=     Renaming glapi-shared/libglapi in Makefiles
+SUBST_FILES.wrapper-bug=       src/gbm/Makefile.in
+SUBST_FILES.wrapper-bug+=      src/glx/Makefile.in
+SUBST_FILES.wrapper-bug+=      src/mapi/Makefile.in
+SUBST_FILES.wrapper-bug+=      src/mesa/drivers/x11/Makefile.in
+SUBST_FILES.wrapper-bug+=      src/mesa/drivers/osmesa/Makefile.in
+SUBST_SED.wrapper-bug=         -e 's,shared-glapi/libglapi.la,shared-glapi/libglapi_tmp_rename.la,g'
+SUBST_SED.wrapper-bug+=                -e 's,libglapi.la,libglapi_impl.la,g'
+SUBST_SED.wrapper-bug+=                -e 's,libglapi_tmp_rename.la,libglapi.la,g'
+
+# Replace /etc/drirc with ${PREFIX}/etc/drirc
+SUBST_CLASSES+=                        drirc
+SUBST_STAGE.drirc=             pre-configure
+SUBST_MESSAGE.drirc=           Fixing hardcoded /etc/drirc references
+SUBST_FILES.drirc+=            src/util/xmlconfig.c
+SUBST_SED.drirc+=               -e 's|/etc|${PREFIX}/etc|g'
+
+# Required due to clang defaulting to strict C standard by default (no strdup).
+CFLAGS.SunOS+= -D__EXTENSIONS__
+
+.include "../../mk/bsd.prefs.mk"
+.include "../../mk/compiler.mk"
+.include "options.mk"
+
+.if ${MACHINE_ARCH} == "i386"
+CONFIGURE_ARGS+=       --enable-glx-read-only-text
+.endif
+
+PYTHON_FOR_BUILD_ONLY= yes
+PYTHON_VERSIONS_INCOMPATIBLE=  34 35 36 37 # as of 11.2.2
+BUILD_DEPENDS+=                ${PYPKGPREFIX}-mako-[0-9]*:../../devel/py-mako
+CONFIGURE_ENV+=                ac_cv_prog_PYTHON2=${PYTHONBIN}
+.include "../../lang/python/tool.mk"
+
+# On NetBSD < 6 we need to compile with GCC from pkgsrc.
+# But GCC from pkgsrc does not add implicit -lc like base GCC does,
+# which breaks the build with -Wl,--no-undefined.
+# So we piggy back on -lpthread and inject -lc after it.
+.if !empty(MACHINE_PLATFORM:MNetBSD-[1-5].*-*)
+BUILDLINK_TRANSFORM+=   l:pthread:pthread:c l:m:m:c
+.endif
+
+# Handle platforms without exp2
+.if !empty(MACHINE_PLATFORM:MNetBSD-[1-5].*-*)
+CPPFLAGS+=     -Dexp2\(x\)=exp\(\(x\)\*M_LN2\)
+CPPFLAGS+=     -Dexp2f\(x\)=expf\(\(x\)\*M_LN2\)
+.endif
+
+# Manual patch for FDO bug 90311. Don't apply if not on Darwin as there could
+# be side effects.
+.if ${OPSYS} == "Darwin"
+pre-configure: ${WRKDIR}/.manual_patch_done
+${WRKDIR}/.manual_patch_done:
+       cd ${WRKSRC} && ${TOOLS_PATCH} -z .manual -p0 < ${FILESDIR}/patch-manual_fdo90311
+       touch ${.TARGET}
+.endif
+
+INSTALLATION_DIRS+=    share/examples/MesaLib
+
+post-install:
+       ${INSTALL_DATA} ${WRKSRC}/src/util/drirc ${DESTDIR}${PREFIX}/share/examples/MesaLib
+
+.include "../../x11/libXrandr/buildlink3.mk"
+.include "../../x11/libX11/buildlink3.mk"
+.include "../../x11/libXext/buildlink3.mk"
+.include "../../x11/libxcb/buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
Index: pkgsrc/graphics/MesaLib18/PLIST
diff -u /dev/null pkgsrc/graphics/MesaLib18/PLIST:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/PLIST     Sun Oct  7 23:49:31 2018
@@ -0,0 +1,100 @@
+@comment $NetBSD: PLIST,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+etc/drirc
+${PLIST.dri}include/EGL/egl.h
+${PLIST.dri}include/EGL/eglext.h
+${PLIST.dri}include/EGL/eglextchromium.h
+${PLIST.dri}include/EGL/eglmesaext.h
+${PLIST.dri}include/EGL/eglplatform.h
+include/GL/gl.h
+include/GL/gl_mangle.h
+include/GL/glcorearb.h
+include/GL/glext.h
+include/GL/glx.h
+include/GL/glx_mangle.h
+include/GL/glxext.h
+${PLIST.osmesa}include/GL/osmesa.h
+${PLIST.dri}include/GL/internal/dri_interface.h
+${PLIST.glesv1}include/GLES/egl.h
+${PLIST.glesv1}include/GLES/gl.h
+${PLIST.glesv1}include/GLES/glext.h
+${PLIST.glesv1}include/GLES/glplatform.h
+${PLIST.glesv2}include/GLES2/gl2.h
+${PLIST.glesv2}include/GLES2/gl2ext.h
+${PLIST.glesv2}include/GLES2/gl2platform.h
+${PLIST.glesv2}include/GLES3/gl3.h
+${PLIST.glesv2}include/GLES3/gl31.h
+${PLIST.glesv2}include/GLES3/gl32.h
+${PLIST.glesv2}include/GLES3/gl3ext.h
+${PLIST.glesv2}include/GLES3/gl3platform.h
+${PLIST.dri}include/KHR/khrplatform.h
+${PLIST.gbm}include/gbm.h
+${PLIST.xatracker}include/xa_composite.h
+${PLIST.xatracker}include/xa_context.h
+${PLIST.xatracker}include/xa_tracker.h
+@comment ${PLIST.vaapi}lib/dri/gallium_drv_video.la
+@comment ${PLIST.vaapi}lib/dri/gallium_drv_video.so
+${PLIST.i915_dri}lib/dri/i915_dri.so
+${PLIST.i965_dri}lib/dri/i965_dri.so
+@comment ${PLIST.ilo}lib/dri/ilo_dri.so
+${PLIST.freedreno}lib/dri/kgsl_dri.so
+${PLIST.swrast}lib/dri/kms_swrast_dri.so
+${PLIST.freedreno}lib/dri/msm_dri.so
+${PLIST.nouveau}lib/dri/nouveau_dri.so
+${PLIST.nouveau_dri}lib/dri/nouveau_vieux_dri.so
+${PLIST.r200_dri}lib/dri/r200_dri.so
+${PLIST.r300}lib/dri/r300_dri.so
+${PLIST.r600}lib/dri/r600_dri.so
+${PLIST.radeon_dri}lib/dri/radeon_dri.so
+${PLIST.radeonsi}lib/dri/radeonsi_dri.so
+${PLIST.swrast_dri}lib/dri/swrast_dri.so
+${PLIST.vc4}lib/dri/vc4_dri.so
+${PLIST.svga}lib/dri/vmwgfx_dri.so
+${PLIST.dri}lib/libEGL.la
+lib/libGL.la
+${PLIST.glesv1}lib/libGLESv1_CM.la
+${PLIST.glesv2}lib/libGLESv2.la
+${PLIST.osmesa}lib/libOSMesa.la
+${PLIST.xvmc}${PLIST.nouveau}lib/libXvMCnouveau.so
+${PLIST.xvmc}${PLIST.nouveau}lib/libXvMCnouveau.so.1
+${PLIST.xvmc}${PLIST.nouveau}lib/libXvMCnouveau.so.1.0
+${PLIST.xvmc}${PLIST.nouveau}lib/libXvMCnouveau.so.1.0.0
+${PLIST.xvmc}${PLIST.r600}lib/libXvMCr600.so
+${PLIST.xvmc}${PLIST.r600}lib/libXvMCr600.so.1
+${PLIST.xvmc}${PLIST.r600}lib/libXvMCr600.so.1.0
+${PLIST.xvmc}${PLIST.r600}lib/libXvMCr600.so.1.0.0
+${PLIST.gbm}lib/libgbm.la
+lib/libglapi.la
+${PLIST.wayland}lib/libwayland-egl.la
+${PLIST.xatracker}lib/libxatracker.la
+${PLIST.dri}lib/pkgconfig/dri.pc
+${PLIST.dri}lib/pkgconfig/egl.pc
+${PLIST.gbm}lib/pkgconfig/gbm.pc
+${PLIST.osmesa}lib/pkgconfig/osmesa.pc
+lib/pkgconfig/gl.pc
+${PLIST.glesv1}lib/pkgconfig/glesv1_cm.pc
+${PLIST.glesv2}lib/pkgconfig/glesv2.pc
+${PLIST.wayland}lib/pkgconfig/wayland-egl.pc
+${PLIST.xatracker}lib/pkgconfig/xatracker.pc
+${PLIST.nouveau}${PLIST.vdpau}lib/vdpau/libvdpau_nouveau.so
+${PLIST.nouveau}${PLIST.vdpau}lib/vdpau/libvdpau_nouveau.so.1
+${PLIST.nouveau}${PLIST.vdpau}lib/vdpau/libvdpau_nouveau.so.1.0
+${PLIST.nouveau}${PLIST.vdpau}lib/vdpau/libvdpau_nouveau.so.1.0.0
+${PLIST.vdpau}lib/vdpau/libvdpau_r300.so
+${PLIST.vdpau}lib/vdpau/libvdpau_r300.so.1
+${PLIST.vdpau}lib/vdpau/libvdpau_r300.so.1.0
+${PLIST.vdpau}lib/vdpau/libvdpau_r300.so.1.0.0
+${PLIST.vdpau}lib/vdpau/libvdpau_r600.so
+${PLIST.vdpau}lib/vdpau/libvdpau_r600.so.1
+${PLIST.vdpau}lib/vdpau/libvdpau_r600.so.1.0
+${PLIST.vdpau}lib/vdpau/libvdpau_r600.so.1.0.0
+${PLIST.vdpau}lib/vdpau/libvdpau_radeonsi.so
+${PLIST.vdpau}lib/vdpau/libvdpau_radeonsi.so.1
+${PLIST.vdpau}lib/vdpau/libvdpau_radeonsi.so.1.0
+${PLIST.vdpau}lib/vdpau/libvdpau_radeonsi.so.1.0.0
+@comment ${PLIST.vdpau}lib/dri/nouveau_drv_video.la
+${PLIST.nouveau}${PLIST.vaapi}lib/dri/nouveau_drv_video.so
+@comment ${PLIST.vdpau}lib/dri/r600_drv_video.la
+${PLIST.vaapi}lib/dri/r600_drv_video.so
+@comment ${PLIST.vdpau}lib/dri/radeonsi_drv_video.la
+${PLIST.vaapi}lib/dri/radeonsi_drv_video.so
+share/examples/MesaLib/drirc
Index: pkgsrc/graphics/MesaLib18/buildlink3.mk
diff -u /dev/null pkgsrc/graphics/MesaLib18/buildlink3.mk:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/buildlink3.mk     Sun Oct  7 23:49:31 2018
@@ -0,0 +1,52 @@
+# $NetBSD: buildlink3.mk,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+BUILDLINK_TREE+=       MesaLib
+
+.if !defined(MESALIB_BUILDLINK3_MK)
+MESALIB_BUILDLINK3_MK:=
+
+BUILDLINK_API_DEPENDS.MesaLib+=        MesaLib>=3.4.2
+BUILDLINK_ABI_DEPENDS.MesaLib+=        MesaLib>=7.11.2
+BUILDLINK_PKGSRCDIR.MesaLib?=  ../../graphics/MesaLib
+
+.include "../../mk/bsd.fast.prefs.mk"
+
+.if ${X11_TYPE} == "modular"
+BUILDLINK_ABI_DEPENDS.MesaLib+=        MesaLib>=10.5.3
+# This is needed to avoid linking conflicting libstdc++ versions
+.  if defined(USE_LANGUAGES) && !empty(USE_LANGUAGES:Mc++)
+GCC_REQD+=                     4.2
+.  endif
+.endif
+
+# See <http://developer.apple.com/qa/qa2007/qa1567.html>.
+.if ${X11_TYPE} == "native" && !empty(MACHINE_PLATFORM:MDarwin-[9].*-*)
+BUILDLINK_LDFLAGS.MesaLib+=    
-Wl,-dylib_file,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
+.endif
+
+pkgbase:= MesaLib
+.include "../../mk/pkg-build-options.mk"
+
+.if ${X11_TYPE} == "native" && ${OPSYS} != "Cygwin" && exists(${X11BASE}/lib/pkgconfig/dri.pc)
+PKG_BUILD_OPTIONS.MesaLib+=    dri
+.endif
+
+.if !empty(PKG_BUILD_OPTIONS.MesaLib:Mdri)
+.  include "../../graphics/MesaLib/dri.mk"
+.endif
+
+.if    ${X11_TYPE} == "modular" && !empty(PKG_BUILD_OPTIONS.MesaLib:Mdri) ||   \
+       ${X11_TYPE} == "native"  && exists(${X11BASE}/include/EGL/egl.h)
+MESALIB_SUPPORTS_EGL=  yes
+.else
+MESALIB_SUPPORTS_EGL=  no
+.endif
+
+.if ${X11_TYPE} == "modular"
+.include "../../devel/libpthread-stubs/buildlink3.mk"
+.endif
+
+.include "../../x11/libXext/buildlink3.mk"
+.endif # MESALIB_BUILDLINK3_MK
+
+BUILDLINK_TREE+=       -MesaLib
Index: pkgsrc/graphics/MesaLib18/builtin.mk
diff -u /dev/null pkgsrc/graphics/MesaLib18/builtin.mk:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/builtin.mk        Sun Oct  7 23:49:31 2018
@@ -0,0 +1,87 @@
+# $NetBSD: builtin.mk,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+BUILTIN_PKG:=  MesaLib
+
+BUILTIN_FIND_FILES_VAR:=       H_MESALIB PC_GL
+BUILTIN_FIND_FILES.H_MESALIB=  ${X11BASE}/include/GL/glx.h
+BUILTIN_FIND_FILES.PC_GL=      ${X11BASE}/lib/pkgconfig/gl.pc
+BUILTIN_FIND_FILES.PC_GL+=     ${X11BASE}/lib${LIBABISUFFIX}/pkgconfig/gl.pc
+
+.include "../../mk/buildlink3/bsd.builtin.mk"
+
+###
+### Determine if there is a built-in implementation of the package and
+### set IS_BUILTIN.<pkg> appropriately ("yes" or "no").
+###
+.if !defined(IS_BUILTIN.MesaLib)
+.  if empty(PC_GL:M__nonexistent__)
+IS_BUILTIN.MesaLib=    yes
+.  elif empty(H_MESALIB:M__nonexistent__)
+IS_BUILTIN.MesaLib=    yes
+.  else
+IS_BUILTIN.MesaLib=    no
+.  endif
+.endif
+MAKEVARS+=     IS_BUILTIN.MesaLib
+
+###
+### If there is a built-in implementation, then set BUILTIN_PKG.<pkg> to
+### a package name to represent the built-in package.
+###
+.if !defined(BUILTIN_PKG.MesaLib) && \
+    !empty(IS_BUILTIN.MesaLib:M[yY][eE][sS])
+.  if empty(PC_GL:M__nonexistent__)
+BUILTIN_VERSION.Mesa!= ${SED} -n -e 's/Version: //p' ${PC_GL}
+.  elif empty(H_MESALIB:M__nonexistent__)
+.    include "../../graphics/Mesa/version.mk"
+.  else # ?
+BUILTIN_VERSION.Mesa:= 0.something-weird-happened
+.  endif
+BUILTIN_PKG.MesaLib=   MesaLib-${BUILTIN_VERSION.Mesa}
+MAKEVARS+=     BUILTIN_VERSION.Mesa
+.endif
+MAKEVARS+=     BUILTIN_PKG.MesaLib
+
+###
+### Determine whether we should use the built-in implementation if it
+### exists, and set USE_BUILTIN.<pkg> appropriate ("yes" or "no").
+###
+.if !defined(USE_BUILTIN.MesaLib)
+.  if ${PREFER.MesaLib} == "pkgsrc"
+USE_BUILTIN.MesaLib=   no
+.  else
+USE_BUILTIN.MesaLib=   ${IS_BUILTIN.MesaLib}
+.    if defined(BUILTIN_PKG.MesaLib) && \
+        !empty(IS_BUILTIN.MesaLib:M[yY][eE][sS])
+USE_BUILTIN.MesaLib=   yes
+.      for dep in ${BUILDLINK_API_DEPENDS.MesaLib}
+.        if !empty(USE_BUILTIN.MesaLib:M[yY][eE][sS])
+USE_BUILTIN.MesaLib!=                                                  \
+       if ${PKG_ADMIN} pmatch ${dep:Q} ${BUILTIN_PKG.MesaLib}; then \
+               ${ECHO} yes;                                            \
+       else                                                            \
+               ${ECHO} no;                                             \
+       fi
+.        endif
+.      endfor
+.    endif
+.  endif  # PREFER.MesaLib
+.endif
+MAKEVARS+=     USE_BUILTIN.MesaLib
+
+###
+### The section below only applies if we are not including this file
+### solely to determine whether a built-in implementation exists.
+###
+CHECK_BUILTIN.MesaLib?=        no
+.if !empty(CHECK_BUILTIN.MesaLib:M[nN][oO])
+
+.  if !empty(USE_BUILTIN.MesaLib:M[nN][oO])
+.    include "../../mk/pthread.buildlink3.mk"
+.    include "../../mk/pthread.builtin.mk"
+BUILTIN_PKG:=  MesaLib
+.  endif
+
+.  include "../../mk/x11.builtin.mk"
+
+.endif # CHECK_BUILTIN.MesaLib
Index: pkgsrc/graphics/MesaLib18/distinfo
diff -u /dev/null pkgsrc/graphics/MesaLib18/distinfo:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/distinfo  Sun Oct  7 23:49:31 2018
@@ -0,0 +1,64 @@
+$NetBSD: distinfo,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+SHA1 (mesa-18.2.0.tar.xz) = 73723d9f3815487f474d84eb91a5cd17edfb63d4
+RMD160 (mesa-18.2.0.tar.xz) = 51aae6c7a566d7d7da5e545ef3b4f04295897b21
+SHA512 (mesa-18.2.0.tar.xz) = e6e997e166845009f6b97da204384758c797c870b56332652c0a2636734638f9180b7e4dbad144495645308ae4d77981a2493a22d57973723338b658e0655557
+Size (mesa-18.2.0.tar.xz) = 11331164 bytes
+SHA1 (patch-configure) = c938bc7807a92fb4484d459b401133fb9fd7dbce
+SHA1 (patch-configure.ac) = 91dbbca01f324e987560a36986fc3d6c07be82c8
+SHA1 (patch-include_GL_internal_dri__interface.h) = 146d2f3f3e50fc1947e8941301d9cf9d90a035e2
+SHA1 (patch-src_amd_vulkan_winsys_amdgpu_radv__amdgpu__cs.c) = 1fe81a7b16e36dc9125400c20543271216a33a45
+SHA1 (patch-src_compiler_builtin__type__macros.h) = 857bca0c0f55ec8d7a20b3807c7a5d7bd06bdfbf
+SHA1 (patch-src_compiler_glsl_glsl__parser__extras.cpp) = ef114d6e288e6d212fce9d1c0606f7d454a171c4
+SHA1 (patch-src_egl_drivers_dri2_platform__drm.c) = 94ec2e969e7cf7c89c3192e60758e5ad14b02629
+SHA1 (patch-src_egl_drivers_dri2_platform__x11.c) = 49e48c31eacb79d1da357fe70eaffd2926b5280e
+SHA1 (patch-src_egl_main_eglglobals.c) = 0d52014f52e62fc5fa6650336ddb0011ecf331e6
+SHA1 (patch-src_gallium_auxiliary_drivers_trace_tr__dump.c) = 360e1608508a7bbb41acecd58930781038e2309e
+SHA1 (patch-src_gallium_auxiliary_pipe-loader_pipe__loader__drm.c) = b8fd5e0d1bab1fa7ae965cae382a1cd1ffbf1fc4
+SHA1 (patch-src_gallium_auxiliary_util_u__format__tests.c) = 4d5e4677c2825778c43440ab131b8807f6840975
+SHA1 (patch-src_gallium_drivers_nouveau_nouveau__vp3__video.c) = 04f95784c3270c9bb7e95377982e217962481525
+SHA1 (patch-src_gallium_drivers_nouveau_nv50_nv84__video.c) = 1b4239fe053523835ecac006894bdb0cde0ee626
+SHA1 (patch-src_gallium_drivers_vc4_vc4__bufmgr.c) = 1d591d346486fdf58893f69ab92a272e6a31a987
+SHA1 (patch-src_gallium_include_pipe_p__config.h) = f4e38eac66167b619c30076bb0144dd716310967
+SHA1 (patch-src_gallium_state__trackers_clover_llvm_invocation.cpp) = 3053db09fbfffffd82e232b60b244a0a80c8f181
+SHA1 (patch-src_gallium_state__trackers_clover_llvm_metadata.hpp) = c97d38098ea03658bc193a50e445b87f1c020839
+SHA1 (patch-src_gallium_state__trackers_clover_util_range.hpp) = cdc78067986c1b92818472c4201c58ef1b42c4f4
+SHA1 (patch-src_gbm_Makefile.am) = 5f3107afbf64b97f7d21ce427cecc4fb78974db3
+SHA1 (patch-src_gbm_Makefile.in) = 5855f4d2907a0d9c3b9a5334177a037591b51d6a
+SHA1 (patch-src_glx_apple_apple__glapi.c) = c4eea8dabf74eb03d22da4eb834b18ae3384c63b
+SHA1 (patch-src_glx_dri__glx.c) = 8fd48776e9953b18bd17ba130d90ae2935e67242
+SHA1 (patch-src_glx_glxclient.h) = f0358179ae397bc8677597b0ccb9a471f40f15de
+SHA1 (patch-src_glx_glxcurrent.c) = 8b8e949eded13491c5865601253c6e7d4b06e228
+SHA1 (patch-src_glx_glxext.c) = 15c2c5e0c6b5095ce849fb86ad148aa05d7d907a
+SHA1 (patch-src_intel_Makefile.in) = 821c385e07e41ec693e6ada9db73b88e6e8dc70b
+SHA1 (patch-src_intel_Makefile.tools.am) = 5253d5972b48ae3bc8d648bb9f479dcf6cbd3fab
+SHA1 (patch-src_intel_compiler_brw__fs__bank__conflicts.cpp) = 6276d2c6846bb4dd08699921bec4e20202a17478
+SHA1 (patch-src_intel_tools_aubinator.c) = a468cf9f1ac88e883ad33400afaf8df690086e72
+SHA1 (patch-src_intel_tools_aubinator__error__decode.c) = d8f636e3c3e76763a505a1dce23de0b198ad62fa
+SHA1 (patch-src_intel_vulkan_anv__allocator.c) = 5dd27eea9811d739558c5b488c57a3d7ae539d87
+SHA1 (patch-src_intel_vulkan_anv__device.c) = 5d581dcd9695c869855f200c575cf98b7165c1ba
+SHA1 (patch-src_intel_vulkan_anv__gem.c) = b8eb487fa704151e7c3c3b1d23973b2b0aa5922e
+SHA1 (patch-src_intel_vulkan_anv__queue.c) = 2dbf7dfd0c77f74f510032bf8d12109f58c50a30
+SHA1 (patch-src_mapi_entry__x86-64__tls.h) = 11b7ef1da435fa17fc7025a46a123d447d6a7d07
+SHA1 (patch-src_mapi_entry__x86__tls.h) = 11c0f5302d305a77f3a1780d44a2c61f48a66273
+SHA1 (patch-src_mapi_glapi_gen_gl__gentable.py) = 0b1d4ef3f78a9b3726ef7f9921608a48a5e4ac56
+SHA1 (patch-src_mapi_u__current.c) = 38d324fcd1c28d155106ccd248edb5eb1aa9ffac
+SHA1 (patch-src_mapi_u__current.h) = 465a992bd34057e9521f0a33e6f2e25cefc145ca
+SHA1 (patch-src_mesa_drivers_dri_i915_intel__screen.c) = e33f51b3502e8c52ff7283aeb807996717f79f4f
+SHA1 (patch-src_mesa_drivers_dri_i965_brw__performance__query.c) = 43ca8315a4964adf7bc99d772fd817deda3ec249
+SHA1 (patch-src_mesa_drivers_dri_i965_intel__screen.c) = 795b17970e95347222514bacc0701aa86fa1ff02
+SHA1 (patch-src_mesa_drivers_dri_i965_intel__tiled__memcpy.c) = 5b940f9a56c694ffaf8a4383c3a2eae25cfd35a6
+SHA1 (patch-src_mesa_drivers_dri_swrast_swrast.c) = 3106f350e590f62c8bd29cd85f24f977639dccdb
+SHA1 (patch-src_mesa_main_context.c) = 74226013b56ad6c9678f1970458538b35967678f
+SHA1 (patch-src_mesa_main_extensions.c) = 2f48bdb1176c2878bb33bcfab7556172b50a987e
+SHA1 (patch-src_mesa_main_macros.h) = c5dceaa8dc02a58e5b2273d82e3fe1cc12e327d3
+SHA1 (patch-src_mesa_main_shader__query.cpp) = 3f9c31645d87855759def11344dee16af23c7be3
+SHA1 (patch-src_mesa_tnl_t__pipeline.c) = e6abcdb24019ca57527d25c5cd86737332db98e3
+SHA1 (patch-src_mesa_x86_common__x86.c) = f8c4b93443ef66d017f6aa114b877565b30f2598
+SHA1 (patch-src_util_build__id.c) = 7a9547bbda9d2fb9f0018ccf27b70b59e497aa2c
+SHA1 (patch-src_util_futex.h) = 35097c3b8baf8b969c6ec5ec1feb6f4e0a48237e
+SHA1 (patch-src_util_ralloc.c) = d311bfd9ed7e673d72e050668d351c1e6552cdc8
+SHA1 (patch-src_util_strndup.h) = 73f49694ca48ad6b9a9d8346c5b84fddec2463bd
+SHA1 (patch-src_util_u__atomic.h) = beb1df2bb28151bde0405bcae3994107be6813a5
+SHA1 (patch-src_util_u__queue.c) = 1ea1c2f8e2971235aa98be96bfd6b2b68f876072
+SHA1 (patch-src_util_xmlconfig.c) = ad5619e067957b120a70c1c63421c92b356e16ac
Index: pkgsrc/graphics/MesaLib18/dri.mk
diff -u /dev/null pkgsrc/graphics/MesaLib18/dri.mk:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/dri.mk    Sun Oct  7 23:49:31 2018
@@ -0,0 +1,34 @@
+# $NetBSD: dri.mk,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+#
+# Currently, this is for convenience only.
+#
+.if !defined(DRI_MK)
+DRI_MK=                # defined
+
+.  if !defined(USE_BUILTIN.MesaLib)
+CHECK_BUILTIN.MesaLib:=        yes
+.    include "../../graphics/MesaLib/builtin.mk"
+CHECK_BUILTIN.MesaLib:=        no
+.  endif
+
+.  if !empty(USE_BUILTIN.MesaLib:M[Nn][Oo])
+.    if ${OPSYS} != "Darwin"
+BUILDLINK_API_DEPENDS.libdrm+=         libdrm>=2.4.60
+.    endif
+.    if ${OPSYS} == "Linux"
+BUILDLINK_API_DEPENDS.libxcb+= libxcb>=1.9.3
+.    endif
+.  endif
+.  include "../../textproc/expat/buildlink3.mk"
+.  include "../../x11/xorgproto/buildlink3.mk"
+# XXX these do not have builtin.mk
+.  if ${X11_TYPE} == "modular"
+.    include "../../x11/libxshmfence/buildlink3.mk"
+.  endif
+.  include "../../x11/libXdamage/buildlink3.mk"
+.  include "../../x11/libXfixes/buildlink3.mk"
+.  include "../../x11/libXxf86vm/buildlink3.mk"
+.  if ${OPSYS} != "Darwin"
+.    include "../../x11/libdrm/buildlink3.mk"
+.  endif
+.endif
Index: pkgsrc/graphics/MesaLib18/options.mk
diff -u /dev/null pkgsrc/graphics/MesaLib18/options.mk:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/options.mk        Sun Oct  7 23:49:31 2018
@@ -0,0 +1,311 @@
+# $NetBSD: options.mk,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+PKG_OPTIONS_VAR=               PKG_OPTIONS.MesaLib
+PKG_SUPPORTED_OPTIONS=         llvm dri
+PKG_SUGGESTED_OPTIONS=
+
+PKG_SUPPORTED_OPTIONS+=                dri3 glx-tls xvmc debug
+PKG_SUPPORTED_OPTIONS+=                vdpau vaapi
+PKG_SUPPORTED_OPTIONS+=                texture
+PKG_SUPPORTED_OPTIONS+=                osmesa
+PKG_SUPPORTED_OPTIONS+=                glesv1 glesv2
+PKG_SUPPORTED_OPTIONS+=                xa
+PKG_SUPPORTED_OPTIONS+=                noatexit
+PKG_SUPPORTED_OPTIONS+=                libelf
+
+# PKG_SUGGESTED_OPTIONS+=              xvmc
+PKG_SUGGESTED_OPTIONS+=                vdpau vaapi
+
+# glesv1 and glesv2 build error on NetBSD
+# due to no table_noop_array for tls patch
+.if ${OPSYS} != "NetBSD"
+PKG_SUGGESTED_OPTIONS+=                glesv1 glesv2
+.endif
+
+PKG_SUGGESTED_OPTIONS+=                xa
+PKG_SUGGESTED_OPTIONS+=                noatexit
+
+# The LLVM option enables JIT accelerated software rendering and
+# is also required to support the latest RADEON GPUs, so enable it
+# by default on platforms where such GPUs might be encountered.
+.if (${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64") && \
+       ${OPSYS} != "SunOS" && ${OPSYS} != "Darwin"
+PKG_SUGGESTED_OPTIONS+=                llvm
+.endif
+
+.if ${OPSYS} == "FreeBSD" || ${OPSYS} == "OpenBSD" ||          \
+       ${OPSYS} == "DragonFly" || ${OPSYS} == "Linux" ||       \
+       ${OPSYS} == "SunOS" || ${OPSYS} == "NetBSD" ||          \
+       ${OPSYS} == "Darwin"
+PKG_SUGGESTED_OPTIONS+=                dri
+.endif
+
+.if ${OPSYS} == "Linux"
+PKG_SUGGESTED_OPTIONS+=                dri3
+.endif
+
+# Use Thread Local Storage in GLX where it is supported by Mesa and works.
+# XXX Fixme
+.if \
+       !empty(MACHINE_PLATFORM:MNetBSD-[789].*-i386) ||        \
+       !empty(MACHINE_PLATFORM:MNetBSD-[789].*-x86_64) ||      \
+       !empty(MACHINE_PLATFORM:MLinux-*-i386) ||               \
+       !empty(MACHINE_PLATFORM:MLinux-*-x86_64) ||             \
+       !empty(MACHINE_PLATFORM:MFreeBSD-1[0-9].*-x86_64) ||    \
+       !empty(MACHINE_PLATFORM:MDragonFly-*-x86_64)
+PKG_SUGGESTED_OPTIONS+=                glx-tls
+.endif
+
+# segfault starting x on FreeBSD 12 (current) if not using base libelf
+# WebGL demos and mpv not working for radeonsi on NetBSD
+.if ${OPSYS} != "FreeBSD" && ${OPSYS} != "NetBSD"
+PKG_SUGGESTED_OPTIONS+=                libelf
+.endif
+
+.include "../../mk/bsd.options.mk"
+
+# gallium
+PLIST_VARS+=   freedreno ilo i915 i965 nouveau r300 r600 radeonsi      \
+               swrast svga vc4 virgl
+# classic DRI
+PLIST_VARS+=   dri swrast_dri i915_dri nouveau_dri i965_dri radeon_dri r200_dri
+# other features
+PLIST_VARS+=   gbm vaapi vdpau wayland xatracker
+PLIST_VARS+=   osmesa xvmc
+PLIST_VARS+=   glesv1 glesv2
+
+.if !empty(PKG_OPTIONS:Mtexture)
+CONFIGURE_ARGS+=       --enable-texture-float
+.endif
+
+.if !empty(PKG_OPTIONS:Mdri)
+
+CONFIGURE_ARGS+=       --enable-dri
+CONFIGURE_ARGS+=       --enable-egl
+
+.if !empty(PKG_OPTIONS:Mdri3)
+# CFLAGS+=             -DHAVE_DRI3
+# CONFIGURE_ARGS+=     --enable-dri3
+.else # !dri3
+CONFIGURE_ARGS+=       --disable-dri3
+.endif # dri3
+
+.if ${OPSYS} != "Darwin"
+CONFIGURE_ARGS+=       --enable-gbm
+PLIST.gbm=             yes
+.endif
+
+.if !empty(PKG_OPTIONS:Mosmesa)
+CONFIGURE_ARGS+=       --enable-osmesa
+PLIST.osmesa=          yes
+.endif
+
+.if !empty(PKG_OPTIONS:Mglesv1)
+CONFIGURE_ARGS+=       --enable-gles1
+PLIST.glesv1=          yes
+.else
+CONFIGURE_ARGS+=       --disable-gles1
+.endif
+
+.if !empty(PKG_OPTIONS:Mglesv2)
+CONFIGURE_ARGS+=       --enable-gles2
+PLIST.glesv2=          yes
+.else
+CONFIGURE_ARGS+=       --disable-gles2
+.endif
+
+.if !empty(PKG_OPTIONS:Mglx-tls)
+# Recommended by
+# http://www.freedesktop.org/wiki/Software/Glamor/
+CONFIGURE_ARGS+=       --enable-glx-tls
+.else
+# (EE) Failed to load /usr/pkg/lib/xorg/modules/extensions/libglx.so:
+# /usr/pkg/lib/libGL.so.1: Use of initialized Thread Local Storage with model
+# initial-exec and dlopen is not supported
+CONFIGURE_ARGS+=       --disable-glx-tls
+.endif # glx-tls
+
+# DRI on Linux needs either sysfs or udev
+CONFIGURE_ARGS.Linux+= --enable-sysfs
+
+PLIST.dri=     yes
+
+.if ${OPSYS} != "Darwin"
+BUILDLINK_DEPMETHOD.libpciaccess=      full
+.include "../../sysutils/libpciaccess/buildlink3.mk"
+.endif
+.include "../../graphics/MesaLib/dri.mk"
+
+DRI_DRIVERS=           #
+GALLIUM_DRIVERS=       #
+
+# Software rasterizer
+PLIST.swrast_dri=      yes
+DRI_DRIVERS+=          swrast
+.if ${OPSYS} != "Darwin"
+PLIST.swrast=          yes
+GALLIUM_DRIVERS+=      swrast
+.endif
+
+# x86 only drivers
+.if (${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64") && ${OPSYS} != "Darwin"
+# svga / VMWare driver
+PLIST.svga=            yes
+GALLIUM_DRIVERS+=      svga
+
+# Intel chipsets, x86 only
+PLIST.i915=            yes
+# GALLIUM_DRIVERS+=    i915
+PLIST.i915_dri=                yes
+DRI_DRIVERS+=          i915
+
+# ilo is being phased out in favor of Vulkan
+# Experimental Intel driver
+# PLIST.ilo=           yes
+# GALLIUM_DRIVERS+=    ilo
+
+PLIST.i965_dri=                yes
+DRI_DRIVERS+=          i965
+.endif
+
+# ARM drivers
+.if !empty(MACHINE_PLATFORM:MNetBSD-*-*arm*)
+# Qualcomm SnapDragon, libdrm_freedreno.pc
+GALLIUM_DRIVERS+=      freedreno
+PLIST.freedreno=       yes
+
+# Broadcom VideoCore 4
+GALLIUM_DRIVERS+=      vc4
+PLIST.vc4=             yes
+.endif
+
+# qemu Linux guest driver
+.if !empty(MACHINE_PLATFORM:MLinux-*-x86_64)
+# XXX test this
+#GALLIUM_DRIVERS+=     virgl
+#PLIST.virgl=          yes
+.endif
+
+# theoretically cross platform PCI drivers
+.if ${OPSYS} != "Darwin" && empty(MACHINE_PLATFORM:MNetBSD-*-*arm*) && \
+       empty(MACHINE_PLATFORM:MNetBSD-*-mipsel)
+
+# AMD Radeon r600
+PLIST.r600=            yes
+GALLIUM_DRIVERS+=      r600
+
+# FULL_OS_VERSION_CMD= ${UNAME} -r
+# FULL_OS_VERSION=     ${FULL_OS_VERSION_CMD:sh}
+
+# FreeBSD base llvm 3.9+ has problems building nouveau support
+.if ${OPSYS} != "FreeBSD" || (empty(OS_VERSION:M11.*) && empty(OS_VERSION:M12.*))
+# nVidia
+PLIST.nouveau=         yes
+GALLIUM_DRIVERS+=      nouveau
+.endif
+
+# classic DRI radeon
+PLIST.radeon_dri=      yes
+DRI_DRIVERS+=          radeon
+
+# classic DRI r200
+PLIST.r200_dri=                yes
+DRI_DRIVERS+=          r200
+
+# FreeBSD base llvm 3.9+ has problems building nouveau support
+.if ${OPSYS} != "FreeBSD" || (empty(OS_VERSION:M11.*) && empty(OS_VERSION:M12.*))
+# classic DRI nouveau
+PLIST.nouveau_dri=     yes
+DRI_DRIVERS+=          nouveau
+.endif
+.endif # cross platform PCI drivers
+
+.if ${OPSYS} == "Darwin"
+CONFIGURE_ARGS+=       --with-platforms=x11
+#.elif ${OPSYS} == "Linux"
+#.include "../../wip/wayland/buildlink3.mk"
+#CONFIGURE_ARGS+=      --with-platforms=x11,drm,wayland
+#PLIST.wayland=                yes
+.else
+CONFIGURE_ARGS+=       --with-platforms=x11,drm
+.endif
+
+.if !empty(PKG_OPTIONS:Mllvm)
+# VA-API and VDPAU
+.if !empty(PKG_OPTIONS:Mvaapi)
+.include "../../multimedia/libva/available.mk"
+.if ${VAAPI_AVAILABLE} == "yes"
+PLIST.vaapi=   yes
+.include "../../multimedia/libva/buildlink3.mk"
+.endif
+.endif # vaapi
+.if !empty(PKG_OPTIONS:Mvdpau)
+.include "../../multimedia/libvdpau/available.mk"
+.if ${VDPAU_AVAILABLE} == "yes"
+PLIST.vdpau=   yes
+.include "../../multimedia/libvdpau/buildlink3.mk"
+.endif
+.endif # vdpau
+
+# XA is useful for accelerating xf86-video-vmware
+.if !empty(PKG_OPTIONS:Mxa)
+CONFIGURE_ARGS+=       --enable-xa
+PLIST.xatracker=       yes
+.endif
+
+# AMD Radeon r300
+PLIST.r300=            yes
+GALLIUM_DRIVERS+=      r300
+# AMD Canary Islands GPUs
+PLIST.radeonsi=                yes
+GALLIUM_DRIVERS+=      radeonsi
+CONFIGURE_ARGS+=       --enable-llvm
+CONFIGURE_ARGS+=       --enable-llvm-shared-libs
+# CONFIGURE_ARGS+=     --enable-r600-llvm-compiler
+
+.if !empty(PKG_OPTIONS:Mlibelf)
+.include "../../devel/libelf/buildlink3.mk"
+CPPFLAGS+=             -I${BUILDLINK_PREFIX.libelf}/include/libelf
+.endif
+
+# XXX update libLLVM to use it instead
+#BUILDLINK_API_DEPENDS.libLLVM+= libLLVM>=5.0
+.include "../../lang/llvm/buildlink3.mk"
+CONFIGURE_ENV+=                ac_cv_path_ac_pt_LLVM_CONFIG=${LLVM_CONFIG_PATH}
+.else # !llvm
+CONFIGURE_ARGS+=       --disable-xa
+CONFIGURE_ARGS+=       --disable-llvm
+CONFIGURE_ARGS+=       --disable-llvm-shared-libs
+# CONFIGURE_ARGS+=     --disable-r600-llvm-compiler
+.endif # llvm
+
+CONFIGURE_ARGS+=       --with-gallium-drivers=${GALLIUM_DRIVERS:ts,}
+CONFIGURE_ARGS+=       --with-dri-drivers=${DRI_DRIVERS:ts,}
+
+.else # !dri
+CONFIGURE_ARGS+=       --with-gallium-drivers=
+CONFIGURE_ARGS+=       --with-dri-drivers=
+CONFIGURE_ARGS+=       --disable-dri
+CONFIGURE_ARGS+=       --disable-dri3
+CONFIGURE_ARGS+=       --disable-egl
+CONFIGURE_ARGS+=       --disable-gbm
+CONFIGURE_ARGS+=       --disable-gles1
+CONFIGURE_ARGS+=       --disable-gles2
+CONFIGURE_ARGS+=       --enable-xlib-glx
+.if !empty(PKG_OPTIONS:Mllvm)
+PKG_FAIL_REASON+=      "The llvm PKG_OPTION must also be disabled when dri is disabled"
+.endif
+.endif # dri
+
+.if !empty(PKG_OPTIONS:Mdebug)
+CONFIGURE_ARGS+=       --enable-debug
+.endif
+
+.if !empty(PKG_OPTIONS:Mxvmc)
+.include "../../x11/libXvMC/buildlink3.mk"
+PLIST.xvmc=            yes
+.endif
+
+.if !empty(PKG_OPTIONS:Mnoatexit)
+CPPFLAGS+=     -DHAVE_NOATEXIT
+.endif

Index: pkgsrc/graphics/MesaLib18/files/patch-manual_fdo90311
diff -u /dev/null pkgsrc/graphics/MesaLib18/files/patch-manual_fdo90311:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/files/patch-manual_fdo90311       Sun Oct  7 23:49:31 2018
@@ -0,0 +1,111 @@
+$NetBSD: patch-manual_fdo90311,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+https://bugs.freedesktop.org/show_bug.cgi?id=90311
+
+Regenerated with autoconf to link with C++ linker using this addition:
+
+libglx_la_LIBADD += $(builddir)/apple/libappleglx.la + $(top_builddir)/src/mesa/libmesa.la
+nodist_EXTRA_lib@GL_LIB@_la_SOURCES = dummy.cpp
+
+and then dummy.cpp manuallly edited out.
+
+--- src/glx/Makefile.in.orig   2015-12-15 14:52:32.000000000 +0000
++++ src/glx/Makefile.in
+@@ -143,7 +143,7 @@ target_triplet = @target@
+ @HAVE_APPLEDRI_TRUE@  applegl_glx.c
+ 
+ @HAVE_APPLEDRI_TRUE@am__append_7 = apple
+-@HAVE_APPLEDRI_TRUE@am__append_8 = $(builddir)/apple/libappleglx.la
++@HAVE_APPLEDRI_TRUE@am__append_8 = $(builddir)/apple/libappleglx.la $(top_builddir)/src/mesa/libmesa.la
+ subdir = src/glx
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_gnu_make.m4 \
+@@ -202,10 +202,10 @@ AM_V_lt = $(am__v_lt_@AM_V@)
+ am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+ am__v_lt_0 = --silent
+ am__v_lt_1 = 
+-lib@GL_LIB@_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+-      $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+-      $(AM_CFLAGS) $(CFLAGS) $(lib@GL_LIB@_la_LDFLAGS) $(LDFLAGS) -o \
+-      $@
++lib@GL_LIB@_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
++      $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
++      $(AM_CXXFLAGS) $(CXXFLAGS) $(lib@GL_LIB@_la_LDFLAGS) \
++      $(LDFLAGS) -o $@
+ libglx_la_DEPENDENCIES = $(top_builddir)/src/loader/libloader.la \
+       $(am__append_5) $(am__append_8)
+ am__libglx_la_SOURCES_DIST = clientattrib.c clientinfo.c compsize.c \
+@@ -276,6 +276,24 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+ am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+ am__v_CCLD_0 = @echo "  CCLD    " $@;
+ am__v_CCLD_1 = 
++CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
++      $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
++LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
++      $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
++      $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
++      $(AM_CXXFLAGS) $(CXXFLAGS)
++AM_V_CXX = $(am__v_CXX_@AM_V@)
++am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
++am__v_CXX_0 = @echo "  CXX     " $@;
++am__v_CXX_1 = 
++CXXLD = $(CXX)
++CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
++      $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
++      $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
++AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
++am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
++am__v_CXXLD_0 = @echo "  CXXLD   " $@;
++am__v_CXXLD_1 = 
+ SOURCES = $(lib@GL_LIB@_la_SOURCES) $(libglx_la_SOURCES)
+ DIST_SOURCES = $(lib@GL_LIB@_la_SOURCES) $(am__libglx_la_SOURCES_DIST)
+ RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+@@ -696,7 +714,7 @@ lib@GL_LIB@_la_LDFLAGS = $(GL_LDFLAGS)
+ all: all-recursive
+ 
+ .SUFFIXES:
+-.SUFFIXES: .c .lo .o .obj
++.SUFFIXES: .c .cpp .lo .o .obj
+ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(top_srcdir)/install-lib-links.mk $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+@@ -775,7 +793,7 @@ clean-noinstLTLIBRARIES:
+       }
+ 
+ lib@GL_LIB@.la: $(lib@GL_LIB@_la_OBJECTS) $(lib@GL_LIB@_la_DEPENDENCIES) $(EXTRA_lib@GL_LIB@_la_DEPENDENCIES) 
+-      $(AM_V_CCLD)$(lib@GL_LIB@_la_LINK) -rpath $(libdir) $(lib@GL_LIB@_la_OBJECTS) $(lib@GL_LIB@_la_LIBADD) $(LIBS)
++      $(AM_V_CXXLD)$(lib@GL_LIB@_la_LINK) -rpath $(libdir) $(lib@GL_LIB@_la_OBJECTS) $(lib@GL_LIB@_la_LIBADD) $(LIBS)
+ 
+ libglx.la: $(libglx_la_OBJECTS) $(libglx_la_DEPENDENCIES) $(EXTRA_libglx_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK)  $(libglx_la_OBJECTS) $(libglx_la_LIBADD) $(LIBS)
+@@ -852,6 +870,30 @@ distclean-compile:
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@     DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+ 
++.cpp.o:
++@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
++@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
++@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
++@AMDEP_TRUE@@am__fastdepCXX_FALSE@    $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCXX_FALSE@    DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCXX_FALSE@        $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
++
++.cpp.obj:
++@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
++@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
++@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
++@AMDEP_TRUE@@am__fastdepCXX_FALSE@    $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCXX_FALSE@    DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCXX_FALSE@        $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
++
++.cpp.lo:
++@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
++@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
++@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
++@AMDEP_TRUE@@am__fastdepCXX_FALSE@    $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
++@AMDEP_TRUE@@am__fastdepCXX_FALSE@    DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++@am__fastdepCXX_FALSE@        $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
++
+ mostlyclean-libtool:
+       -rm -f *.lo
+ 

Index: pkgsrc/graphics/MesaLib18/patches/patch-configure
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-configure:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-configure   Sun Oct  7 23:49:31 2018
@@ -0,0 +1,122 @@
+$NetBSD: patch-configure,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+Don't check for pthread stubs on netbsd.
+
+From FreeBSD ports graphics/mesa-dri 18.0.0,
+DragonFly dports graphics/mesa-dri 17.3.1,
+files/patch-configure
+
+* Extend to FreeBSD
+osx: ld does not support --build-ld
+
+* For FreeBSD: Use monotonic clock for timeouts.
+
+* For FreeBSD: Implement futex_wake() and futex_wait() via _umtx_op() 
+
+* dri3: Mon Apr 10 19:14:48 2017 UTC
+DRI3 remains enabled at compile time, but it is now disabled at
+runtime for stock FreeBSD.  Set LIBGL_DRI3_ENABLE in the
+environment to enable DRI3.
+This change was made to work around a problem in libEGL,
+which fails to fall back to using DRI2 when run on a system
+without DRI3 support.
+
+--- configure.orig     2018-09-07 21:18:17.000000000 +0000
++++ configure
+@@ -21746,7 +21746,7 @@ fi
+ 
+ 
+ case "$host_os" in
+-darwin*)
++darwin* | freebsd*)
+     LD_BUILD_ID=""
+     ;;
+ *)
+@@ -22108,12 +22108,13 @@ case "$host_os" in
+ darwin*)
+     ;;
+ *)
+-    for ac_func in clock_gettime
++    for ac_func in clock_gettime clock_nanosleep
+ do :
+-  ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime"
+-if test "x$ac_cv_func_clock_gettime" = xyes; then :
++  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
++ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
++if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+   cat >>confdefs.h <<_ACEOF
+-#define HAVE_CLOCK_GETTIME 1
++#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+ _ACEOF
+  CLOCK_LIB=
+ else
+@@ -22670,7 +22671,7 @@ fi
+ PTHREAD_LIBS="$PTHREAD_LIBS -pthread"
+ 
+ case "$host_os" in
+-linux* | cygwin* | darwin* | solaris* | *-gnu* | gnu* | openbsd*)
++linux* | cygwin* | darwin* | solaris* | *-gnu* | gnu* | openbsd* | netbsd*)
+     pthread_stubs_possible="no"
+     ;;
+ * )
+@@ -22772,11 +22773,20 @@ $as_echo "yes" >&6; }
+ fi
+ fi
+ 
+-ac_fn_c_check_header_mongrel "$LINENO" "linux/futex.h" "ac_cv_header_linux_futex_h" "$ac_includes_default"
+-if test "x$ac_cv_header_linux_futex_h" = xyes; then :
+-  DEFINES="$DEFINES -DHAVE_LINUX_FUTEX_H"
++for ac_header in linux/futex.h sys/umtx.h
++do :
++  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
++ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#include <errno.h>
++     #include <sys/types.h>
++"
++if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
++  cat >>confdefs.h <<_ACEOF
++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
++_ACEOF
++ DEFINES="$DEFINES -DHAVE_LINUX_FUTEX_H"
+ fi
+ 
++done
+ 
+ 
+ # Check whether --enable-selinux was given.
+@@ -23674,7 +23684,7 @@ fi
+ 
+ 
+ case "$host_os" in
+-linux*)
++linux* | freebsd* | dragonfly*)
+     dri3_default=yes
+     ;;
+ *)
+@@ -25975,7 +25985,7 @@ $as_echo "yes" >&6; }
+       have_dri3_modifiers=yes
+ fi
+ 
+-    if test "x$have_dri3_modifiers" == xyes; then
++    if test "x$have_dri3_modifiers" = xyes; then
+         DEFINES="$DEFINES -DHAVE_DRI3_MODIFIERS"
+     fi
+ fi
+@@ -28200,9 +28210,6 @@ rm -f core conftest.err conftest.$ac_obj
+         CLANG_LIBDIR=${LLVM_LIBDIR}
+     fi
+     CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
+-    if test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"; then :
+-  as_fn_error $? "Could not find clang internal header stddef.h in $CLANG_RESOURCE_DIR Use --with-clang-libdir to specify the correct path to the clang libraries." "$LINENO" 5
+-fi
+ fi
+  if test "x$enable_opencl" = xyes; then
+   HAVE_CLOVER_TRUE=
+@@ -29648,7 +29655,7 @@ $as_echo "$as_me: WARNING: Building mesa
+         fi
+     fi
+ 
+-                        if test "x$enable_glx" == xgallium-xlib; then
++                        if test "x$enable_glx" = xgallium-xlib; then
+         GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $LLVM_LIBS"
+     fi
+     if test "x$enable_gallium_osmesa" = xyes; then
Index: pkgsrc/graphics/MesaLib18/patches/patch-configure.ac
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-configure.ac:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-configure.ac        Sun Oct  7 23:49:31 2018
@@ -0,0 +1,82 @@
+$NetBSD: patch-configure.ac,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+Don't check for pthread stubs on netbsd.
+
+From FreeBSD ports graphics/mesa-dri 18.0.0,
+DragonFly dports graphics/mesa-dri 17.3.1,
+files/patch-configure
+
+* Extend to FreeBSD
+osx: ld does not support --build-ld
+
+* For FreeBSD: Use monotonic clock for timeouts.
+
+* For FreeBSD: Implement futex_wake() and futex_wait() via _umtx_op() 
+
+* dri3: Mon Apr 10 19:14:48 2017 UTC
+DRI3 remains enabled at compile time, but it is now disabled at
+runtime for stock FreeBSD.  Set LIBGL_DRI3_ENABLE in the
+environment to enable DRI3.
+This change was made to work around a problem in libEGL,
+which fails to fall back to using DRI2 when run on a system
+without DRI3 support.
+
+--- configure.ac.orig  2018-02-09 02:17:57.000000000 +0000
++++ configure.ac
+@@ -713,7 +713,7 @@ dnl
+ dnl OSX linker does not support build-id
+ dnl
+ case "$host_os" in
+-darwin*)
++darwin* | freebsd*)
+     LD_BUILD_ID=""
+     ;;
+ *)
+@@ -918,7 +918,7 @@ case "$host_os" in
+ darwin*)
+     ;;
+ *)
+-    AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
++    AC_CHECK_FUNCS([clock_gettime clock_nanosleep], [CLOCK_LIB=],
+                    [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
+                                  [AC_MSG_ERROR([Could not find clock_gettime])])])
+     AC_SUBST([CLOCK_LIB])
+@@ -953,7 +953,7 @@ PTHREAD_LIBS="$PTHREAD_LIBS -pthread"
+ dnl pthread-stubs is mandatory on some BSD platforms, due to the nature of the
+ dnl project. Even then there's a notable issue as described in the project README
+ case "$host_os" in
+-linux* | cygwin* | darwin* | solaris* | *-gnu* | gnu* | openbsd*)
++linux* | cygwin* | darwin* | solaris* | *-gnu* | gnu* | openbsd* | netbsd*)
+     pthread_stubs_possible="no"
+     ;;
+ * )
+@@ -966,7 +966,10 @@ if test "x$pthread_stubs_possible" = xye
+ fi
+ 
+ dnl Check for futex for fast inline simple_mtx_t.
+-AC_CHECK_HEADER([linux/futex.h], [DEFINES="$DEFINES -DHAVE_LINUX_FUTEX_H"])
++AC_CHECK_HEADERS([linux/futex.h sys/umtx.h],
++    [DEFINES="$DEFINES -DHAVE_LINUX_FUTEX_H"],,
++    [#include <errno.h>
++     #include <sys/types.h>])
+ 
+ dnl SELinux awareness.
+ AC_ARG_ENABLE([selinux],
+@@ -1249,7 +1252,7 @@ fi
+ AC_SUBST(LIBSENSORS_LIBS)
+ 
+ case "$host_os" in
+-linux*)
++linux* | freebsd* | dragonfly*)
+     dri3_default=yes
+     ;;
+ *)
+@@ -2481,8 +2484,6 @@ if test "x$enable_opencl" = xyes; then
+         CLANG_LIBDIR=${LLVM_LIBDIR}
+     fi
+     CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
+-    AS_IF([test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"],
+-        [AC_MSG_ERROR([Could not find clang internal header stddef.h in $CLANG_RESOURCE_DIR Use --with-clang-libdir to specify the correct path to the clang libraries.])])
+ fi
+ AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes)
+ AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes)
Index: pkgsrc/graphics/MesaLib18/patches/patch-include_GL_internal_dri__interface.h
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-include_GL_internal_dri__interface.h:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-include_GL_internal_dri__interface.h        Sun Oct  7 23:49:31 2018
@@ -0,0 +1,27 @@
+$NetBSD: patch-include_GL_internal_dri__interface.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+From FreeBSD ports graphics/mesa-dri 17.2.4.
+
+GCC on 9.x doesn't allow types to be overwritten, these types are defined
+in drm.h also, which causes build issues in xorg-server.
+
+--- include/GL/internal/dri_interface.h.orig   2017-11-20 14:25:47.000000000 +0000
++++ include/GL/internal/dri_interface.h
+@@ -40,6 +40,9 @@
+ #ifndef DRI_INTERFACE_H
+ #define DRI_INTERFACE_H
+ 
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++#include <drm.h>
++#else
+ #ifdef HAVE_LIBDRM
+ #include <drm.h>
+ #else
+@@ -47,6 +50,7 @@ typedef unsigned int drm_context_t;
+ typedef unsigned int drm_drawable_t;
+ typedef struct drm_clip_rect drm_clip_rect_t;
+ #endif
++#endif /* __FreeBSD__ || __DragonFly__ */
+ 
+ #include <stdint.h>
+ 
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_amd_vulkan_winsys_amdgpu_radv__amdgpu__cs.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_amd_vulkan_winsys_amdgpu_radv__amdgpu__cs.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_amd_vulkan_winsys_amdgpu_radv__amdgpu__cs.c     Sun Oct  7 23:49:31 2018
@@ -0,0 +1,19 @@
+$NetBSD: patch-src_amd_vulkan_winsys_amdgpu_radv__amdgpu__cs.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+Define ETIME if missing
+
+https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225415
+FreeBSD Bugzilla: Bug 225415 graphics/mesa-dri: update to 18.0.0 
+
+--- src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c.orig 2018-02-09 02:17:57.000000000 +0000
++++ src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
+@@ -33,6 +33,9 @@
+ #include "radv_amdgpu_bo.h"
+ #include "sid.h"
+ 
++#ifndef ETIME
++#define ETIME ETIMEDOUT
++#endif
+ 
+ enum {
+       VIRTUAL_BUFFER_HASH_TABLE_SIZE = 1024
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_compiler_builtin__type__macros.h
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_compiler_builtin__type__macros.h:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_compiler_builtin__type__macros.h        Sun Oct  7 23:49:31 2018
@@ -0,0 +1,25 @@
+$NetBSD: patch-src_compiler_builtin__type__macros.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+Workaround netbsd headers.
+
+--- src/compiler/builtin_type_macros.h.orig    2018-09-07 21:18:07.000000000 +0000
++++ src/compiler/builtin_type_macros.h
+@@ -28,6 +28,18 @@
+  * language version or extension might provide them.
+  */
+ 
++#ifdef __NetBSD__ /* XXX https://mail-index.netbsd.org/tech-userlevel/2018/09/08/msg011381.html */
++#undef uint8_t
++#undef uint16_t
++#undef uint32_t
++#undef uint64_t
++#undef int8_t
++#undef int16_t
++#undef int32_t
++#undef int64_t
++#endif
++
++
+ DECL_TYPE(error,  GL_INVALID_ENUM, GLSL_TYPE_ERROR, 0, 0)
+ DECL_TYPE(void,   GL_INVALID_ENUM, GLSL_TYPE_VOID,  0, 0)
+ 
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_compiler_glsl_glsl__parser__extras.cpp
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_compiler_glsl_glsl__parser__extras.cpp:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_compiler_glsl_glsl__parser__extras.cpp  Sun Oct  7 23:49:31 2018
@@ -0,0 +1,18 @@
+$NetBSD: patch-src_compiler_glsl_glsl__parser__extras.cpp,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+atexit() is not a good idea in a library; use destructor attribute.
+
+--- src/compiler/glsl/glsl_parser_extras.cpp.orig      2017-09-25 16:56:18.000000000 +0000
++++ src/compiler/glsl/glsl_parser_extras.cpp
+@@ -2224,7 +2224,11 @@ extern "C" {
+  * programs would be invalid.  So this should happen at approximately
+  * program exit.
+  */
++#if defined(HAVE_NOATEXIT)
++void __attribute__((__destructor__))
++#else
+ void
++#endif
+ _mesa_destroy_shader_compiler(void)
+ {
+    _mesa_destroy_shader_compiler_caches();
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_egl_drivers_dri2_platform__drm.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_egl_drivers_dri2_platform__drm.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_egl_drivers_dri2_platform__drm.c        Sun Oct  7 23:49:31 2018
@@ -0,0 +1,16 @@
+$NetBSD: patch-src_egl_drivers_dri2_platform__drm.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+netbsd-5 build fix
+
+--- src/egl/drivers/dri2/platform_drm.c.orig   2017-10-19 12:23:53.000000000 +0000
++++ src/egl/drivers/dri2/platform_drm.c
+@@ -688,7 +688,9 @@ dri2_initialize_drm(_EGLDriver *drv, _EG
+       }
+       dri2_dpy->own_device = true;
+    } else {
++#ifdef F_DUPFD_CLOEXEC
+       dri2_dpy->fd = fcntl(gbm_device_get_fd(gbm), F_DUPFD_CLOEXEC, 3);
++#endif
+       if (dri2_dpy->fd < 0) {
+          err = "DRI2: failed to fcntl() existing gbm device";
+          goto cleanup;
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_egl_drivers_dri2_platform__x11.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_egl_drivers_dri2_platform__x11.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_egl_drivers_dri2_platform__x11.c        Sun Oct  7 23:49:31 2018
@@ -0,0 +1,60 @@
+$NetBSD: patch-src_egl_drivers_dri2_platform__x11.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+Provide compat strndup for older Darwin.
+
+* From FreeBSD ports 18.0.0:
+work-around for https://bugs.freedesktop.org/show_bug.cgi?id=100627
+
+Mon Apr 10 19:14:48 2017 UTC
+DRI3 remains enabled at compile time, but it is now disabled at
+runtime for stock FreeBSD.  Set LIBGL_DRI3_ENABLE in the
+environment to enable DRI3.
+This change was made to work around a problem in libEGL,
+which fails to fall back to using DRI2 when run on a system
+without DRI3 support.
+
+* Added logging statement to note dri3 initialization being invoked.
+
+--- src/egl/drivers/dri2/platform_x11.c.orig   2018-02-09 02:17:57.000000000 +0000
++++ src/egl/drivers/dri2/platform_x11.c
+@@ -608,6 +608,23 @@ dri2_x11_local_authenticate(struct dri2_
+    return EGL_TRUE;
+ }
+ 
++#if (defined(__APPLE__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__-0 < 1070)
++static char *
++strndup(const char *s, int length)
++{
++   char *d;
++
++   d = malloc(length + 1);
++   if (d == NULL)
++      return NULL;
++
++   memcpy(d, s, length);
++   d[length] = '\0';
++
++   return d;
++}
++#endif
++
+ static EGLBoolean
+ dri2_x11_connect(struct dri2_egl_display *dri2_dpy)
+ {
+@@ -1466,8 +1483,15 @@ dri2_initialize_x11(_EGLDriver *drv, _EG
+ 
+    if (!disp->Options.ForceSoftware) {
+ #ifdef HAVE_DRI3
+-      if (!env_var_as_boolean("LIBGL_DRI3_DISABLE", false))
++#if ((defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) && !defined(__DRM_NEXT__)) || defined(__DragonFly__) || defined(__NetBSD__)
++      if (env_var_as_boolean("LIBGL_DRI3_ENABLE", false))
++#endif
++      if (!env_var_as_boolean("LIBGL_DRI3_DISABLE", false)) {
++         _eglLog(_EGL_INFO, "platform_x11.c: calling dri2_initialize_x11_dri3\n");
+          initialized = dri2_initialize_x11_dri3(drv, disp);
++         if (initialized)
++            _eglLog(_EGL_INFO, "platform_x11.c: initialized by dri2_initialize_x11_dri3\n");
++      }
+ #endif
+ 
+       if (!initialized)
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_egl_main_eglglobals.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_egl_main_eglglobals.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_egl_main_eglglobals.c   Sun Oct  7 23:49:31 2018
@@ -0,0 +1,53 @@
+$NetBSD: patch-src_egl_main_eglglobals.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+atexit() is not a good idea in shared libraries.
+
+FreeBSD reported atexit bug for 10.6:
+https://bugs.freedesktop.org/show_bug.cgi?id=91869
+
+--- src/egl/main/eglglobals.c.orig     2018-01-18 21:30:28.000000000 +0000
++++ src/egl/main/eglglobals.c
+@@ -85,11 +85,22 @@ struct _egl_global _eglGlobal =
+    .debugTypesEnabled = _EGL_DEBUG_BIT_CRITICAL | _EGL_DEBUG_BIT_ERROR,
+ };
+ 
++#if defined(HAVE_NOATEXIT)
++static EGLBoolean registered = EGL_FALSE;
+ 
++static void __attribute__((__destructor__))
++#else
+ static void
++#endif
+ _eglAtExit(void)
+ {
+    EGLint i;
++
++#if defined(HAVE_NOATEXIT)
++   if (!registered)
++      return;
++#endif
++
+    for (i = _eglGlobal.NumAtExitCalls - 1; i >= 0; i--)
+       _eglGlobal.AtExitCalls[i]();
+ }
+@@ -99,14 +110,20 @@ void
+ _eglAddAtExitCall(void (*func)(void))
+ {
+    if (func) {
++#if !defined(HAVE_NOATEXIT)
+       static EGLBoolean registered = EGL_FALSE;
++#endif
+ 
+       mtx_lock(_eglGlobal.Mutex);
+ 
++#if defined(HAVE_NOATEXIT)
++      registered = EGL_TRUE;
++#else
+       if (!registered) {
+          atexit(_eglAtExit);
+          registered = EGL_TRUE;
+       }
++#endif
+ 
+       assert(_eglGlobal.NumAtExitCalls < ARRAY_SIZE(_eglGlobal.AtExitCalls));
+       _eglGlobal.AtExitCalls[_eglGlobal.NumAtExitCalls++] = func;
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_auxiliary_drivers_trace_tr__dump.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_auxiliary_drivers_trace_tr__dump.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_auxiliary_drivers_trace_tr__dump.c      Sun Oct  7 23:49:31 2018
@@ -0,0 +1,50 @@
+$NetBSD: patch-src_gallium_auxiliary_drivers_trace_tr__dump.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+atexit() is not a good idea in shared libraries.
+
+FreeBSD reported atexit bug for 10.6:
+https://bugs.freedesktop.org/show_bug.cgi?id=91869
+
+--- src/gallium/auxiliary/driver_trace/tr_dump.c.orig  2018-09-07 21:18:07.000000000 +0000
++++ src/gallium/auxiliary/driver_trace/tr_dump.c
+@@ -63,7 +63,6 @@ static mtx_t call_mutex = _MTX_INITIALIZ
+ static long unsigned call_no = 0;
+ static boolean dumping = FALSE;
+ 
+-
+ static inline void
+ trace_dump_write(const char *buf, size_t size)
+ {
+@@ -171,9 +170,20 @@ trace_dump_trace_flush(void)
+    }
+ }
+ 
++#if defined(HAVE_NOATEXIT)
++static boolean trace_dump_has_begun = FALSE;
++
++static void __attribute__((__destructor__))
++#else
+ static void
++#endif
+ trace_dump_trace_close(void)
+ {
++#if defined(HAVE_NOATEXIT)
++   if (!trace_dump_has_begun)
++      return;
++#endif
++
+    if (stream) {
+       trace_dump_writes("</trace>\n");
+       if (close_stream) {
+@@ -233,7 +243,11 @@ trace_dump_trace_begin(void)
+        * screen multiple times, so we only write </trace> tag and close at exit
+        * time.
+        */
++#if defined(HAVE_NOATEXIT)
++      trace_dump_has_begun = TRUE;
++#else
+       atexit(trace_dump_trace_close);
++#endif
+    }
+ 
+    return TRUE;
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_auxiliary_pipe-loader_pipe__loader__drm.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_auxiliary_pipe-loader_pipe__loader__drm.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_auxiliary_pipe-loader_pipe__loader__drm.c       Sun Oct  7 23:49:31 2018
@@ -0,0 +1,127 @@
+$NetBSD: patch-src_gallium_auxiliary_pipe-loader_pipe__loader__drm.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+* From FreeBSD ports / DragonFly dports graphics/mesa-dri
+
+Revert the following commit.
+
+FreeBSD and DragonFly don't have the required render nodes.
+
+-------
+
+From 69a1b9959e59653da262185c4e2cf57d24939b19 Mon Sep 17 00:00:00 2001
+Date: Mon, 29 Jun 2015 12:36:45 +0100
+Subject: pipe-loader: drop support for non-render node devices
+
+Render nodes have been around for quite some time. Removing support via
+the master/primary node allows us to clean up the conditional
+compilation and simplify the build greatly.
+
+For example currently we the pipe-loader, which explicitly links against
+xcb and friends (for X auth) if found at compile-time. That
+would cause problems as one will be forced to use X/xcb, even if it's a
+headless system that is used for opencl.
+
+v2: Clarify the linking topic in the commit message.
+
+* Extended for NetBSD.
+
+--- src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c.orig   2017-02-06 13:49:09.000000000 +0000
++++ src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
+@@ -224,6 +224,16 @@ pipe_loader_drm_probe_fd(struct pipe_loa
+    return false;
+ }
+
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) || defined(__NetBSD__)
++static int
++open_drm_minor(int minor)
++{
++   char path[PATH_MAX];
++   snprintf(path, sizeof(path), DRM_DEV_NAME, DRM_DIR_NAME, minor);
++   return open(path, O_RDWR, 0);
++}
++#endif
++
+ static int
+ open_drm_render_node_minor(int minor)
+ {
+@@ -236,7 +246,19 @@ open_drm_render_node_minor(int minor)
+ int
+ pipe_loader_drm_probe(struct pipe_loader_device **devs, int ndev)
+ {
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) || defined(__NetBSD__)
++   int i, k, fd, num_render_node_devs;
++   int j = 0;
++
++   struct {
++      unsigned vendor_id;
++      unsigned chip_id;
++   } render_node_devs[DRM_RENDER_NODE_MAX_NODES];
++
++   /* Look for render nodes first */
++#else
+    int i, j, fd;
++#endif
+ 
+    for (i = DRM_RENDER_NODE_MIN_MINOR, j = 0;
+         i <= DRM_RENDER_NODE_MAX_MINOR; i++) {
+@@ -251,6 +273,11 @@ pipe_loader_drm_probe(struct pipe_loader
+          continue;
+       }
+
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) || defined(__NetBSD__)
++      render_node_devs[j].vendor_id = dev->u.pci.vendor_id;
++      render_node_devs[j].chip_id = dev->u.pci.chip_id;
++
++#endif
+       if (j < ndev) {
+          devs[j] = dev;
+       } else {
+@@ -260,6 +287,48 @@ pipe_loader_drm_probe(struct pipe_loader
+       j++;
+    }
+
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) || defined(__NetBSD__)
++   num_render_node_devs = j;
++
++   /* Next look for drm devices. */
++   for (i = 0; i < DRM_MAX_MINOR; i++) {
++      struct pipe_loader_device *dev;
++      boolean duplicate = FALSE;
++      fd = open_drm_minor(i);
++      if (fd < 0)
++         continue;
++
++      if (!pipe_loader_drm_probe_fd(&dev, fd)) {
++         close(fd);
++         continue;
++      }
++
++      /* Check to make sure we aren't already accessing this device via
++       * render nodes.
++       */
++      for (k = 0; k < num_render_node_devs; k++) {
++         if (dev->u.pci.vendor_id == render_node_devs[k].vendor_id &&
++             dev->u.pci.chip_id == render_node_devs[k].chip_id) {
++            close(fd);
++            dev->ops->release(&dev);
++            duplicate = TRUE;
++            break;
++         }
++      }
++
++      if (duplicate)
++         continue;
++
++      if (j < ndev) {
++         devs[j] = dev;
++      } else {
++         dev->ops->release(&dev);
++      }
++
++      j++;
++   }
++
++#endif
+    return j;
+ }
+ 
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_auxiliary_util_u__format__tests.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_auxiliary_util_u__format__tests.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_auxiliary_util_u__format__tests.c       Sun Oct  7 23:49:31 2018
@@ -0,0 +1,17 @@
+$NetBSD: patch-src_gallium_auxiliary_util_u__format__tests.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+On old NetBSD, NAN in math.h is __nanf.__val. Which is not constant.
+
+--- src/gallium/auxiliary/util/u_format_tests.c.orig   2014-09-12 21:30:32.000000000 +0000
++++ src/gallium/auxiliary/util/u_format_tests.c
+@@ -28,6 +28,10 @@
+ 
+ #include <math.h>
+ #include <float.h>
++#if defined(__NetBSD__) && __NetBSD_Version__ < 600000000
++#undef NAN
++#define NAN __builtin_nanf("")
++#endif
+ 
+ #include "pipe/p_config.h"
+ #include "u_memory.h"
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_drivers_nouveau_nouveau__vp3__video.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_drivers_nouveau_nouveau__vp3__video.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_drivers_nouveau_nouveau__vp3__video.c   Sun Oct  7 23:49:31 2018
@@ -0,0 +1,18 @@
+$NetBSD: patch-src_gallium_drivers_nouveau_nouveau__vp3__video.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+Fix build on platforms without close-on-exec.
+
+--- src/gallium/drivers/nouveau/nouveau_vp3_video.c.orig       2017-02-13 11:55:49.000000000 +0000
++++ src/gallium/drivers/nouveau/nouveau_vp3_video.c
+@@ -294,7 +294,11 @@ nouveau_vp3_load_firmware(struct nouveau
+    if (nouveau_bo_map(dec->fw_bo, NOUVEAU_BO_WR, dec->client))
+       return 1;
+ 
++#ifdef O_CLOEXEC
+    fd = open(path, O_RDONLY | O_CLOEXEC);
++#else
++   fd = open(path, O_RDONLY);
++#endif
+    if (fd < 0) {
+       fprintf(stderr, "opening firmware file %s failed: %m\n", path);
+       return 1;
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_drivers_nouveau_nv50_nv84__video.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_drivers_nouveau_nv50_nv84__video.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_drivers_nouveau_nv50_nv84__video.c      Sun Oct  7 23:49:31 2018
@@ -0,0 +1,18 @@
+$NetBSD: patch-src_gallium_drivers_nouveau_nv50_nv84__video.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+Fix build on platforms without close-on-exec.
+
+--- src/gallium/drivers/nouveau/nv50/nv84_video.c.orig 2015-03-21 00:51:18.000000000 +0000
++++ src/gallium/drivers/nouveau/nv50/nv84_video.c
+@@ -34,7 +34,11 @@
+ static int
+ nv84_copy_firmware(const char *path, void *dest, ssize_t len)
+ {
++#ifdef O_CLOEXEC
+    int fd = open(path, O_RDONLY | O_CLOEXEC);
++#else
++   int fd = open(path, O_RDONLY);
++#endif
+    ssize_t r;
+    if (fd < 0) {
+       fprintf(stderr, "opening firmware file %s failed: %m\n", path);
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_drivers_vc4_vc4__bufmgr.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_drivers_vc4_vc4__bufmgr.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_drivers_vc4_vc4__bufmgr.c       Sun Oct  7 23:49:31 2018
@@ -0,0 +1,18 @@
+$NetBSD: patch-src_gallium_drivers_vc4_vc4__bufmgr.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+Patch from FreeBSD ports graphics/mesa-dri 17.1.0
+
+# define ETIME as ETIMEOUT same as in intel driver
+
+--- src/gallium/drivers/vc4/vc4_bufmgr.c.orig  2017-05-25 07:13:13.000000000 +0000
++++ src/gallium/drivers/vc4/vc4_bufmgr.c
+@@ -27,6 +27,9 @@
+ #include <fcntl.h>
+ #include <xf86drm.h>
+ #include <xf86drmMode.h>
++#ifndef ETIME
++#define ETIME ETIMEDOUT
++#endif
+ 
+ #include "util/u_hash_table.h"
+ #include "util/u_memory.h"
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_include_pipe_p__config.h
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_include_pipe_p__config.h:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_include_pipe_p__config.h        Sun Oct  7 23:49:31 2018
@@ -0,0 +1,31 @@
+$NetBSD: patch-src_gallium_include_pipe_p__config.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+* Patches for Sparc from FreeBSD ports for mesa-dri 17.2.3.
+
+* Definitions for DragonFly already in upstream source.
+
+--- src/gallium/include/pipe/p_config.h.orig   2017-10-19 12:23:53.000000000 +0000
++++ src/gallium/include/pipe/p_config.h
+@@ -77,6 +77,12 @@
+ #define PIPE_CC_ICL
+ #endif
+ 
++#if defined(__sparc__) || defined(__sparc64__)
++#define PIPE_ARCH_SPARC
++#if defined(__sparc64__)
++#define PIPE_ARCH_SPARC_64
++#endif
++#endif
+ 
+ /*
+  * Processor architecture
+@@ -131,7 +137,8 @@
+ 
+ #if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64) || defined(PIPE_ARCH_ARM) || defined(PIPE_ARCH_AARCH64)
+ #define PIPE_ARCH_LITTLE_ENDIAN
+-#elif defined(PIPE_ARCH_PPC) || defined(PIPE_ARCH_PPC_64) || defined(PIPE_ARCH_S390)
++#elif defined(PIPE_ARCH_PPC) || defined(PIPE_ARCH_PPC_64) || defined(PIPE_ARCH_S390) || defined(PIPE_ARCH_SPARC) || defined(PIPE_ARCH_SPARC_64)
++
+ #define PIPE_ARCH_BIG_ENDIAN
+ #endif
+ 
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_state__trackers_clover_llvm_invocation.cpp
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_state__trackers_clover_llvm_invocation.cpp:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_state__trackers_clover_llvm_invocation.cpp      Sun Oct  7 23:49:31 2018
@@ -0,0 +1,40 @@
+$NetBSD: patch-src_gallium_state__trackers_clover_llvm_invocation.cpp,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+Patch from FreeBSD ports graphics/mesa-dri 17.1.0
+
+# fix errors like the following
+#
+# llvm/invocation.cpp:(.text+0x1275): undefined reference to `std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::c_str()
+ const'
+# /usr/bin/ld: ../../../../src/gallium/state_trackers/clover/.libs/libclover.a(libclllvm_la-invocation.o): relocation R_X86_64_PC32 against `_ZNKSt3__112bas
+ic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5c_strEv' can not be used when making a shared object; recompile with -fPIC
+# /usr/bin/ld: final link failed: Bad value
+#
+
+--- src/gallium/state_trackers/clover/llvm/invocation.cpp.orig 2018-09-07 21:18:07.000000000 +0000
++++ src/gallium/state_trackers/clover/llvm/invocation.cpp
+@@ -181,6 +181,10 @@ namespace {
+       return get_lang_standard_from_version_str(device_version);
+    }
+ 
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++   const char* cstr(const std::string& str) { return str.c_str(); }
++#endif
++
+    std::unique_ptr<clang::CompilerInstance>
+    create_compiler_instance(const device &dev,
+                             const std::vector<std::string> &opts,
+@@ -193,8 +197,13 @@ namespace {
+       // Parse the compiler options.  A file name should be present at the end
+       // and must have the .cl extension in order for the CompilerInvocation
+       // class to recognize it as an OpenCL source file.
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++      std::vector<const char *> copts(opts.size());
++      std::transform(opts.begin(), opts.end(), copts.begin(), cstr);
++#else
+       const std::vector<const char *> copts =
+          map(std::mem_fn(&std::string::c_str), opts);
++#endif
+ 
+       const target &target = dev.ir_target();
+       const std::string &device_clc_version = dev.device_clc_version();
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_state__trackers_clover_llvm_metadata.hpp
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_state__trackers_clover_llvm_metadata.hpp:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_state__trackers_clover_llvm_metadata.hpp        Sun Oct  7 23:49:31 2018
@@ -0,0 +1,21 @@
+$NetBSD: patch-src_gallium_state__trackers_clover_llvm_metadata.hpp,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+From FreeBSD ports graphics/libGL mesa 13.0.5
+
+# Fix error: no matching constructor for initialization of 'std::vector<const ::llvm::MDNode *>' 
+#
+
+--- src/gallium/state_trackers/clover/llvm/metadata.hpp.orig   2017-02-13 11:55:49.000000000 +0000
++++ src/gallium/state_trackers/clover/llvm/metadata.hpp
+@@ -42,7 +42,11 @@ namespace clover {
+          get_kernel_nodes(const ::llvm::Module &mod) {
+             if (const ::llvm::NamedMDNode *n =
+                    mod.getNamedMetadata("opencl.kernels"))
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++               return { n->getOperand(0), n->getOperand(n->getNumOperands()) };
++#else
+                return { n->op_begin(), n->op_end() };
++#endif
+             else
+                return {};
+          }
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_state__trackers_clover_util_range.hpp
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_state__trackers_clover_util_range.hpp:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_gallium_state__trackers_clover_util_range.hpp   Sun Oct  7 23:49:31 2018
@@ -0,0 +1,40 @@
+$NetBSD: patch-src_gallium_state__trackers_clover_util_range.hpp,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+From FreeBSD ports for mesa 17.1.10:
+
+From b95533b981af9a6687b41418e7cc2a5652fc2bdb Mon Sep 17 00:00:00 2001
+Date: Fri, 7 Mar 2014 15:16:08 +0100
+Subject: [PATCH 3/3] Work around for clang 3.4 which fails to build Clover
+
+See:
+  https://bugs.freedesktop.org/show_bug.cgi?id=74098#c3
+
+--- src/gallium/state_trackers/clover/util/range.hpp.orig      2017-09-25 16:56:19.000000000 +0000
++++ src/gallium/state_trackers/clover/util/range.hpp
+@@ -362,6 +362,14 @@ namespace clover {
+       return { i, i + n };
+    }
+ 
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++   namespace detail {
++      template<typename T>
++      using fixup_function_type =
++         typename std::conditional<std::is_function<T>::value, T &, T>::type;
++   }
++#endif
++
+    ///
+    /// Create a range by transforming the contents of a number of
+    /// source ranges \a rs element-wise using a provided functor \a f.
+@@ -369,7 +377,11 @@ namespace clover {
+    /// \sa adaptor_range.
+    ///
+    template<typename F, typename... Rs>
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++   adaptor_range<detail::fixup_function_type<F>, Rs...>
++#else
+    adaptor_range<F, Rs...>
++#endif
+    map(F &&f, Rs &&... rs) {
+       return { std::forward<F>(f), std::forward<Rs>(rs)... };
+    }
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_gbm_Makefile.am
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_gbm_Makefile.am:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_gbm_Makefile.am Sun Oct  7 23:49:31 2018
@@ -0,0 +1,12 @@
+$NetBSD: patch-src_gbm_Makefile.am,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+--- src/gbm/Makefile.am.orig   2017-11-20 14:25:47.000000000 +0000
++++ src/gbm/Makefile.am
+@@ -28,6 +28,7 @@ libgbm_la_LIBADD = \
+       $(top_builddir)/src/loader/libloader.la \
+       $(top_builddir)/src/util/libmesautil.la \
+       $(top_builddir)/src/util/libxmlconfig.la \
++      $(PTHREAD_LIBS) \
+       $(DLOPEN_LIBS)
+ 
+ if HAVE_PLATFORM_WAYLAND
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_gbm_Makefile.in
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_gbm_Makefile.in:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_gbm_Makefile.in Sun Oct  7 23:49:31 2018
@@ -0,0 +1,13 @@
+$NetBSD: patch-src_gbm_Makefile.in,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+--- src/gbm/Makefile.in.orig   2018-02-09 02:18:14.000000000 +0000
++++ src/gbm/Makefile.in
+@@ -756,7 +756,7 @@ libgbm_la_LDFLAGS = \
+ 
+ libgbm_la_LIBADD = $(top_builddir)/src/loader/libloader.la \
+       $(top_builddir)/src/util/libmesautil.la \
+-      $(top_builddir)/src/util/libxmlconfig.la $(DLOPEN_LIBS) \
++      $(top_builddir)/src/util/libxmlconfig.la $(DLOPEN_LIBS) $(PTHREAD_LIBS) \
+       $(am__append_2) $(am__append_5)
+ TESTS = gbm-symbols-check
+ EXTRA_DIST = gbm-symbols-check meson.build
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_glx_apple_apple__glapi.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_glx_apple_apple__glapi.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_glx_apple_apple__glapi.c        Sun Oct  7 23:49:31 2018
@@ -0,0 +1,24 @@
+$NetBSD: patch-src_glx_apple_apple__glapi.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+https://bugs.freedesktop.org/show_bug.cgi?id=90311
+See also hacks.mk.
+
+--- src/glx/apple/apple_glapi.c.orig   2018-02-09 02:17:59.000000000 +0000
++++ src/glx/apple/apple_glapi.c
+@@ -39,6 +39,7 @@
+ #include <GL/gl.h>
+ 
+ #include "main/glheader.h"
++#include "main/remap.h"
+ #include "glapi.h"
+ #include "glapitable.h"
+ 
+@@ -53,6 +54,8 @@ static void _apple_glapi_create_table(vo
+     if (__applegl_api)
+         return;
+ 
++    _mesa_init_remap_table(); 
++
+     __ogl_framework_api = _glapi_create_table_from_handle(apple_cgl_get_dl_handle(), "gl");
+     assert(__ogl_framework_api);
+ 
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_glx_dri__glx.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_glx_dri__glx.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_glx_dri__glx.c  Sun Oct  7 23:49:31 2018
@@ -0,0 +1,43 @@
+$NetBSD: patch-src_glx_dri__glx.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+atexit() is not a good idea in shared libraries.
+
+FreeBSD reported atexit bug for 10.6:
+https://bugs.freedesktop.org/show_bug.cgi?id=91869
+
+--- src/glx/dri_glx.c.orig     2018-01-18 21:30:28.000000000 +0000
++++ src/glx/dri_glx.c
+@@ -183,9 +183,21 @@ static struct driver_config_entry *drive
+ /* Called as an atexit function. Otherwise, this would have to be called with
+  * driver_config_mutex locked.
+  */
++#if defined(HAVE_NOATEXIT)
++static Bool e_next_ever_null = False;
++
++static void __attribute__((__destructor__))
++#else
+ static void
++#endif
+ clear_driver_config_cache()
+ {
++
++#if defined(HAVE_NOATEXIT)
++   if (!e_next_ever_null)
++      return;
++#endif
++
+    while (driver_config_cache) {
+       struct driver_config_entry *e = driver_config_cache;
+       driver_config_cache = e->next;
+@@ -276,7 +288,11 @@ glXGetDriverConfig(const char *driverNam
+    driver_config_cache = e;
+ 
+    if (!e->next)
++#if defined(HAVE_NOATEXIT)
++      e_next_ever_null = True;
++#else
+       atexit(clear_driver_config_cache);
++#endif
+ 
+ out:
+    pthread_mutex_unlock(&driver_config_mutex);
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_glx_glxclient.h
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_glx_glxclient.h:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_glx_glxclient.h Sun Oct  7 23:49:31 2018
@@ -0,0 +1,19 @@
+$NetBSD: patch-src_glx_glxclient.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+NetBSD only supports zero-initialized initial-exec tls variables in conjuction
+with dlopen(3) at the moment.
+
+--- src/glx/glxclient.h.orig   2017-02-13 11:55:49.000000000 +0000
++++ src/glx/glxclient.h
+@@ -661,7 +661,11 @@ extern void __glXSetCurrentContext(struc
+ extern __thread void *__glX_tls_Context
+    __attribute__ ((tls_model("initial-exec")));
+ 
++#if defined(__NetBSD__)
++#  define __glXGetCurrentContext() (likely(__glX_tls_Context) ? __glX_tls_Context : (void*)&dummyContext)
++#else
+ #  define __glXGetCurrentContext() __glX_tls_Context
++#endif
+ 
+ # else
+ 
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_glx_glxcurrent.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_glx_glxcurrent.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_glx_glxcurrent.c        Sun Oct  7 23:49:31 2018
@@ -0,0 +1,40 @@
+$NetBSD: patch-src_glx_glxcurrent.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+Interim fix for toolchain/50277.
+
+NetBSD only supports zero-initialized initial-exec tls variables in conjuction
+with dlopen(3) at the moment.
+
+--- src/glx/glxcurrent.c.orig  2018-02-09 02:17:59.000000000 +0000
++++ src/glx/glxcurrent.c
+@@ -40,6 +40,18 @@
+ #include "glx_error.h"
+ 
+ /*
++ * MASSIVE KLUDGE!
++ * We need these to not be extern in libGL.so because of
++ * PR toolchain/50277
++ */
++#if defined(GLX_USE_TLS) && defined(__NetBSD__)
++_X_EXPORT __thread struct _glapi_table * _glapi_tls_Dispatch
++    __attribute__((tls_model("initial-exec"))) = NULL;
++_X_EXPORT __thread void * _glapi_tls_Context
++    __attribute__((tls_model("initial-exec")));
++#endif
++
++/*
+ ** We setup some dummy structures here so that the API can be used
+ ** even if no context is current.
+ */
+@@ -77,7 +89,11 @@ _X_HIDDEN pthread_mutex_t __glXmutex = P
+  * \c __glXGetCurrentContext can be implemented as trivial macro.
+  */
+ __thread void *__glX_tls_Context __attribute__ ((tls_model("initial-exec")))
++#if defined(__NetBSD__)
++   = NULL; /* non-zero initializers not supported with dlopen */
++#else
+    = &dummyContext;
++#endif
+ 
+ _X_HIDDEN void
+ __glXSetCurrentContext(struct glx_context * c)
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_glx_glxext.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_glx_glxext.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_glx_glxext.c    Sun Oct  7 23:49:31 2018
@@ -0,0 +1,47 @@
+$NetBSD: patch-src_glx_glxext.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+* Patch from FreeBSD ports graphics/mesa-dri 18.0.0
+
+# work-around for https://bugs.freedesktop.org/show_bug.cgi?id=100627
+
+* Extended to DragonFly and NetBSD.  Other OSes might need this as well.
+
+* Added logging statements to note dri3 initialization being invoked.
+
+--- src/glx/glxext.c.orig      2017-12-08 13:49:11.000000000 +0000
++++ src/glx/glxext.c
+@@ -55,6 +55,7 @@
+ #include <xcb/xcb.h>
+ #include <xcb/glx.h>
+ 
++#include "dri_common.h"
+ 
+ #ifdef DEBUG
+ void __glXDumpDrawBuffer(struct glx_context * ctx);
+@@ -817,7 +818,11 @@ AllocAndFetchScreenConfigs(Display * dpy
+ #if defined(GLX_USE_DRM)
+ #if defined(HAVE_DRI3)
+       if (priv->dri3Display)
++         InfoMessageF("glxext.c: AllocAndFetchScreenConfigs: priv->dri3Display\n");
++      if (priv->dri3Display)
+          psc = (*priv->dri3Display->createScreen) (i, priv);
++      if (psc != NULL && priv->dri3Display)
++         InfoMessageF("glxext.c: AllocAndFetchScreenConfigs: psc set by priv->dri3Display\n");
+ #endif /* HAVE_DRI3 */
+       if (psc == NULL && priv->dri2Display)
+        psc = (*priv->dri2Display->createScreen) (i, priv);
+@@ -920,8 +925,13 @@ __glXInitialize(Display * dpy)
+ #if defined(GLX_USE_DRM)
+    if (glx_direct && glx_accel) {
+ #if defined(HAVE_DRI3)
+-      if (!env_var_as_boolean("LIBGL_DRI3_DISABLE", false))
++#if ((defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) && !defined(__DRM_NEXT__)) || defined(__DragonFly__) || defined(__NetBSD__)
++      if (env_var_as_boolean("LIBGL_DRI3_ENABLE", false))
++#endif
++      if (!env_var_as_boolean("LIBGL_DRI3_DISABLE", false)) {
++         InfoMessageF("glxext.c: __glxInitialize: dpyPriv->dri3Display = dri3_create_display\n");
+          dpyPriv->dri3Display = dri3_create_display(dpy);
++      }
+ #endif /* HAVE_DRI3 */
+       dpyPriv->dri2Display = dri2CreateDisplay(dpy);
+       dpyPriv->driDisplay = driCreateDisplay(dpy);
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_intel_Makefile.in
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_intel_Makefile.in:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_intel_Makefile.in       Sun Oct  7 23:49:31 2018
@@ -0,0 +1,14 @@
+$NetBSD: patch-src_intel_Makefile.in,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+-lrt for shm_open, a more portable alternative to memfd_create
+
+--- src/intel/Makefile.in.orig 2018-09-08 21:21:54.987534981 +0000
++++ src/intel/Makefile.in
+@@ -2134,6 +2134,7 @@ tools_aubinator_LDADD = \
+       $(PTHREAD_LIBS) \
+       $(DLOPEN_LIBS) \
+       $(ZLIB_LIBS) \
++      -lrt \
+       -lm
+ 
+ tools_aubinator_error_decode_SOURCES = \
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_intel_Makefile.tools.am
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_intel_Makefile.tools.am:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_intel_Makefile.tools.am Sun Oct  7 23:49:31 2018
@@ -0,0 +1,14 @@
+$NetBSD: patch-src_intel_Makefile.tools.am,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+-lrt for shm_open in aubinator.c, a more portable alternative to memfd_create
+
+--- src/intel/Makefile.tools.am.orig   2018-09-07 21:18:07.000000000 +0000
++++ src/intel/Makefile.tools.am
+@@ -43,6 +43,7 @@ tools_aubinator_LDADD = \
+       $(PTHREAD_LIBS) \
+       $(DLOPEN_LIBS) \
+       $(ZLIB_LIBS) \
++      -lrt \
+       -lm
+ 
+ 
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_intel_compiler_brw__fs__bank__conflicts.cpp
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_intel_compiler_brw__fs__bank__conflicts.cpp:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_intel_compiler_brw__fs__bank__conflicts.cpp     Sun Oct  7 23:49:31 2018
@@ -0,0 +1,23 @@
+$NetBSD: patch-src_intel_compiler_brw__fs__bank__conflicts.cpp,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225415
+FreeBSD Bugzilla: Bug 225415 graphics/mesa-dri: update to 18.0.0
+
+compiler/brw_fs_bank_conflicts.cpp:719:25: error: scalar initializer cannot be empty
+      vector_type s_p = {}, s_n = {};
+                        ^~
+compiler/brw_fs_bank_conflicts.cpp:719:35: error: scalar initializer cannot be empty
+      vector_type s_p = {}, s_n = {};
+                                  ^~
+
+--- src/intel/compiler/brw_fs_bank_conflicts.cpp.orig  2018-02-09 02:17:59.000000000 +0000
++++ src/intel/compiler/brw_fs_bank_conflicts.cpp
+@@ -716,7 +716,7 @@ namespace {
+                    const weight_vector_type &conflicts)
+    {
+       const unsigned m = DIV_ROUND_UP(conflicts.size, vector_width);
+-      vector_type s_p = {}, s_n = {};
++      vector_type s_p = {0}, s_n = {0};
+ 
+       for (unsigned r = 0; r < m; r++) {
+          s_p = adds(s_p, mask(bank_mask_p.v[r], conflicts.v[r]));
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_intel_tools_aubinator.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_intel_tools_aubinator.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_intel_tools_aubinator.c Sun Oct  7 23:49:31 2018
@@ -0,0 +1,36 @@
+$NetBSD: patch-src_intel_tools_aubinator.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+Use the more portable shm_open as an alternative to memfd_create
+
+--- src/intel/tools/aubinator.c.orig   2018-09-07 21:18:07.000000000 +0000
++++ src/intel/tools/aubinator.c
+@@ -46,16 +46,6 @@
+ #include "common/gen_gem.h"
+ #include "intel_aub.h"
+ 
+-#ifndef HAVE_MEMFD_CREATE
+-#include <sys/syscall.h>
+-
+-static inline int
+-memfd_create(const char *name, unsigned int flags)
+-{
+-   return syscall(SYS_memfd_create, name, flags);
+-}
+-#endif
+-
+ /* Below is the only command missing from intel_aub.h in libdrm
+  * So, reuse intel_aub.h from libdrm and #define the
+  * AUB_MI_BATCH_BUFFER_END as below
+@@ -907,7 +897,12 @@ int main(int argc, char *argv[])
+    if (isatty(1) && pager)
+       setup_pager();
+ 
++
++#ifdef HAVE_MEMFD_CREATE
+    mem_fd = memfd_create("phys memory", 0);
++#else
++   mem_fd = shm_open("phys memory", O_RDWR | O_CREAT | O_EXCL, S_IRWXU);
++#endif
+ 
+    list_inithead(&maps);
+ 
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_intel_tools_aubinator__error__decode.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_intel_tools_aubinator__error__decode.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_intel_tools_aubinator__error__decode.c  Sun Oct  7 23:49:31 2018
@@ -0,0 +1,19 @@
+$NetBSD: patch-src_intel_tools_aubinator__error__decode.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+Patch from FreeBSD ports graphics/mesa-dri 17.1.0
+
+# expose getline in FreeBSD's stdio.h
+#
+
+--- src/intel/tools/aubinator_error_decode.c.orig      2017-05-25 07:13:13.000000000 +0000
++++ src/intel/tools/aubinator_error_decode.c
+@@ -22,6 +22,9 @@
+  *
+  */
+ 
++#ifdef __FreeBSD__
++#define _WITH_GETLINE
++#endif
+ #include <stdbool.h>
+ #include <stdio.h>
+ #include <stdlib.h>
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_intel_vulkan_anv__allocator.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_intel_vulkan_anv__allocator.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_intel_vulkan_anv__allocator.c   Sun Oct  7 23:49:31 2018
@@ -0,0 +1,62 @@
+$NetBSD: patch-src_intel_vulkan_anv__allocator.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+* Partially implement memfd_create() via mkostemp()
+* Ignore MAP_POPULATE if unsupported
+
+FreeBSD Bugzilla - Bug 225415: graphics/mesa-dri: update to 18.0.0
+https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225415
+
+--- src/intel/vulkan/anv_allocator.c.orig      2018-02-09 02:17:59.000000000 +0000
++++ src/intel/vulkan/anv_allocator.c
+@@ -25,9 +25,21 @@
+ #include <unistd.h>
+ #include <limits.h>
+ #include <assert.h>
++#ifdef __linux__
+ #include <linux/memfd.h>
++#else
++#include <fcntl.h>
++#endif
+ #include <sys/mman.h>
+ 
++#ifndef MAP_POPULATE
++#define MAP_POPULATE 0
++#endif
++
++#ifndef MFD_CLOEXEC
++#define MFD_CLOEXEC O_CLOEXEC
++#endif
++
+ #include "anv_private.h"
+ 
+ #include "util/hash_table.h"
+@@ -113,7 +125,29 @@ struct anv_mmap_cleanup {
+ static inline int
+ memfd_create(const char *name, unsigned int flags)
+ {
++#if defined(__linux__)
+    return syscall(SYS_memfd_create, name, flags);
++#elif defined(__FreeBSD__)
++   return shm_open(SHM_ANON, flags | O_RDWR | O_CREAT, 0600);
++#else /* DragonFly, NetBSD, OpenBSD, Solaris */
++   char template[] = "/tmp/shmfd-XXXXXX";
++#ifdef HAVE_MKOSTEMP
++   int fd = mkostemp(template, flags);
++#else
++   int fd = mkstemp(template);
++   if (flags & O_CLOEXEC) {
++      int flags = fcntl(fd, F_GETFD);
++      if (flags != -1) {
++         flags |= FD_CLOEXEC;
++         (void) fcntl(fd, F_SETFD, &flags);
++      }
++   }
++#endif /* HAVE_MKOSTEMP */
++   if (fd >= 0)
++      unlink(template);
++
++   return fd;
++#endif /* __linux__ */
+ }
+ #endif
+ 
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_intel_vulkan_anv__device.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_intel_vulkan_anv__device.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_intel_vulkan_anv__device.c      Sun Oct  7 23:49:31 2018
@@ -0,0 +1,47 @@
+$NetBSD: patch-src_intel_vulkan_anv__device.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+* Without sysinfo() fall back to sysconf()
+* Define ETIME if missing
+
+FreeBSD Bugzilla - Bug 225415: graphics/mesa-dri: update to 18.0.0
+https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225415
+
+--- src/intel/vulkan/anv_device.c.orig 2018-09-07 21:18:07.000000000 +0000
++++ src/intel/vulkan/anv_device.c
+@@ -25,7 +25,9 @@
+ #include <stdbool.h>
+ #include <string.h>
+ #include <sys/mman.h>
++#ifdef __GLIBC__
+ #include <sys/sysinfo.h>
++#endif
+ #include <unistd.h>
+ #include <fcntl.h>
+ #include <xf86drm.h>
+@@ -42,6 +44,10 @@
+ 
+ #include "genxml/gen7_pack.h"
+ 
++#ifndef ETIME
++#define ETIME ETIMEDOUT
++#endif
++
+ static void
+ compiler_debug_log(void *data, const char *fmt, ...)
+ { }
+@@ -61,11 +67,15 @@ compiler_perf_log(void *data, const char
+ static VkResult
+ anv_compute_heap_size(int fd, uint64_t gtt_size, uint64_t *heap_size)
+ {
++#ifdef __GLIBC__
+    /* Query the total ram from the system */
+    struct sysinfo info;
+    sysinfo(&info);
+ 
+    uint64_t total_ram = (uint64_t)info.totalram * (uint64_t)info.mem_unit;
++#else
++   uint64_t total_ram = sysctlbyname(SYSCTL_MEMSIZE, &mem, &size, nullptr, 0);
++#endif
+ 
+    /* We don't want to burn too much ram with the GPU.  If the user has 4GiB
+     * or less, we use at most half.  If they have more than 4GiB, we use 3/4.
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_intel_vulkan_anv__gem.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_intel_vulkan_anv__gem.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_intel_vulkan_anv__gem.c Sun Oct  7 23:49:31 2018
@@ -0,0 +1,19 @@
+$NetBSD: patch-src_intel_vulkan_anv__gem.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+* Define ETIME if missing
+
+FreeBSD Bugzilla - Bug 225415: graphics/mesa-dri: update to 18.0.0
+https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225415
+
+--- src/intel/vulkan/anv_gem.c.orig    2018-02-09 02:17:59.000000000 +0000
++++ src/intel/vulkan/anv_gem.c
+@@ -26,6 +26,9 @@
+ #include <sys/mman.h>
+ #include <string.h>
+ #include <errno.h>
++#ifndef ETIME
++#define ETIME ETIMEDOUT
++#endif
+ #include <unistd.h>
+ #include <fcntl.h>
+ 
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_intel_vulkan_anv__queue.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_intel_vulkan_anv__queue.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_intel_vulkan_anv__queue.c       Sun Oct  7 23:49:31 2018
@@ -0,0 +1,25 @@
+$NetBSD: patch-src_intel_vulkan_anv__queue.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+* Define ETIME if missing
+* Drop header that was never used (modified for Linux inclusion)
+
+FreeBSD Bugzilla - Bug 225415: graphics/mesa-dri: update to 18.0.0
+https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225415
+
+--- src/intel/vulkan/anv_queue.c.orig  2018-02-09 02:17:59.000000000 +0000
++++ src/intel/vulkan/anv_queue.c
+@@ -26,8 +26,14 @@
+  */
+ 
+ #include <fcntl.h>
++#include <errno.h>
++#ifndef ETIME
++#define ETIME ETIMEDOUT
++#endif
+ #include <unistd.h>
++#if defined(__linux__)
+ #include <sys/eventfd.h>
++#endif
+ 
+ #include "anv_private.h"
+ #include "vk_util.h"
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_mapi_entry__x86-64__tls.h
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_mapi_entry__x86-64__tls.h:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_mapi_entry__x86-64__tls.h       Sun Oct  7 23:49:31 2018
@@ -0,0 +1,32 @@
+$NetBSD: patch-src_mapi_entry__x86-64__tls.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+NetBSD only supports zero-initialized initial-exec tls variables in conjuction
+with dlopen(3) at the moment.
+
+Fix --enable-glx-tls with clang. From FreeBSD.
+
+table_noop_array is only defined for shared-glapi.
+es1api and es2api are not going to be patched for NetBSD.
+
+--- src/mapi/entry_x86-64_tls.h.orig   2017-11-20 14:25:47.000000000 +0000
++++ src/mapi/entry_x86-64_tls.h
+@@ -43,10 +43,19 @@ __asm__(".text\n"
+ 
+ #ifndef __ILP32__
+ 
++#if defined(__NetBSD__) && defined(MAPI_MODE_GLAPI)
+ #define STUB_ASM_CODE(slot)                              \
+    "movq " ENTRY_CURRENT_TABLE "@GOTTPOFF(%rip), %rax\n\t"  \
+    "movq %fs:(%rax), %r11\n\t"                           \
++   "testq %r11, %r11\n\t"                                \
++   "cmoveq table_noop_array@GOTPCREL(%rip), %r11\n\t"    \
+    "jmp *(8 * " slot ")(%r11)"
++#else
++#define STUB_ASM_CODE(slot)                              \
++   "movq " ENTRY_CURRENT_TABLE "@GOTTPOFF(%rip), %rax\n\t"  \
++   "movq %fs:(%rax), %r11\n\t"                           \
++   "jmp *(8 * " slot ")(%r11)"
++#endif
+ 
+ #else
+ 
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_mapi_entry__x86__tls.h
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_mapi_entry__x86__tls.h:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_mapi_entry__x86__tls.h  Sun Oct  7 23:49:31 2018
@@ -0,0 +1,40 @@
+$NetBSD: patch-src_mapi_entry__x86__tls.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+NetBSD only supports zero-initialized initial-exec tls variables in conjuction
+with dlopen(3) at the moment.
+
+Fix --enable-glx-tls with clang. From FreeBSD.
+
+table_noop_array is only defined for shared-glapi.
+es1api and es2api are not going to be patched for NetBSD.
+
+--- src/mapi/entry_x86_tls.h.orig      2018-01-18 21:30:29.000000000 +0000
++++ src/mapi/entry_x86_tls.h
+@@ -56,10 +56,27 @@ __asm__(".balign 16\n"
+    ".balign 16\n"                \
+    func ":"
+ 
++#if defined(__NetBSD__) && defined(MAPI_MODE_GLAPI)
++extern const mapi_func table_noop_array[];
+ #define STUB_ASM_CODE(slot)      \
+    "call x86_current_tls\n\t"    \
+    "movl %gs:(%eax), %eax\n\t"   \
++   "testl %eax, %eax\n\t"        \
++   "je 1f\n\t"                   \
++   "jmp *(4 * " slot ")(%eax)\n\t" \
++   "1:\n\t"                      \
++   "call 2f\n"                   \
++   "2:\n\t"                      \
++   "popl %eax\n\t"               \
++   "addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax\n\t" \
++   "movl table_noop_array@GOT(%eax), %eax\n\t" \
+    "jmp *(4 * " slot ")(%eax)"
++#else
++#define STUB_ASM_CODE(slot)      \
++   "call x86_current_tls\n\t"    \
++   "movl %gs:(%eax), %eax\n\t"   \
++   "jmp *(4 * " slot ")(%eax)"
++#endif
+ 
+ #define MAPI_TMP_STUB_ASM_GCC
+ #include "mapi_tmp.h"
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_mapi_glapi_gen_gl__gentable.py
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_mapi_glapi_gen_gl__gentable.py:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_mapi_glapi_gen_gl__gentable.py  Sun Oct  7 23:49:31 2018
@@ -0,0 +1,15 @@
+$NetBSD: patch-src_mapi_glapi_gen_gl__gentable.py,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+FreeBSD support.
+
+--- src/mapi/glapi/gen/gl_gentable.py.orig     2017-02-13 11:55:49.000000000 +0000
++++ src/mapi/glapi/gen/gl_gentable.py
+@@ -44,7 +44,7 @@ header = """/* GLXEXT is the define used
+ #endif
+ 
+ #if (defined(GLXEXT) && defined(HAVE_BACKTRACE)) \\
+-      || (!defined(GLXEXT) && defined(DEBUG) && !defined(__CYGWIN__) && !defined(__MINGW32__) && !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__DragonFly__))
++      || (!defined(GLXEXT) && defined(DEBUG) && !defined(__CYGWIN__) && !defined(__MINGW32__) && !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__FreeBSD__) && !defined(__DragonFly__))
+ #define USE_BACKTRACE
+ #endif
+ 
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_mapi_u__current.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_mapi_u__current.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_mapi_u__current.c       Sun Oct  7 23:49:31 2018
@@ -0,0 +1,31 @@
+$NetBSD: patch-src_mapi_u__current.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+NetBSD only supports zero-initialized initial-exec tls variables in conjuction
+with dlopen(3) at the moment.
+
+--- src/mapi/u_current.c.orig  2015-09-02 17:06:23.000000000 +0000
++++ src/mapi/u_current.c
+@@ -101,7 +101,11 @@ extern void (*__glapi_noop_table[])(void
+ 
+ __thread struct _glapi_table *u_current_table
+     __attribute__((tls_model("initial-exec")))
++#if defined(__NetBSD__)
++    = NULL; /* non-zero initializers not supported with dlopen */
++#else
+     = (struct _glapi_table *) table_noop_array;
++#endif
+ 
+ __thread void *u_current_context
+     __attribute__((tls_model("initial-exec")));
+@@ -283,7 +287,11 @@ struct _glapi_table *
+ u_current_get_table_internal(void)
+ {
+ #if defined(GLX_USE_TLS)
++#  if defined(__NetBSD__)
++   return (likely(u_current_table) ? u_current_table : (struct _glapi_table *) table_noop_array);
++#  else
+    return u_current_table;
++#  endif
+ #else
+    if (ThreadSafe)
+       return (struct _glapi_table *) tss_get(u_current_table_tsd);
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_mapi_u__current.h
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_mapi_u__current.h:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_mapi_u__current.h       Sun Oct  7 23:49:31 2018
@@ -0,0 +1,16 @@
+$NetBSD: patch-src_mapi_u__current.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+NetBSD only supports zero-initialized initial-exec tls variables in conjuction
+with dlopen(3) at the moment.
+
+--- src/mapi/u_current.h.orig  2015-09-02 17:06:23.000000000 +0000
++++ src/mapi/u_current.h
+@@ -68,7 +68,7 @@ u_current_get_context_internal(void);
+ static inline const struct _glapi_table *
+ u_current_get_table(void)
+ {
+-#ifdef GLX_USE_TLS
++#if defined(GLX_USE_TLS) && !defined(__NetBSD__)
+    return u_current_table;
+ #else
+    return (likely(u_current_table) ?
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_drivers_dri_i915_intel__screen.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_drivers_dri_i915_intel__screen.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_drivers_dri_i915_intel__screen.c   Sun Oct  7 23:49:31 2018
@@ -0,0 +1,44 @@
+$NetBSD: patch-src_mesa_drivers_dri_i915_intel__screen.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+Move sys/sysctl.h include because on NetBSD, sysctl.h includes sys/param.h,
+and sys/param.h defines a one argument ALIGN.  Allows mesa to redefine
+to a two argument ALIGN.
+
+Fix build on older NetBSD w/o _SC_PHYS_PAGES.
+
+--- src/mesa/drivers/dri/i915/intel_screen.c.orig      2017-11-10 23:18:56.000000000 +0000
++++ src/mesa/drivers/dri/i915/intel_screen.c
+@@ -28,6 +28,11 @@
+ #include <errno.h>
+ #include <time.h>
+ #include <unistd.h>
++
++#if defined(HAVE_SYS_SYSCTL_H) && defined(__NetBSD__)
++# include <sys/sysctl.h>
++#endif
++
+ #include "main/glheader.h"
+ #include "main/context.h"
+ #include "main/framebuffer.h"
+@@ -739,6 +744,13 @@ i915_query_renderer_integer(__DRIscreen
+       const unsigned gpu_mappable_megabytes =
+          (aper_size / (1024 * 1024)) * 3 / 4;
+ 
++#if defined(HW_PHYSMEM64) && defined(__NetBSD__)
++      int mib[2] = { CTL_HW, HW_PHYSMEM64 };
++      uint64_t system_memory_bytes;
++      size_t len = sizeof(system_memory_bytes);
++      if (sysctl(mib, 2, &system_memory_bytes, &len, NULL, 0) != 0)
++         return -1;
++#else
+       const long system_memory_pages = sysconf(_SC_PHYS_PAGES);
+       const long system_page_size = sysconf(_SC_PAGE_SIZE);
+ 
+@@ -747,6 +759,7 @@ i915_query_renderer_integer(__DRIscreen
+ 
+       const uint64_t system_memory_bytes = (uint64_t) system_memory_pages
+          * (uint64_t) system_page_size;
++#endif
+ 
+       const unsigned system_memory_megabytes =
+          (unsigned) (system_memory_bytes / (1024 * 1024));
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_drivers_dri_i965_brw__performance__query.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_drivers_dri_i965_brw__performance__query.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_drivers_dri_i965_brw__performance__query.c Sun Oct  7 23:49:31 2018
@@ -0,0 +1,16 @@
+$NetBSD: patch-src_mesa_drivers_dri_i965_brw__performance__query.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+Prevents libdrm i915_drm.h header from being used.
+libdrm 2.4.88 does not have certain symbols defined in its i915_drm.h.
+
+--- src/mesa/drivers/dri/i965/brw_performance_query.c.orig     2017-10-19 12:23:53.000000000 +0000
++++ src/mesa/drivers/dri/i965/brw_performance_query.c
+@@ -56,7 +56,7 @@
+ #include <sys/ioctl.h>
+ 
+ #include <xf86drm.h>
+-#include <i915_drm.h>
++#include "drm-uapi/i915_drm.h"
+ 
+ #include "main/hash.h"
+ #include "main/macros.h"
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_drivers_dri_i965_intel__screen.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_drivers_dri_i965_intel__screen.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_drivers_dri_i965_intel__screen.c   Sun Oct  7 23:49:31 2018
@@ -0,0 +1,44 @@
+$NetBSD: patch-src_mesa_drivers_dri_i965_intel__screen.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+Move sys/sysctl.h include because on NetBSD, sysctl.h includes sys/param.h,
+and sys/param.h defines a one argument ALIGN.  Allows mesa to redefine
+to a two argument ALIGN.
+
+Fix build on older NetBSD w/o _SC_PHYS_PAGES.
+
+--- src/mesa/drivers/dri/i965/intel_screen.c.orig      2017-11-10 23:18:56.000000000 +0000
++++ src/mesa/drivers/dri/i965/intel_screen.c
+@@ -27,6 +27,11 @@
+ #include <errno.h>
+ #include <time.h>
+ #include <unistd.h>
++
++#if defined(HAVE_SYS_SYSCTL_H) && defined(__NetBSD__)
++# include <sys/sysctl.h>
++#endif
++
+ #include "main/context.h"
+ #include "main/framebuffer.h"
+ #include "main/renderbuffer.h"
+@@ -1220,6 +1225,13 @@ brw_query_renderer_integer(__DRIscreen *
+       const unsigned gpu_mappable_megabytes =
+          screen->aperture_threshold / (1024 * 1024);
+ 
++#if defined(HW_PHYSMEM64) && defined(__NetBSD__)
++      int mib[2] = { CTL_HW, HW_PHYSMEM64 };
++      const uint64_t system_memory_bytes;
++      size_t len = sizeof(system_memory_bytes);
++      if (sysctl(mib, 2, &system_memory_bytes, &len, NULL, 0) != 0)
++         return -1;
++#else
+       const long system_memory_pages = sysconf(_SC_PHYS_PAGES);
+       const long system_page_size = sysconf(_SC_PAGE_SIZE);
+ 
+@@ -1228,6 +1240,7 @@ brw_query_renderer_integer(__DRIscreen *
+ 
+       const uint64_t system_memory_bytes = (uint64_t) system_memory_pages
+          * (uint64_t) system_page_size;
++#endif
+ 
+       const unsigned system_memory_megabytes =
+          (unsigned) (system_memory_bytes / (1024 * 1024));
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_drivers_dri_i965_intel__tiled__memcpy.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_drivers_dri_i965_intel__tiled__memcpy.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_drivers_dri_i965_intel__tiled__memcpy.c    Sun Oct  7 23:49:31 2018
@@ -0,0 +1,22 @@
+$NetBSD: patch-src_mesa_drivers_dri_i965_intel__tiled__memcpy.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+From wip/MesaLib 13.0.1.
+
+--- src/mesa/drivers/dri/i965/intel_tiled_memcpy.c.orig        2016-11-10 22:05:17.000000000 +0000
++++ src/mesa/drivers/dri/i965/intel_tiled_memcpy.c
+@@ -64,6 +64,7 @@ ror(uint32_t n, uint32_t d)
+    return (n >> d) | (n << (32 - d));
+ }
+ 
++#if !defined(__NetBSD__)
+ static inline uint32_t
+ bswap32(uint32_t n)
+ {
+@@ -76,6 +77,7 @@ bswap32(uint32_t n)
+           (n << 24);
+ #endif
+ }
++#endif /* NetBSD */
+ 
+ /**
+  * Copy RGBA to BGRA - swap R and B.
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_drivers_dri_swrast_swrast.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_drivers_dri_swrast_swrast.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_drivers_dri_swrast_swrast.c        Sun Oct  7 23:49:31 2018
@@ -0,0 +1,19 @@
+$NetBSD: patch-src_mesa_drivers_dri_swrast_swrast.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+Fix build on older NetBSD w/o _SC_PHYS_PAGES.
+
+--- src/mesa/drivers/dri/swrast/swrast.c.orig  2017-10-19 12:23:53.000000000 +0000
++++ src/mesa/drivers/dri/swrast/swrast.c
+@@ -151,6 +151,12 @@ swrast_query_renderer_integer(__DRIscree
+         size_t len = sizeof(system_memory_bytes);
+         if (sysctl(mib, 2, &system_memory_bytes, &len, NULL, 0) != 0)
+             return -1;
++#elif defined(HW_PHYSMEM64) && defined(__NetBSD__)
++        int mib[2] = { CTL_HW, HW_PHYSMEM64 };
++        uint64_t system_memory_bytes;
++        size_t len = sizeof(system_memory_bytes);
++        if (sysctl(mib, 2, &system_memory_bytes, &len, NULL, 0) != 0)
++            return -1;
+ #elif defined(_SC_PHYS_PAGES) && defined(_SC_PAGE_SIZE)
+       /* XXX: Do we want to return the full amount of system memory ? */
+       const long system_memory_pages = sysconf(_SC_PHYS_PAGES);
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_main_context.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_main_context.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_main_context.c     Sun Oct  7 23:49:31 2018
@@ -0,0 +1,57 @@
+$NetBSD: patch-src_mesa_main_context.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+* Fix exit time segfault of qt5 application with modular xorg
+
+Bug 82246 (atexit) - Libraries should not call atexit()
+
+https://bugs.freedesktop.org/show_bug.cgi?id=82246
+
+FreeBSD reported atexit bug for 10.6:
+https://bugs.freedesktop.org/show_bug.cgi?id=91869
+
+--- src/mesa/main/context.c.orig       2017-11-20 14:25:47.000000000 +0000
++++ src/mesa/main/context.c
+@@ -354,11 +354,23 @@ mtx_t OneTimeLock = _MTX_INITIALIZER_NP;
+  * Calls all the various one-time-fini functions in Mesa
+  */
+ 
++#if defined(HAVE_NOATEXIT)
++static GLbitfield api_init_mask = 0x0;
++static void __attribute__((__destructor__))
++#else
+ static void
++#endif
+ one_time_fini(void)
+ {
++#if defined(HAVE_NOATEXIT)
++   if (api_init_mask) {
++      _mesa_destroy_shader_compiler();
++      _mesa_locale_fini();
++   }
++#else
+    _mesa_destroy_shader_compiler();
+    _mesa_locale_fini();
++#endif
+ }
+ 
+ /**
+@@ -373,7 +385,9 @@ one_time_fini(void)
+ static void
+ one_time_init( struct gl_context *ctx )
+ {
++#if !defined(HAVE_NOATEXIT)
+    static GLbitfield api_init_mask = 0x0;
++#endif
+ 
+    mtx_lock(&OneTimeLock);
+ 
+@@ -398,7 +412,9 @@ one_time_init( struct gl_context *ctx )
+          _mesa_ubyte_to_float_color_tab[i] = (float) i / 255.0F;
+       }
+ 
++#if !defined(HAVE_NOATEXIT)
+       atexit(one_time_fini);
++#endif
+ 
+ #if defined(DEBUG)
+       if (MESA_VERBOSE != 0) {
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_main_extensions.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_main_extensions.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_main_extensions.c  Sun Oct  7 23:49:31 2018
@@ -0,0 +1,31 @@
+$NetBSD: patch-src_mesa_main_extensions.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+atexit() is not a good idea in shared libraries.
+
+FreeBSD reported atexit bug for 10.6:
+https://bugs.freedesktop.org/show_bug.cgi?id=91869
+
+--- src/mesa/main/extensions.c.orig    2018-02-09 02:17:59.000000000 +0000
++++ src/mesa/main/extensions.c
+@@ -203,7 +203,11 @@ set_extension(struct gl_extensions *ext,
+  * This string is allocated early during the first context creation by
+  * _mesa_one_time_init_extension_overrides.
+  */
++#if defined(HAVE_NOATEXIT)
++static void __attribute__((__destructor__))
++#else
+ static void
++#endif
+ free_unknown_extensions_strings(void)
+ {
+    free(unrecognized_extensions);
+@@ -293,7 +297,9 @@ _mesa_one_time_init_extension_overrides(
+       free(env);
+    } else {
+       unrecognized_extensions = env;
++#if !defined(HAVE_NOATEXIT)
+       atexit(free_unknown_extensions_strings);
++#endif
+    }
+ }
+ 
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_main_macros.h
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_main_macros.h:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_main_macros.h      Sun Oct  7 23:49:31 2018
@@ -0,0 +1,18 @@
+$NetBSD: patch-src_mesa_main_macros.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+ALIGN is also defined in sys/param.h on NetBSD.
+
+Extend undefining ALIGN to all other OSes.
+
+--- src/mesa/main/macros.h.orig        2017-11-10 23:18:56.000000000 +0000
++++ src/mesa/main/macros.h
+@@ -677,6 +677,9 @@ minify(unsigned value, unsigned levels)
+  *
+  * \sa ROUND_DOWN_TO()
+  */
++#ifdef ALIGN
++#undef ALIGN
++#endif
+ static inline uintptr_t
+ ALIGN(uintptr_t value, int32_t alignment)
+ {
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_main_shader__query.cpp
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_main_shader__query.cpp:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_main_shader__query.cpp     Sun Oct  7 23:49:31 2018
@@ -0,0 +1,58 @@
+$NetBSD: patch-src_mesa_main_shader__query.cpp,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+https://bugs.freedesktop.org/show_bug.cgi?id=66346
+
+From c4a1fec68d2508ff0c4fc2831465aca8c4ca783a Mon Sep 17 00:00:00 2001
+From: Julien Isorce <j.isorce%samsung.com@localhost>
+Date: Wed, 22 Apr 2015 23:04:42 +0100
+Subject: [PATCH 1/2] shader_query: convert GLhandleARB to uintptr_t before
+ troncating to GLuint
+
+Fixes compiler error on OSX as GLhandleARB is defined as void* if __APPLE__.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=66346
+---
+ src/mesa/main/shader_query.cpp | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- src/mesa/main/shader_query.cpp.orig        2016-11-10 22:05:17.000000000 +0000
++++ src/mesa/main/shader_query.cpp
+@@ -70,7 +70,12 @@ _mesa_BindAttribLocation(GLuint program,
+    GET_CURRENT_CONTEXT(ctx);
+ 
+    struct gl_shader_program *const shProg =
++#if defined(__APPLE__)
++      _mesa_lookup_shader_program_err(ctx, (GLuint)(uintptr_t)program, "glBindAttribLocation");
++#else
+       _mesa_lookup_shader_program_err(ctx, program, "glBindAttribLocation");
++#endif
++
+    if (!shProg)
+       return;
+ 
+@@ -114,7 +119,12 @@ _mesa_GetActiveAttrib(GLuint program, GL
+       return;
+    }
+ 
++#if defined(__APPLE__)
++   shProg = _mesa_lookup_shader_program_err(ctx, (GLuint)(uintptr_t)program, "glGetActiveAttrib");
++#else
+    shProg = _mesa_lookup_shader_program_err(ctx, program, "glGetActiveAttrib");
++#endif
++
+    if (!shProg)
+       return;
+ 
+@@ -159,7 +169,12 @@ _mesa_GetAttribLocation(GLuint program,
+ {
+    GET_CURRENT_CONTEXT(ctx);
+    struct gl_shader_program *const shProg =
++
++#if defined(__APPLE__)
++      _mesa_lookup_shader_program_err(ctx, (GLuint)(uintptr_t)program, "glGetAttribLocation");
++#else
+       _mesa_lookup_shader_program_err(ctx, program, "glGetAttribLocation");
++#endif
+ 
+    if (!shProg) {
+       return -1;
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_tnl_t__pipeline.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_tnl_t__pipeline.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_tnl_t__pipeline.c  Sun Oct  7 23:49:31 2018
@@ -0,0 +1,21 @@
+$NetBSD: patch-src_mesa_tnl_t__pipeline.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+i386 FPU control word defaults.
+
+Neither FreeBSD ports nor DragonFly dports graphics/mesa-dri
+mentions any concern with DEFAULT_X86_FPUs value.
+
+--- src/mesa/tnl/t_pipeline.c.orig     2018-01-09 16:03:44.000000000 +0000
++++ src/mesa/tnl/t_pipeline.c
+@@ -132,7 +132,11 @@ static GLuint check_output_changes( stru
+ /* Hardware default: All exceptions masked, extended double precision,
+  * round to nearest (IEEE compliant):
+  */
++#if defined(__NetBSD__)
++#define DEFAULT_X86_FPU       0x127f  /* __NetBSD_NPXCW__ */
++#else
+ #define DEFAULT_X86_FPU               0x037f
++#endif
+ /* All exceptions masked, single precision, round to nearest:
+  */
+ #define FAST_X86_FPU          0x003f
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_x86_common__x86.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_x86_common__x86.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_mesa_x86_common__x86.c  Sun Oct  7 23:49:31 2018
@@ -0,0 +1,24 @@
+$NetBSD: patch-src_mesa_x86_common__x86.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+DragonFly support.
+
+--- src/mesa/x86/common_x86.c.orig     2017-05-10 14:13:58.000000000 +0000
++++ src/mesa/x86/common_x86.c
+@@ -35,7 +35,7 @@
+  */
+ 
+ /* XXX these includes should probably go into imports.h or glheader.h */
+-#if defined(USE_SSE_ASM) && defined(__FreeBSD__)
++#if defined(USE_SSE_ASM) && (defined(__FreeBSD__) || defined(__DragonFly__))
+ #include <sys/types.h>
+ #include <sys/sysctl.h>
+ #endif
+@@ -125,7 +125,7 @@ static LONG WINAPI ExceptionFilter(LPEXC
+  */
+ void _mesa_check_os_sse_support( void )
+ {
+-#if defined(__FreeBSD__)
++#if defined(__FreeBSD__) || defined(__DragonFly__)
+    {
+       int ret, enabled;
+       unsigned int len;
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_util_build__id.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_util_build__id.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_util_build__id.c        Sun Oct  7 23:49:31 2018
@@ -0,0 +1,25 @@
+$NetBSD: patch-src_util_build__id.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+Patch taken from FreeBSD ports graphics/mesa-dri mesa 17.1.0.
+
+# Elf_ doesn't exist, use Elf32_ or Elf64_.
+
+--- src/util/build_id.c.orig   2018-09-07 21:18:07.000000000 +0000
++++ src/util/build_id.c
+@@ -35,7 +35,15 @@
+ #endif
+ 
+ #ifndef ElfW
+-#define ElfW(type) Elf_##type
++# if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
++#  ifdef __LP64__
++#    define ElfW(type) Elf64_##type
++#  else
++#    define ElfW(type) Elf32_##type
++#  endif /* __LP64__ */
++#  else
++#    define ElfW(type) Elf_##type
++#  endif
+ #endif
+ 
+ struct build_id_note {
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_util_futex.h
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_util_futex.h:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_util_futex.h    Sun Oct  7 23:49:31 2018
@@ -0,0 +1,53 @@
+$NetBSD: patch-src_util_futex.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+Implement futex_wake() and futex_wait() via _umtx_op()
+
+FreeBSD Bugzilla - Bug 225415: graphics/mesa-dri: update to 18.0.0
+https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225415
+
+--- src/util/futex.h.orig      2018-02-09 02:18:00.000000000 +0000
++++ src/util/futex.h
+@@ -29,10 +29,35 @@
+ #include <limits.h>
+ #include <stdint.h>
+ #include <unistd.h>
++#if defined(__FreeBSD__)
++#include <errno.h>
++# if __FreeBSD__ < 11
++#  include <machine/atomic.h>
++# endif
++#include <sys/umtx.h>
++#else
+ #include <linux/futex.h>
+ #include <sys/syscall.h>
++#endif
+ #include <sys/time.h>
+ 
++#if defined(__FreeBSD__)
++static inline int futex_wake(uint32_t *addr, int count)
++{
++   return _umtx_op(addr, UMTX_OP_WAKE, (uint32_t)count, NULL, NULL) == -1 ? errno : 0;
++}
++
++static inline int futex_wait(uint32_t *addr, int32_t value, struct timespec *timeout)
++{
++   void *uaddr = NULL, *uaddr2 = NULL;
++   if (timeout != NULL) {
++      const struct _umtx_time tmo = { ._timeout = *timeout, ._flags = UMTX_ABSTIME, ._clockid = CLOCK_MONOTONIC };
++      uaddr = (void *)(uintptr_t)sizeof(tmo);
++      uaddr2 = (void *)&tmo;
++   }
++   return _umtx_op(addr, UMTX_OP_WAIT_UINT, (uint32_t)value, uaddr, uaddr2) == -1 ? errno : 0;
++}
++#else
+ static inline long sys_futex(void *addr1, int op, int val1, const struct timespec *timeout, void *addr2, int val3)
+ {
+    return syscall(SYS_futex, addr1, op, val1, timeout, addr2, val3);
+@@ -50,6 +75,7 @@ static inline int futex_wait(uint32_t *a
+    return sys_futex(addr, FUTEX_WAIT_BITSET, value, timeout, NULL,
+                     FUTEX_BITSET_MATCH_ANY);
+ }
++#endif
+ 
+ #endif
+ 
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_util_ralloc.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_util_ralloc.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_util_ralloc.c   Sun Oct  7 23:49:31 2018
@@ -0,0 +1,25 @@
+$NetBSD: patch-src_util_ralloc.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+FreeBSD reported atexit bug for 10.6:
+https://bugs.freedesktop.org/show_bug.cgi?id=91869
+
+* Fix exit time segfault of qt5 application with modular xorg
+* Provide compat strnlen for older Darwin.
+
+--- src/util/ralloc.c.orig     2017-05-10 14:13:58.000000000 +0000
++++ src/util/ralloc.c
+@@ -368,7 +368,14 @@ ralloc_strndup(const void *ctx, const ch
+    if (unlikely(str == NULL))
+       return NULL;
+ 
++#if (defined(__APPLE__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__-0 < 1070)
++   for (n = 0; n < max; n++, str++) {
++     if (!*str)
++       break;
++   }
++#else
+    n = strnlen(str, max);
++#endif
+    ptr = ralloc_array(ctx, char, n + 1);
+    memcpy(ptr, str, n);
+    ptr[n] = '\0';
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_util_strndup.h
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_util_strndup.h:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_util_strndup.h  Sun Oct  7 23:49:31 2018
@@ -0,0 +1,15 @@
+$NetBSD: patch-src_util_strndup.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+Provide compat strndup for older Darwin.
+
+--- src/util/strndup.h.orig    2017-05-10 14:13:58.000000000 +0000
++++ src/util/strndup.h
+@@ -24,7 +24,7 @@
+ #ifndef STRNDUP_H
+ #define STRNDUP_H
+ 
+-#if defined(_WIN32)
++#if defined(_WIN32) || (defined(__APPLE__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__-0 < 1070)
+ 
+ #include <stdlib.h> // size_t
+ #include <string.h>
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_util_u__atomic.h
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_util_u__atomic.h:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_util_u__atomic.h        Sun Oct  7 23:49:31 2018
@@ -0,0 +1,30 @@
+$NetBSD: patch-src_util_u__atomic.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+Fix SunOS atomic macros.
+
+--- src/util/u_atomic.h.orig   2017-02-13 11:55:50.000000000 +0000
++++ src/util/u_atomic.h
+@@ -177,7 +177,7 @@
+    sizeof(*v) == sizeof(uint16_t) ? atomic_inc_16((uint16_t *)(v)) : \
+    sizeof(*v) == sizeof(uint32_t) ? atomic_inc_32((uint32_t *)(v)) : \
+    sizeof(*v) == sizeof(uint64_t) ? atomic_inc_64((uint64_t *)(v)) : \
+-                                    (assert(!"should not get here"), 0))
++                                    (assert(!"should not get here"), (void)0))
+ 
+ #define p_atomic_inc_return(v) ((__typeof(*v)) \
+    sizeof(*v) == sizeof(uint8_t)  ? atomic_inc_8_nv ((uint8_t  *)(v)) : \
+@@ -186,12 +186,12 @@
+    sizeof(*v) == sizeof(uint64_t) ? atomic_inc_64_nv((uint64_t *)(v)) : \
+                                     (assert(!"should not get here"), 0))
+ 
+-#define p_atomic_dec(v) ((void) \
++#define p_atomic_dec(v) (void) (\
+    sizeof(*v) == sizeof(uint8_t)  ? atomic_dec_8 ((uint8_t  *)(v)) : \
+    sizeof(*v) == sizeof(uint16_t) ? atomic_dec_16((uint16_t *)(v)) : \
+    sizeof(*v) == sizeof(uint32_t) ? atomic_dec_32((uint32_t *)(v)) : \
+    sizeof(*v) == sizeof(uint64_t) ? atomic_dec_64((uint64_t *)(v)) : \
+-                                    (assert(!"should not get here"), 0))
++                                    (assert(!"should not get here"), (void)0))
+ 
+ #define p_atomic_dec_return(v) ((__typeof(*v)) \
+    sizeof(*v) == sizeof(uint8_t)  ? atomic_dec_8_nv ((uint8_t  *)(v)) : \
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_util_u__queue.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_util_u__queue.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_util_u__queue.c Sun Oct  7 23:49:31 2018
@@ -0,0 +1,44 @@
+$NetBSD: patch-src_util_u__queue.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+atexit() is not a good idea in shared libraries.
+
+FreeBSD reported atexit bug for 10.6:
+https://bugs.freedesktop.org/show_bug.cgi?id=91869
+
+--- src/util/u_queue.c.orig    2018-01-09 16:03:44.000000000 +0000
++++ src/util/u_queue.c
+@@ -40,11 +40,22 @@ static once_flag atexit_once_flag = ONCE
+ static struct list_head queue_list;
+ static mtx_t exit_mutex = _MTX_INITIALIZER_NP;
+ 
++#if defined(HAVE_NOATEXIT)
++static int global_init_called = 0;
++
++static void __attribute__((__destructor__))
++#else
+ static void
++#endif
+ atexit_handler(void)
+ {
+    struct util_queue *iter;
+ 
++#if defined(HAVE_NOATEXIT)
++   if (!global_init_called)
++      return;
++#endif
++
+    mtx_lock(&exit_mutex);
+    /* Wait for all queues to assert idle. */
+    LIST_FOR_EACH_ENTRY(iter, &queue_list, head) {
+@@ -57,7 +68,11 @@ static void
+ global_init(void)
+ {
+    LIST_INITHEAD(&queue_list);
++#if defined(HAVE_NOATEXIT)
++   global_init_called = 1;
++#else
+    atexit(atexit_handler);
++#endif
+ }
+ 
+ static void
Index: pkgsrc/graphics/MesaLib18/patches/patch-src_util_xmlconfig.c
diff -u /dev/null pkgsrc/graphics/MesaLib18/patches/patch-src_util_xmlconfig.c:1.1
--- /dev/null   Sun Oct  7 23:49:31 2018
+++ pkgsrc/graphics/MesaLib18/patches/patch-src_util_xmlconfig.c        Sun Oct  7 23:49:31 2018
@@ -0,0 +1,31 @@
+$NetBSD: patch-src_util_xmlconfig.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
+
+PR pkg/50202.
+Provide compat strndup for older Darwin.
+
+--- src/util/xmlconfig.c.orig  2018-09-07 21:18:07.000000000 +0000
++++ src/util/xmlconfig.c
+@@ -39,6 +39,23 @@
+ #include "xmlconfig.h"
+ #include "u_process.h"
+ 
++#if (defined(__APPLE__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__-0 < 1070)
++static char *
++strndup(const char *str, size_t n)
++{
++    size_t len;
++    char *copy;
++
++    for (len = 0; len < n && str[len]; len++)
++        continue;
++
++    if ((copy = (char *)malloc(len + 1)) == NULL)
++        return (NULL);
++    memcpy(copy, str, len);
++    copy[len] = '\0';
++    return (copy);
++}
++#endif
+ 
+ /** \brief Find an option in an option cache with the name as key */
+ static uint32_t



Home | Main Index | Thread Index | Old Index