pkgsrc-WIP-changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
MesaLib: update to 18.2.0.
Module Name: pkgsrc-wip
Committed By: coypu <coypu%sdf.org@localhost>
Pushed By: coypu
Date: Sun Sep 9 07:00:53 2018 +0300
Changeset: 20016f25636233ccb61784a6f17f6e3394bb33f1
Modified Files:
MesaLib/Makefile
MesaLib/PLIST
MesaLib/buildlink3.mk
MesaLib/builtin.mk
MesaLib/distinfo
MesaLib/dri.mk
MesaLib/options.mk
MesaLib/patches/patch-configure
MesaLib/patches/patch-src_compiler_glsl_glsl__parser__extras.cpp
MesaLib/patches/patch-src_egl_drivers_dri2_platform__drm.c
MesaLib/patches/patch-src_egl_drivers_dri2_platform__x11.c
MesaLib/patches/patch-src_egl_main_eglglobals.c
MesaLib/patches/patch-src_gallium_drivers_nouveau_nouveau__vp3__video.c
MesaLib/patches/patch-src_glx_apple_apple__glapi.c
MesaLib/patches/patch-src_glx_glxclient.h
MesaLib/patches/patch-src_glx_glxcurrent.c
MesaLib/patches/patch-src_mapi_glapi_gen_gl__gentable.py
MesaLib/patches/patch-src_mapi_u__current.c
MesaLib/patches/patch-src_mapi_u__current.h
MesaLib/patches/patch-src_mesa_drivers_dri_i915_intel__screen.c
MesaLib/patches/patch-src_mesa_drivers_dri_i965_intel__screen.c
MesaLib/patches/patch-src_mesa_drivers_dri_i965_intel__tiled__memcpy.c
MesaLib/patches/patch-src_mesa_drivers_dri_swrast_swrast.c
MesaLib/patches/patch-src_mesa_main_context.c
MesaLib/patches/patch-src_mesa_main_extensions.c
MesaLib/patches/patch-src_mesa_main_macros.h
MesaLib/patches/patch-src_mesa_main_shader__query.cpp
MesaLib/patches/patch-src_mesa_tnl_t__pipeline.c
MesaLib/patches/patch-src_mesa_x86_common__x86.c
MesaLib/patches/patch-src_util_strndup.h
MesaLib/patches/patch-src_util_u__atomic.h
Added Files:
MesaLib/patches/patch-configure.ac
MesaLib/patches/patch-include_GL_internal_dri__interface.h
MesaLib/patches/patch-src_amd_vulkan_winsys_amdgpu_radv__amdgpu__cs.c
MesaLib/patches/patch-src_compiler_builtin__type__macros.h
MesaLib/patches/patch-src_gallium_auxiliary_drivers_trace_tr__dump.c
MesaLib/patches/patch-src_gallium_auxiliary_pipe-loader_pipe__loader__drm.c
MesaLib/patches/patch-src_gallium_drivers_vc4_vc4__bufmgr.c
MesaLib/patches/patch-src_gallium_include_pipe_p__config.h
MesaLib/patches/patch-src_gallium_state__trackers_clover_llvm_invocation.cpp
MesaLib/patches/patch-src_gallium_state__trackers_clover_llvm_metadata.hpp
MesaLib/patches/patch-src_gallium_state__trackers_clover_util_range.hpp
MesaLib/patches/patch-src_gbm_Makefile.am
MesaLib/patches/patch-src_gbm_Makefile.in
MesaLib/patches/patch-src_glx_dri__glx.c
MesaLib/patches/patch-src_glx_glxext.c
MesaLib/patches/patch-src_intel_Makefile.in
MesaLib/patches/patch-src_intel_Makefile.tools.am
MesaLib/patches/patch-src_intel_compiler_brw__fs__bank__conflicts.cpp
MesaLib/patches/patch-src_intel_tools_aubinator.c
MesaLib/patches/patch-src_intel_tools_aubinator__error__decode.c
MesaLib/patches/patch-src_intel_vulkan_anv__allocator.c
MesaLib/patches/patch-src_intel_vulkan_anv__device.c
MesaLib/patches/patch-src_intel_vulkan_anv__gem.c
MesaLib/patches/patch-src_intel_vulkan_anv__queue.c
MesaLib/patches/patch-src_mapi_entry__x86-64__tls.h
MesaLib/patches/patch-src_mapi_entry__x86__tls.h
MesaLib/patches/patch-src_mesa_drivers_dri_i965_brw__performance__query.c
MesaLib/patches/patch-src_util_build__id.c
MesaLib/patches/patch-src_util_futex.h
MesaLib/patches/patch-src_util_ralloc.c
MesaLib/patches/patch-src_util_u__queue.c
MesaLib/patches/patch-src_util_xmlconfig.c
Removed Files:
MesaLib/TODO
MesaLib/patches-todo/patch-configure
MesaLib/patches-todo/patch-src_loader_Makefile.in
MesaLib/patches-todo/patch-src_loader_loader.c
MesaLib/patches-todo/patch-src_mapi_entry__x86-64__tls.h
MesaLib/patches-todo/patch-src_mapi_entry__x86__tls.h
MesaLib/patches/patch-include_GL_glxext.h
MesaLib/patches/patch-src_gallium_auxiliary_util_u__math.h
MesaLib/patches/patch-src_gallium_auxiliary_util_u__network.c
MesaLib/patches/patch-src_gallium_auxiliary_util_u__network.h
MesaLib/patches/patch-src_gallium_drivers_nouveau_codegen_nv50__ir__peephole.cpp
MesaLib/patches/patch-src_gallium_targets_dri_Makefile.in
MesaLib/patches/patch-src_gallium_winsys_radeon_drm_radeon__drm__winsys.c
MesaLib/patches/patch-src_gallium_winsys_svga_drm_vmw__screen__ioctl.c
MesaLib/patches/patch-src_glsl_ralloc.c
MesaLib/patches/patch-src_mesa_drivers_dri_Makefile.in
MesaLib/patches/patch-src_mesa_drivers_dri_common_Makefile.in
MesaLib/patches/patch-src_mesa_drivers_dri_common_xmlconfig.c
MesaLib/patches/patch-src_util_strndup.c
Log Message:
MesaLib: update to 18.2.0.
tested only on netbsd-current, requires a change to libdrm, soon to come.
To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=20016f25636233ccb61784a6f17f6e3394bb33f1
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
diffstat:
MesaLib/Makefile | 34 +--
MesaLib/PLIST | 72 +++++--
MesaLib/TODO | 8 -
MesaLib/buildlink3.mk | 10 +-
MesaLib/builtin.mk | 6 +-
MesaLib/distinfo | 103 +++++----
MesaLib/dri.mk | 43 ++--
MesaLib/options.mk | 237 +++++++++++++++------
MesaLib/patches-todo/patch-configure | 161 --------------
MesaLib/patches-todo/patch-src_loader_Makefile.in | 24 ---
MesaLib/patches-todo/patch-src_loader_loader.c | 82 -------
.../patch-src_mapi_entry__x86-64__tls.h | 40 ----
.../patches-todo/patch-src_mapi_entry__x86__tls.h | 48 -----
MesaLib/patches/patch-configure | 149 ++++++++++---
MesaLib/patches/patch-configure.ac | 82 +++++++
MesaLib/patches/patch-include_GL_glxext.h | 17 --
.../patch-include_GL_internal_dri__interface.h | 27 +++
...src_amd_vulkan_winsys_amdgpu_radv__amdgpu__cs.c | 19 ++
.../patch-src_compiler_builtin__type__macros.h | 25 +++
...atch-src_compiler_glsl_glsl__parser__extras.cpp | 9 +-
.../patch-src_egl_drivers_dri2_platform__drm.c | 12 +-
.../patch-src_egl_drivers_dri2_platform__x11.c | 34 ++-
MesaLib/patches/patch-src_egl_main_eglglobals.c | 39 ++--
...-src_gallium_auxiliary_drivers_trace_tr__dump.c | 50 +++++
...llium_auxiliary_pipe-loader_pipe__loader__drm.c | 127 +++++++++++
.../patch-src_gallium_auxiliary_util_u__math.h | 31 ---
.../patch-src_gallium_auxiliary_util_u__network.c | 33 ---
.../patch-src_gallium_auxiliary_util_u__network.h | 15 --
..._drivers_nouveau_codegen_nv50__ir__peephole.cpp | 25 ---
...c_gallium_drivers_nouveau_nouveau__vp3__video.c | 4 +-
.../patch-src_gallium_drivers_vc4_vc4__bufmgr.c | 18 ++
.../patch-src_gallium_include_pipe_p__config.h | 31 +++
...lium_state__trackers_clover_llvm_invocation.cpp | 40 ++++
...allium_state__trackers_clover_llvm_metadata.hpp | 21 ++
...c_gallium_state__trackers_clover_util_range.hpp | 40 ++++
.../patch-src_gallium_targets_dri_Makefile.in | 15 --
...gallium_winsys_radeon_drm_radeon__drm__winsys.c | 18 --
...rc_gallium_winsys_svga_drm_vmw__screen__ioctl.c | 32 ---
MesaLib/patches/patch-src_gbm_Makefile.am | 12 ++
MesaLib/patches/patch-src_gbm_Makefile.in | 13 ++
MesaLib/patches/patch-src_glsl_ralloc.c | 39 ----
MesaLib/patches/patch-src_glx_apple_apple__glapi.c | 6 +-
MesaLib/patches/patch-src_glx_dri__glx.c | 43 ++++
MesaLib/patches/patch-src_glx_glxclient.h | 4 +-
MesaLib/patches/patch-src_glx_glxcurrent.c | 4 +-
MesaLib/patches/patch-src_glx_glxext.c | 47 ++++
MesaLib/patches/patch-src_intel_Makefile.in | 14 ++
MesaLib/patches/patch-src_intel_Makefile.tools.am | 14 ++
...src_intel_compiler_brw__fs__bank__conflicts.cpp | 23 ++
MesaLib/patches/patch-src_intel_tools_aubinator.c | 36 ++++
...atch-src_intel_tools_aubinator__error__decode.c | 19 ++
.../patch-src_intel_vulkan_anv__allocator.c | 62 ++++++
.../patches/patch-src_intel_vulkan_anv__device.c | 47 ++++
MesaLib/patches/patch-src_intel_vulkan_anv__gem.c | 19 ++
.../patches/patch-src_intel_vulkan_anv__queue.c | 25 +++
.../patches/patch-src_mapi_entry__x86-64__tls.h | 32 +++
MesaLib/patches/patch-src_mapi_entry__x86__tls.h | 40 ++++
.../patch-src_mapi_glapi_gen_gl__gentable.py | 4 +-
MesaLib/patches/patch-src_mapi_u__current.c | 10 +-
MesaLib/patches/patch-src_mapi_u__current.h | 2 +-
.../patches/patch-src_mesa_drivers_dri_Makefile.in | 15 --
.../patch-src_mesa_drivers_dri_common_Makefile.in | 16 --
.../patch-src_mesa_drivers_dri_common_xmlconfig.c | 50 -----
...patch-src_mesa_drivers_dri_i915_intel__screen.c | 29 +--
...mesa_drivers_dri_i965_brw__performance__query.c | 16 ++
...patch-src_mesa_drivers_dri_i965_intel__screen.c | 31 +--
...rc_mesa_drivers_dri_i965_intel__tiled__memcpy.c | 2 +
.../patch-src_mesa_drivers_dri_swrast_swrast.c | 6 +-
MesaLib/patches/patch-src_mesa_main_context.c | 40 ++--
MesaLib/patches/patch-src_mesa_main_extensions.c | 33 +--
MesaLib/patches/patch-src_mesa_main_macros.h | 8 +-
.../patches/patch-src_mesa_main_shader__query.cpp | 28 ++-
MesaLib/patches/patch-src_mesa_tnl_t__pipeline.c | 9 +-
MesaLib/patches/patch-src_mesa_x86_common__x86.c | 12 +-
MesaLib/patches/patch-src_util_build__id.c | 25 +++
MesaLib/patches/patch-src_util_futex.h | 53 +++++
MesaLib/patches/patch-src_util_ralloc.c | 25 +++
MesaLib/patches/patch-src_util_strndup.c | 30 ---
MesaLib/patches/patch-src_util_strndup.h | 12 +-
MesaLib/patches/patch-src_util_u__atomic.h | 6 +-
MesaLib/patches/patch-src_util_u__queue.c | 44 ++++
MesaLib/patches/patch-src_util_xmlconfig.c | 31 +++
82 files changed, 1794 insertions(+), 1023 deletions(-)
diffs:
diff --git a/MesaLib/Makefile b/MesaLib/Makefile
index d0d5b43788..feef0a0f33 100644
--- a/MesaLib/Makefile
+++ b/MesaLib/Makefile
@@ -1,9 +1,10 @@
-# $NetBSD: Makefile,v 1.129 2016/10/20 12:06:06 wiz Exp $
+# $NetBSD: Makefile,v 1.140 2018/01/25 10:44:51 jperkin Exp $
-DISTNAME= mesa-13.0.1
+DISTNAME= mesa-18.2.0
PKGNAME= ${DISTNAME:S/mesa/MesaLib/}
CATEGORIES= graphics x11
-MASTER_SITES= ftp://ftp.freedesktop.org/pub/mesa/${PKGVERSION_NOREV}/
+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
@@ -16,10 +17,7 @@ USE_TOOLS+= bison pkg-config gmake flex
USE_LANGUAGES= c99 c++
USE_LIBTOOL= yes
-GCC_REQD+= 4.2
-
PKGCONFIG_OVERRIDE+= src/egl/main/egl.pc.in
-PKGCONFIG_OVERRIDE+= src/egl/wayland/wayland-egl/wayland-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
@@ -42,21 +40,29 @@ 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/mesa/drivers/dri/common/xmlconfig.c
-SUBST_SED.drirc+= -e 's|/etc/|${PREFIX}/etc/|g'
+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
+
.if !empty(PKGSRC_COMPILER:Mclang)
SUBST_CLASSES+= tr1
SUBST_STAGE.tr1= pre-configure
@@ -78,7 +84,7 @@ CONFIGURE_ENV+= ac_cv_prog_PYTHON2=${PYTHONBIN}
# 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
+BUILDLINK_TRANSFORM+= l:pthread:pthread:c l:m:m:c
.endif
# Handle platforms without exp2
@@ -99,9 +105,9 @@ ${WRKDIR}/.manual_patch_done:
INSTALLATION_DIRS+= share/examples/MesaLib
post-install:
- ${INSTALL_DATA} ${WRKSRC}/src/mesa/drivers/dri/common/drirc ${DESTDIR}${PREFIX}/share/examples/MesaLib
+ ${INSTALL_DATA} ${WRKSRC}/src/util/drirc ${DESTDIR}${PREFIX}/share/examples/MesaLib
-.include "../../wip/libpthread-stubs/buildlink3.mk"
+.include "../../x11/libXrandr/buildlink3.mk"
.include "../../x11/libX11/buildlink3.mk"
.include "../../x11/libXext/buildlink3.mk"
.include "../../x11/libxcb/buildlink3.mk"
diff --git a/MesaLib/PLIST b/MesaLib/PLIST
index 62ec282c84..19c7edfec7 100644
--- a/MesaLib/PLIST
+++ b/MesaLib/PLIST
@@ -1,4 +1,5 @@
-@comment $NetBSD: PLIST,v 1.33 2016/02/23 14:40:36 tnn Exp $
+@comment $NetBSD: PLIST,v 1.36 2018/01/01 22:29:36 rillig Exp $
+etc/drirc
${PLIST.dri}include/EGL/egl.h
${PLIST.dri}include/EGL/eglext.h
${PLIST.dri}include/EGL/eglextchromium.h
@@ -11,27 +12,30 @@ 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.dri}include/GLES/egl.h
-${PLIST.dri}include/GLES/gl.h
-${PLIST.dri}include/GLES/glext.h
-${PLIST.dri}include/GLES/glplatform.h
-${PLIST.dri}include/GLES2/gl2.h
-${PLIST.dri}include/GLES2/gl2ext.h
-${PLIST.dri}include/GLES2/gl2platform.h
-${PLIST.dri}include/GLES3/gl3.h
-${PLIST.dri}include/GLES3/gl31.h
-${PLIST.dri}include/GLES3/gl32.h
-${PLIST.dri}include/GLES3/gl3ext.h
-${PLIST.dri}include/GLES3/gl3platform.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
-${PLIST.ilo}lib/dri/ilo_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
@@ -47,8 +51,17 @@ ${PLIST.vc4}lib/dri/vc4_dri.so
${PLIST.svga}lib/dri/vmwgfx_dri.so
${PLIST.dri}lib/libEGL.la
lib/libGL.la
-${PLIST.dri}lib/libGLESv1_CM.la
-${PLIST.dri}lib/libGLESv2.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
@@ -56,9 +69,32 @@ ${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.dri}lib/pkgconfig/glesv1_cm.pc
-${PLIST.dri}lib/pkgconfig/glesv2.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
diff --git a/MesaLib/TODO b/MesaLib/TODO
deleted file mode 100644
index 8e74aee4d1..0000000000
--- a/MesaLib/TODO
+++ /dev/null
@@ -1,8 +0,0 @@
-drmGetDevice() is not supported in libdrm on NetBSD, need alternate
- implementation of loader_get_pci_id_for_fd() in src/loader/loader.c
-investigate applicability of FreeBSD DEVQ patch
-fix bitrot that broke GLX TLS on NetBSD
-test OSX quartz, check if bug 90311 patch needs regen
-test Solaris
-test Linux
-test NetBSD 7
diff --git a/MesaLib/buildlink3.mk b/MesaLib/buildlink3.mk
index d2636f568e..c868b0fe11 100644
--- a/MesaLib/buildlink3.mk
+++ b/MesaLib/buildlink3.mk
@@ -1,4 +1,4 @@
-# $NetBSD: buildlink3.mk,v 1.54 2015/09/27 21:58:03 tnn Exp $
+# $NetBSD: buildlink3.mk,v 1.56 2018/04/02 15:44:47 bsiegert Exp $
BUILDLINK_TREE+= MesaLib
@@ -12,10 +12,10 @@ BUILDLINK_PKGSRCDIR.MesaLib?= ../../graphics/MesaLib
.include "../../mk/bsd.fast.prefs.mk"
.if ${X11_TYPE} == "modular"
-BUILDLINK_ABI_DEPENDS.MesaLib+= MesaLib>=13
+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
+GCC_REQD+= 4.2
. endif
.endif
@@ -42,11 +42,11 @@ MESALIB_SUPPORTS_EGL= yes
MESALIB_SUPPORTS_EGL= no
.endif
-.include "../../x11/libXext/buildlink3.mk"
.if ${X11_TYPE} == "modular"
-.include "../../wip/libpthread-stubs/buildlink3.mk"
+.include "../../devel/libpthread-stubs/buildlink3.mk"
.endif
+.include "../../x11/libXext/buildlink3.mk"
.endif # MESALIB_BUILDLINK3_MK
BUILDLINK_TREE+= -MesaLib
diff --git a/MesaLib/builtin.mk b/MesaLib/builtin.mk
index 124987bc4d..1981219ebf 100644
--- a/MesaLib/builtin.mk
+++ b/MesaLib/builtin.mk
@@ -1,4 +1,4 @@
-# $NetBSD: builtin.mk,v 1.20 2014/03/22 08:19:24 jperkin Exp $
+# $NetBSD: builtin.mk,v 1.21 2018/01/14 14:58:38 rillig Exp $
BUILTIN_PKG:= MesaLib
@@ -22,7 +22,7 @@ IS_BUILTIN.MesaLib= yes
IS_BUILTIN.MesaLib= no
. endif
.endif
-MAKEVARS+= IS_BUILTIN.MesaLib
+MAKEVARS+= IS_BUILTIN.MesaLib
###
### If there is a built-in implementation, then set BUILTIN_PKG.<pkg> to
@@ -67,7 +67,7 @@ USE_BUILTIN.MesaLib!= \
. endif
. endif # PREFER.MesaLib
.endif
-MAKEVARS+= USE_BUILTIN.MesaLib
+MAKEVARS+= USE_BUILTIN.MesaLib
###
### The section below only applies if we are not including this file
diff --git a/MesaLib/distinfo b/MesaLib/distinfo
index ef639eebb5..e0970ae139 100644
--- a/MesaLib/distinfo
+++ b/MesaLib/distinfo
@@ -1,45 +1,64 @@
-$NetBSD: distinfo,v 1.117 2016/05/18 12:55:28 wiz Exp $
+$NetBSD: distinfo,v 1.121 2018/01/16 15:49:47 jperkin Exp $
-SHA1 (mesa-13.0.1.tar.xz) = 13a6f25b8f66ec788293cbbebb2d2bd7e9cc6195
-RMD160 (mesa-13.0.1.tar.xz) = 884012a4a2c68bf982f4b546b03a8f46ac8932fe
-SHA512 (mesa-13.0.1.tar.xz) = 00ae0eaef742a3954c1461b50cdcc8b9f933e829c89784d66bfcc0890e7e2793350efcad1a06f28bd3c115f04702a43a6f1ac6ce86270ca7799a90f1a5cf5127
-Size (mesa-13.0.1.tar.xz) = 9154288 bytes
-SHA1 (patch-configure) = 619e7b3e70f8f20f5ac61fafe6bb0b87e16a1693
-SHA1 (patch-include_GL_glxext.h) = 830902f2d38a8395cda682c059fc5223e1b0e89e
-SHA1 (patch-src_compiler_glsl_glsl__parser__extras.cpp) = c5046ce848d0b1ea428e29611b6822d4f4ab970d
-SHA1 (patch-src_egl_drivers_dri2_platform__drm.c) = 75144a5c2cbcda3f7ccd708ff2ac03c823c045d7
-SHA1 (patch-src_egl_drivers_dri2_platform__x11.c) = 04b6ef8e755f226fbe3e6f2bea6c9e2a56a783ca
-SHA1 (patch-src_egl_main_eglglobals.c) = 194954826564d1053544a88c771019faf4d07df2
+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_auxiliary_util_u__math.h) = 812e4a5291aea47e06505f09891e0434c4d9c34d
-SHA1 (patch-src_gallium_auxiliary_util_u__network.c) = 283f505af780071dc9fd7914f8065e3fb7d8a4fd
-SHA1 (patch-src_gallium_auxiliary_util_u__network.h) = c6106d67b4fa9db0d790474182d6e0ce0c5da677
-SHA1 (patch-src_gallium_drivers_nouveau_codegen_nv50__ir__peephole.cpp) = 5fc2ef7eafac3006896af96bac8176c79b17cfdc
-SHA1 (patch-src_gallium_drivers_nouveau_nouveau__vp3__video.c) = ae1b6eb4df3e4db0f37e44118cdf69b16f3c471e
+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_targets_dri_Makefile.in) = a9a8265d97297040a3e3260b362ca920ec852280
-SHA1 (patch-src_gallium_winsys_radeon_drm_radeon__drm__winsys.c) = 94e05c38ab2a8d2bcc25dd477cbd1fd5d681182a
-SHA1 (patch-src_gallium_winsys_svga_drm_vmw__screen__ioctl.c) = e4b891e8b4ebe5b8e8c7b8c2c1dbed11b9c417df
-SHA1 (patch-src_glsl_ralloc.c) = 63c8e40b9f74404033c20c5c9a00c5f6d8df6433
-SHA1 (patch-src_glx_apple_apple__glapi.c) = df70afc24759978f954ac3a774a14e6518dde97a
-SHA1 (patch-src_glx_glxclient.h) = e15256851559dafb7a86e1eb7e9d6afc86de581b
-SHA1 (patch-src_glx_glxcurrent.c) = 713f75bcafb186c7123d19a6aae3deaed9d5fa69
-SHA1 (patch-src_mapi_glapi_gen_gl__gentable.py) = 53026e520a510e54494760a3fa05af6f15dfb9d8
-SHA1 (patch-src_mapi_u__current.c) = 1731375d82119be326b35d141d7879e083d6d620
-SHA1 (patch-src_mapi_u__current.h) = 214dd29cb0c4fe127eb1157b04b12ddfc455b4b0
-SHA1 (patch-src_mesa_drivers_dri_Makefile.in) = 2fb1471045ae88eaa4fca162bf86330b833167fd
-SHA1 (patch-src_mesa_drivers_dri_common_Makefile.in) = 5e160f7d92c2e9f3fa36e52a082a496af67e634e
-SHA1 (patch-src_mesa_drivers_dri_common_xmlconfig.c) = b87644c5ef5fb5d71c3260026d3afdfbaee749a8
-SHA1 (patch-src_mesa_drivers_dri_i915_intel__screen.c) = fd8436e4e3a69250256c2cddf8138effb16bd7b3
-SHA1 (patch-src_mesa_drivers_dri_i965_intel__screen.c) = 7c1a1e5c549f64d4c390e0c87984c44a88d4abfe
-SHA1 (patch-src_mesa_drivers_dri_i965_intel__tiled__memcpy.c) = c0d465fb65939ead71c9d02b6f6793824dbf441d
-SHA1 (patch-src_mesa_drivers_dri_swrast_swrast.c) = b8a6cca517e1cccbdb2c59cf67a6d2481cdfebd4
-SHA1 (patch-src_mesa_main_context.c) = 695b0e04cbd08dfed46b4dae5f9602b35e21f5b3
-SHA1 (patch-src_mesa_main_extensions.c) = d650d7ddfe22ddbcd8a4c24b64feb27126521ae0
-SHA1 (patch-src_mesa_main_macros.h) = e0e98dff37bbf96fea2f3adf0dc9ef9911b711d9
-SHA1 (patch-src_mesa_main_shader__query.cpp) = 6273c74161f045363c58f38adeb672287f6a0898
-SHA1 (patch-src_mesa_tnl_t__pipeline.c) = afc7d5f27aeadacc7c6a762e5aa892e01a0c1317
-SHA1 (patch-src_mesa_x86_common__x86.c) = bdac91384d67ad0238ecd4cdcf5cfc787952a3d9
-SHA1 (patch-src_util_strndup.c) = b8dfae71f1b219e44f884b8fc6f89a86201353c3
-SHA1 (patch-src_util_strndup.h) = a48a0ebefbc79a770db4baa590d3f858bb52cacf
-SHA1 (patch-src_util_u__atomic.h) = 4a567b6fe5bf67fb7f386fa5f37bedb66d593085
+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
diff --git a/MesaLib/dri.mk b/MesaLib/dri.mk
index 181d2e7ffc..4b3d75dd4d 100644
--- a/MesaLib/dri.mk
+++ b/MesaLib/dri.mk
@@ -1,37 +1,34 @@
-# $NetBSD: dri.mk,v 1.16 2016/03/10 05:29:56 tnn Exp $
+# $NetBSD: dri.mk,v 1.17 2018/03/07 11:57:30 wiz Exp $
#
# Currently, this is for convenience only.
#
.if !defined(DRI_MK)
DRI_MK= # defined
-.if !defined(USE_BUILTIN.MesaLib)
+. if !defined(USE_BUILTIN.MesaLib)
CHECK_BUILTIN.MesaLib:= yes
-. include "../../graphics/MesaLib/builtin.mk"
+. include "../../graphics/MesaLib/builtin.mk"
CHECK_BUILTIN.MesaLib:= no
-.endif
+. endif
-.if !empty(USE_BUILTIN.MesaLib:M[Nn][Oo])
-. if ${OPSYS} != "Darwin"
+. if !empty(USE_BUILTIN.MesaLib:M[Nn][Oo])
+. if ${OPSYS} != "Darwin"
BUILDLINK_API_DEPENDS.libdrm+= libdrm>=2.4.60
-. endif
-. if ${OPSYS} == "Linux"
+. endif
+. if ${OPSYS} == "Linux"
BUILDLINK_API_DEPENDS.libxcb+= libxcb>=1.9.3
+. endif
. endif
-.endif
-.include "../../textproc/expat/buildlink3.mk"
-.include "../../x11/xorgproto/buildlink3.mk"
+. 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
-.if ${OPSYS} == "FreeBSD" || ${OPSYS} == "DragonFly"
-. include "../../devel/libdevq/buildlink3.mk"
-.endif
+. 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
diff --git a/MesaLib/options.mk b/MesaLib/options.mk
index 56b525f319..8c30297a10 100644
--- a/MesaLib/options.mk
+++ b/MesaLib/options.mk
@@ -1,24 +1,35 @@
-# $NetBSD: options.mk,v 1.49 2016/02/25 13:37:46 jperkin Exp $
+# $NetBSD: options.mk,v 1.58 2018/03/24 22:11:14 sevan 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 \
- !empty(MACHINE_PLATFORM:MNetBSD-[789].*-i386) || \
- !empty(MACHINE_PLATFORM:MNetBSD-[789].*-x86_64) || \
- !empty(MACHINE_PLATFORM:MNetBSD-[789].*-sparc64) || \
- !empty(MACHINE_PLATFORM:MNetBSD-[789].*-*arm*)
-PKG_SUGGESTED_OPTIONS+= llvm
-.endif
-
-.if (!empty(MACHINE_PLATFORM:MLinux-*-i386) || \
- !empty(MACHINE_PLATFORM:MLinux-*-x86_64)) && \
- (!empty(CC_VERSION:Mgcc-4.[89].*) || \
- !empty(CC_VERSION:Mgcc-[56].*))
+.if (${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64") && \
+ ${OPSYS} != "SunOS" && ${OPSYS} != "Darwin"
PKG_SUGGESTED_OPTIONS+= llvm
.endif
@@ -29,6 +40,28 @@ PKG_SUGGESTED_OPTIONS+= llvm
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
@@ -37,44 +70,70 @@ PLIST_VARS+= freedreno ilo i915 i965 nouveau r300 r600 radeonsi \
# classic DRI
PLIST_VARS+= dri swrast_dri i915_dri nouveau_dri i965_dri radeon_dri r200_dri
# other features
-PLIST_VARS+= gbm wayland xatracker
+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 ${OPSYS} != "Darwin"
-CFLAGS+= -DHAVE_DRI3
-CONFIGURE_ARGS+= --enable-dri3
+
+.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
+.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
-# Use Thread Local Storage in GLX where it is supported by Mesa and works.
-# XXX Fixme
-# !empty(MACHINE_PLATFORM:MNetBSD-[789].*-i386) ||
-# !empty(MACHINE_PLATFORM:MNetBSD-[789].*-x86_64) ||
-. if \
- !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)
+.if !empty(PKG_OPTIONS:Mglx-tls)
+# Recommended by
+# http://www.freedesktop.org/wiki/Software/Glamor/
CONFIGURE_ARGS+= --enable-glx-tls
-. else
+.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
+.endif # glx-tls
# DRI on Linux needs either sysfs or udev
CONFIGURE_ARGS.Linux+= --enable-sysfs
PLIST.dri= yes
-. if ${OPSYS} != "Darwin"
+.if ${OPSYS} != "Darwin"
BUILDLINK_DEPMETHOD.libpciaccess= full
.include "../../sysutils/libpciaccess/buildlink3.mk"
-. endif
+.endif
.include "../../graphics/MesaLib/dri.mk"
DRI_DRIVERS= #
@@ -83,33 +142,34 @@ GALLIUM_DRIVERS= #
# Software rasterizer
PLIST.swrast_dri= yes
DRI_DRIVERS+= swrast
-. if ${OPSYS} != "Darwin"
+.if ${OPSYS} != "Darwin"
PLIST.swrast= yes
GALLIUM_DRIVERS+= swrast
-. endif
+.endif
# x86 only drivers
-. if (${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64") && ${OPSYS} != "Darwin"
+.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
+# 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.ilo= yes
+# GALLIUM_DRIVERS+= ilo
PLIST.i965_dri= yes
DRI_DRIVERS+= i965
-. endif
+.endif
# ARM drivers
-. if !empty(MACHINE_PLATFORM:MNetBSD-*-*arm*)
+.if !empty(MACHINE_PLATFORM:MNetBSD-*-*arm*)
# Qualcomm SnapDragon, libdrm_freedreno.pc
GALLIUM_DRIVERS+= freedreno
PLIST.freedreno= yes
@@ -117,25 +177,32 @@ PLIST.freedreno= yes
# Broadcom VideoCore 4
GALLIUM_DRIVERS+= vc4
PLIST.vc4= yes
-. endif
+.endif
# qemu Linux guest driver
-. if !empty(MACHINE_PLATFORM:MLinux-*-x86_64)
+.if !empty(MACHINE_PLATFORM:MLinux-*-x86_64)
# XXX test this
#GALLIUM_DRIVERS+= virgl
#PLIST.virgl= yes
-. endif
+.endif
-# theoretically cross platform PCI drivers, but don't build on ARM
-. if ${OPSYS} != "Darwin" && empty(MACHINE_PLATFORM:MNetBSD-*-*arm*)
+# 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
@@ -145,45 +212,76 @@ DRI_DRIVERS+= radeon
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
+.endif # cross platform PCI drivers
-. if ${OPSYS} == "Darwin"
-CONFIGURE_ARGS+= --with-egl-platforms=x11
+.if ${OPSYS} == "Darwin"
+CONFIGURE_ARGS+= --with-platforms=x11
#.elif ${OPSYS} == "Linux"
#.include "../../wip/wayland/buildlink3.mk"
-#CONFIGURE_ARGS+= --with-egl-platforms=x11,drm,wayland
+#CONFIGURE_ARGS+= --with-platforms=x11,drm,wayland
#PLIST.wayland= yes
-. else
-CONFIGURE_ARGS+= --with-egl-platforms=x11,drm
-. endif
+.else
+CONFIGURE_ARGS+= --with-platforms=x11,drm
+.endif
-CONFIGURE_ARGS+= --with-gallium-drivers=${GALLIUM_DRIVERS:ts,}
-CONFIGURE_ARGS+= --with-dri-drivers=${DRI_DRIVERS:ts,}
+.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
-. if !empty(PKG_OPTIONS:Mllvm)
# 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-gallium-llvm
-CONFIGURE_ARGS+= --enable-r600-llvm-compiler
+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
-.include "../../lang/libLLVM/buildlink3.mk"
+.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
+.else # !llvm
CONFIGURE_ARGS+= --disable-xa
-CONFIGURE_ARGS+= --disable-gallium-llvm
-CONFIGURE_ARGS+= --disable-r600-llvm-compiler
-. endif # llvm
+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=
@@ -194,7 +292,20 @@ CONFIGURE_ARGS+= --disable-gbm
CONFIGURE_ARGS+= --disable-gles1
CONFIGURE_ARGS+= --disable-gles2
CONFIGURE_ARGS+= --enable-xlib-glx
-. if !empty(PKG_OPTIONS:Mllvm)
+.if !empty(PKG_OPTIONS:Mllvm)
PKG_FAIL_REASON+= "The llvm PKG_OPTION must also be disabled when dri is disabled"
-. endif
+.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
diff --git a/MesaLib/patches-todo/patch-configure b/MesaLib/patches-todo/patch-configure
deleted file mode 100644
index beb84c409c..0000000000
--- a/MesaLib/patches-todo/patch-configure
+++ /dev/null
@@ -1,161 +0,0 @@
-$NetBSD: patch-configure,v 1.5 2016/02/12 11:49:53 tnn Exp $
-
-Add libdevq support from FreeBSD ports.
-
---- configure.orig 2016-01-13 10:48:25.000000000 +0000
-+++ configure
-@@ -860,6 +860,8 @@ GLPROTO_LIBS
- GLPROTO_CFLAGS
- XLIBGL_LIBS
- XLIBGL_CFLAGS
-+LIBDEVQ_LIBS
-+LIBDEVQ_CFLAGS
- LIBUDEV_LIBS
- LIBUDEV_CFLAGS
- ENABLE_SHADER_CACHE_FALSE
-@@ -1174,6 +1176,8 @@ OPENSSL_CFLAGS
- OPENSSL_LIBS
- LIBUDEV_CFLAGS
- LIBUDEV_LIBS
-+LIBDEVQ_CFLAGS
-+LIBDEVQ_LIBS
- XLIBGL_CFLAGS
- XLIBGL_LIBS
- GLPROTO_CFLAGS
-@@ -5287,6 +5291,7 @@ DRI2PROTO_REQUIRED=2.6
- DRI3PROTO_REQUIRED=1.0
- PRESENTPROTO_REQUIRED=1.0
- LIBUDEV_REQUIRED=151
-+LIBDEVQ_REQUIRED=0.0.2
- GLPROTO_REQUIRED=1.4.14
- LIBOMXIL_BELLAGIO_REQUIRED=0.0
- LIBVA_REQUIRED=0.38.0
-@@ -20727,7 +20732,7 @@ _ACEOF
- $as_echo_n "checking if more special flags are required for pthreads... " >&6; }
- flag=no
- case ${host_os} in
-- aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
-+ aix* | freebsd* | dragonfly* | darwin*) flag="-D_THREAD_SAFE";;
- osf* | hpux*) flag="-D_REENTRANT";;
- solaris*)
- if test "$GCC" = "yes"; then
-@@ -22087,6 +22092,89 @@ else
- fi
-
-
-+
-+# Check for libdevq
-+
-+pkg_failed=no
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBDEVQ" >&5
-+$as_echo_n "checking for LIBDEVQ... " >&6; }
-+if test -n "$LIBDEVQ_CFLAGS"; then
-+ pkg_cv_LIBDEVQ_CFLAGS="$LIBDEVQ_CFLAGS"
-+ elif test -n "$PKG_CONFIG"; then
-+ if test -n "$PKG_CONFIG" && \
-+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists
-+ --print-errors \"libdevq-1.0 >= \$LIBDEVQ_REQUIRED\""; } >&5
-+ ($PKG_CONFIG --exists --print-errors "libdevq-1.0 >= $LIBDEVQ_REQUIRED") 2>&5
-+ ac_status=$?
-+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+ test $ac_status = 0; }; then
-+ pkg_cv_LIBDEVQ_CFLAGS=`$PKG_CONFIG --cflags "libdevq-1.0 >=
-+ $LIBDEVQ_REQUIRED" 2>/dev/null`
-+ test "x$?" != "x0" && pkg_failed=yes
-+else
-+ pkg_failed=yes
-+fi
-+ else
-+ pkg_failed=untried
-+fi
-+if test -n "$LIBDEVQ_LIBS"; then
-+ pkg_cv_LIBDEVQ_LIBS="$LIBDEVQ_LIBS"
-+ elif test -n "$PKG_CONFIG"; then
-+ if test -n "$PKG_CONFIG" && \
-+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists
-+ --print-errors \"libdevq-1.0 >= \$LIBDEVQ_REQUIRED\""; } >&5
-+ ($PKG_CONFIG --exists --print-errors "libdevq-1.0 >= $LIBDEVQ_REQUIRED") 2>&5
-+ ac_status=$?
-+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-+ test $ac_status = 0; }; then
-+ pkg_cv_LIBDEVQ_LIBS=`$PKG_CONFIG --libs "libdevq-1.0 >=
-+ $LIBDEVQ_REQUIRED" 2>/dev/null`
-+ test "x$?" != "x0" && pkg_failed=yes
-+else
-+ pkg_failed=yes
-+fi
-+ else
-+ pkg_failed=untried
-+fi
-+
-+
-+
-+if test $pkg_failed = yes; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+
-+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-+ _pkg_short_errors_supported=yes
-+else
-+ _pkg_short_errors_supported=no
-+fi
-+ if test $_pkg_short_errors_supported = yes; then
-+ LIBDEVQ_PKG_ERRORS=`$PKG_CONFIG --short-errors
-+ --print-errors --cflags --libs "libdevq-1.0 >= $LIBDEVQ_REQUIRED"
-+ 2>&1`
-+ else
-+ LIBDEVQ_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags
-+ --libs "libdevq-1.0 >= $LIBDEVQ_REQUIRED" 2>&1`
-+ fi
-+ # Put the nasty error message in config.log where it belongs
-+ echo "$LIBDEVQ_PKG_ERRORS" >&5
-+
-+ have_libdevq=no
-+elif test $pkg_failed = untried; then
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-+$as_echo "no" >&6; }
-+ have_libdevq=no
-+else
-+ LIBDEVQ_CFLAGS=$pkg_cv_LIBDEVQ_CFLAGS
-+ LIBDEVQ_LIBS=$pkg_cv_LIBDEVQ_LIBS
-+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-+$as_echo "yes" >&6; }
-+ have_libdevq=yes
-+fi
-+
-+
-+
-+
- if test "x$enable_dri" = xyes; then
- if test "$enable_static" = yes; then
- as_fn_error $? "Cannot use static libraries for DRI drivers" "$LINENO" 5
-@@ -22889,6 +22977,10 @@ if test "$have_sysfs" = yes; then
- DEFINES="$DEFINES -DHAVE_SYSFS"
- have_pci_id=yes
- fi
-+if test "$have_libdevq" = yes; then
-+ DEFINES="$DEFINES -DHAVE_LIBDEVQ"
-+ have_pci_id=yes
-+fi
-
- # This is outside the case (above) so that it is invoked even for non-GLX
- # builds.
-@@ -23821,6 +23913,8 @@ fi
-
- if test "x$need_pci_id$have_libudev" = xyesyes; then
- GBM_PC_REQ_PRIV="libudev >= $LIBUDEV_REQUIRED"
-+elif test "x$need_libdevq" = xyes; then
-+ GBM_PC_REQ_PRIV="libdevq-1.0 >= $LIBDEVQ_REQUIRED"
- else
- GBM_PC_REQ_PRIV=""
- fi
-@@ -25468,9 +25562,6 @@ fi
- 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
- else
- MESA_LLVM=0
diff --git a/MesaLib/patches-todo/patch-src_loader_Makefile.in b/MesaLib/patches-todo/patch-src_loader_Makefile.in
deleted file mode 100644
index 7a9011dbe8..0000000000
--- a/MesaLib/patches-todo/patch-src_loader_Makefile.in
+++ /dev/null
@@ -1,24 +0,0 @@
-$NetBSD: patch-src_loader_Makefile.in,v 1.4 2016/01/27 07:39:54 wiz Exp $
-
-FreeBSD & DragonFly support for libdevq.
-
---- src/loader/Makefile.in.orig 2016-01-13 10:48:30.000000000 +0000
-+++ src/loader/Makefile.in
-@@ -320,6 +320,8 @@ LEXLIB = @LEXLIB@
- LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
- LIBCLC_INCLUDEDIR = @LIBCLC_INCLUDEDIR@
- LIBCLC_LIBEXECDIR = @LIBCLC_LIBEXECDIR@
-+LIBDEVQ_CFLAGS = @LIBDEVQ_CFLAGS@
-+LIBDEVQ_LIBS = @LIBDEVQ_LIBS@
- LIBDRM_CFLAGS = @LIBDRM_CFLAGS@
- LIBDRM_LIBS = @LIBDRM_LIBS@
- LIBELF_CFLAGS = @LIBELF_CFLAGS@
-@@ -532,7 +534,7 @@ AM_CPPFLAGS = \
- $(LIBDRM_CFLAGS) \
- $(LIBUDEV_CFLAGS)
-
--libloader_la_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_1)
-+libloader_la_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_1) $(LIBDEVQ_CFLAGS)
- libloader_la_SOURCES = $(LOADER_C_FILES)
- libloader_la_LIBADD = $(am__append_2) $(am__append_3)
- @HAVE_DRI3_TRUE@libloader_dri3_helper_la_SOURCES = \
diff --git a/MesaLib/patches-todo/patch-src_loader_loader.c b/MesaLib/patches-todo/patch-src_loader_loader.c
deleted file mode 100644
index f596f0a072..0000000000
--- a/MesaLib/patches-todo/patch-src_loader_loader.c
+++ /dev/null
@@ -1,82 +0,0 @@
-$NetBSD: patch-src_loader_loader.c,v 1.2 2015/09/26 08:45:02 tnn Exp $
-
-FreeBSD & DragonFly support for libdevq. From FreeBSD ports(?)
-
---- src/loader/loader.c.orig 2015-09-10 18:07:21.000000000 +0000
-+++ src/loader/loader.c
-@@ -70,7 +70,7 @@
- #include <stdarg.h>
- #include <stdio.h>
- #include <string.h>
--#ifdef HAVE_LIBUDEV
-+#if defined(HAVE_LIBUDEV) || defined(HAVE_LIBDEVQ)
- #include <assert.h>
- #include <dlfcn.h>
- #include <unistd.h>
-@@ -505,6 +505,53 @@ sysfs_get_pci_id_for_fd(int fd, int *ven
- }
- #endif
-
-+#if defined(HAVE_LIBDEVQ)
-+#include <libdevq.h>
-+
-+static void *devq_handle = NULL;
-+
-+static void *
-+devq_dlopen_handle(void)
-+{
-+ if (!devq_handle) {
-+ devq_handle = dlopen("libdevq.so.0", RTLD_LOCAL | RTLD_LAZY);
-+ }
-+
-+ return devq_handle;
-+}
-+
-+static void *
-+asserted_dlsym(void *dlopen_handle, const char *name)
-+{
-+ void *result = dlsym(dlopen_handle, name);
-+ assert(result);
-+ return result;
-+}
-+
-+#define DEVQ_SYMBOL(ret, name, args) \
-+ ret (*name) args = asserted_dlsym(devq_dlopen_handle(), #name);
-+
-+static int
-+devq_get_pci_id_from_fd(int fd, int *vendor_id, int *chip_id)
-+{
-+ int ret;
-+ DEVQ_SYMBOL(int, devq_device_get_pciid_from_fd,
-+ (int fd, int *vendor_id, int *chip_id));
-+
-+ *chip_id = -1;
-+
-+ ret = devq_device_get_pciid_from_fd(fd, vendor_id, chip_id);
-+ if (ret < 0) {
-+ log_(_LOADER_WARNING, "MESA-LOADER: could not get PCI ID\n");
-+ goto out;
-+ }
-+
-+out:
-+ return (*chip_id >= 0);
-+}
-+
-+#endif
-+
- #if defined(HAVE_LIBDRM)
- /* for i915 */
- #include <i915_drm.h>
-@@ -588,6 +635,12 @@ loader_get_pci_id_for_fd(int fd, int *ve
- if (sysfs_get_pci_id_for_fd(fd, vendor_id, chip_id))
- return 1;
- #endif
-+
-+#if HAVE_LIBDEVQ
-+ if (devq_get_pci_id_from_fd(fd, vendor_id, chip_id))
-+ return 1;
-+#endif
-+
- #if HAVE_LIBDRM
- if (drm_get_pci_id_for_fd(fd, vendor_id, chip_id))
- return 1;
diff --git a/MesaLib/patches-todo/patch-src_mapi_entry__x86-64__tls.h b/MesaLib/patches-todo/patch-src_mapi_entry__x86-64__tls.h
deleted file mode 100644
index c4363aa719..0000000000
--- a/MesaLib/patches-todo/patch-src_mapi_entry__x86-64__tls.h
+++ /dev/null
@@ -1,40 +0,0 @@
-$NetBSD: patch-src_mapi_entry__x86-64__tls.h,v 1.2 2015/09/26 08:45:02 tnn 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.
-
---- src/mapi/entry_x86-64_tls.h.orig 2015-09-11 17:41:47.000000000 +0000
-+++ src/mapi/entry_x86-64_tls.h
-@@ -36,10 +36,19 @@ __asm__(".text\n"
- ".balign 32\n" \
- func ":"
-
-+#ifdef __NetBSD__
- #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
-
- #define MAPI_TMP_STUB_ASM_GCC
- #include "mapi_tmp.h"
-@@ -61,8 +70,8 @@ entry_patch_public(void)
- {
- }
-
--static char
--x86_64_entry_start[];
-+extern char
-+x86_64_entry_start[] __attribute__((visibility("hidden")));
-
- mapi_func
- entry_get_public(int slot)
diff --git a/MesaLib/patches-todo/patch-src_mapi_entry__x86__tls.h b/MesaLib/patches-todo/patch-src_mapi_entry__x86__tls.h
deleted file mode 100644
index 267190b53a..0000000000
--- a/MesaLib/patches-todo/patch-src_mapi_entry__x86__tls.h
+++ /dev/null
@@ -1,48 +0,0 @@
-$NetBSD: patch-src_mapi_entry__x86__tls.h,v 1.2 2015/09/26 08:45:02 tnn 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.
-
---- src/mapi/entry_x86_tls.h.orig 2015-09-02 17:06:23.000000000 +0000
-+++ src/mapi/entry_x86_tls.h
-@@ -50,10 +50,27 @@ __asm__(".balign 16\n"
- ".balign 16\n" \
- func ":"
-
-+#ifdef __NetBSD__
-+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"
-@@ -71,8 +88,8 @@ __asm__(".text");
- extern unsigned long
- x86_current_tls();
-
--static char x86_entry_start[];
--static char x86_entry_end[];
-+extern char x86_entry_start[] __attribute__((visibility("hidden")));
-+extern char x86_entry_end[] __attribute__((visibility("hidden")));
-
- void
- entry_patch_public(void)
diff --git a/MesaLib/patches/patch-configure b/MesaLib/patches/patch-configure
index 0c911bf155..7245399f0e 100644
--- a/MesaLib/patches/patch-configure
+++ b/MesaLib/patches/patch-configure
@@ -1,35 +1,122 @@
-$NetBSD$
+$NetBSD: patch-configure,v 1.5 2016/02/12 11:49:53 tnn Exp $
---- configure.orig 2016-11-14 11:29:26.000000000 +0000
+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
-@@ -24711,7 +24711,7 @@ if test -n "$with_vulkan_drivers"; then
- if test "x$HAVE_I965_DRI" != xyes; then
- as_fn_error $? "Intel Vulkan driver requires the i965 dri driver" "$LINENO" 5
- fi
-- if test "x$with_sha1" == "x"; then
-+ if test "x$with_sha1" = "x"; then
- as_fn_error $? "Intel Vulkan driver requires SHA1" "$LINENO" 5
- fi
- HAVE_INTEL_VULKAN=yes;
-@@ -24810,7 +24810,7 @@ $as_echo "yes" >&6; }
+@@ -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
- HAVE_RADEON_VULKAN=yes;
-- if test "x$with_sha1" == "x"; then
-+ if test "x$with_sha1" = "x"; then
- as_fn_error $? "radv vulkan driver requires SHA1" "$LINENO" 5
- fi
- ;;
-@@ -26375,9 +26375,9 @@ fi
- strip_unwanted_llvm_flags() {
- # Use \> (marks the end of the word)
- echo `$1` | sed \
-- -e 's/-march=\S*//g' \
-- -e 's/-mtune=\S*//g' \
-- -e 's/-mcpu=\S*//g' \
-+ -e 's/-march=[-a-zA-Z0-9]*//g' \
-+ -e 's/-mtune=[-a-zA-Z0-9]*//g' \
-+ -e 's/-mcpu=[-a-zA-Z0-9]*//g' \
- -e 's/-DNDEBUG\>//g' \
- -e 's/-D_GNU_SOURCE\>//g' \
- -e 's/-pedantic\>//g' \
+
++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
diff --git a/MesaLib/patches/patch-configure.ac b/MesaLib/patches/patch-configure.ac
new file mode 100644
index 0000000000..69033117b3
--- /dev/null
+++ b/MesaLib/patches/patch-configure.ac
@@ -0,0 +1,82 @@
+$NetBSD$
+
+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)
diff --git a/MesaLib/patches/patch-include_GL_glxext.h b/MesaLib/patches/patch-include_GL_glxext.h
deleted file mode 100644
index 876b16d2ce..0000000000
--- a/MesaLib/patches/patch-include_GL_glxext.h
+++ /dev/null
@@ -1,17 +0,0 @@
-$NetBSD: patch-include_GL_glxext.h,v 1.1 2015/04/25 11:19:18 tnn Exp $
-
-Make sure the GLsizeiptr and GLintptr types are defined
-
---- include/GL/glxext.h.orig 2014-10-03 03:59:50.000000000 +0000
-+++ include/GL/glxext.h
-@@ -477,6 +477,10 @@ Bool glXSet3DfxModeMESA (int mode);
-
- #ifndef GLX_NV_copy_buffer
- #define GLX_NV_copy_buffer 1
-+#ifndef GL_VERSION_1_5
-+typedef ptrdiff_t GLsizeiptr;
-+typedef ptrdiff_t GLintptr;
-+#endif
- typedef void ( *PFNGLXCOPYBUFFERSUBDATANVPROC) (Display *dpy, GLXContext readCtx, GLXContext writeCtx, GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
- typedef void ( *PFNGLXNAMEDCOPYBUFFERSUBDATANVPROC) (Display *dpy, GLXContext readCtx, GLXContext writeCtx, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
- #ifdef GLX_GLXEXT_PROTOTYPES
diff --git a/MesaLib/patches/patch-include_GL_internal_dri__interface.h b/MesaLib/patches/patch-include_GL_internal_dri__interface.h
new file mode 100644
index 0000000000..49e4b02679
--- /dev/null
+++ b/MesaLib/patches/patch-include_GL_internal_dri__interface.h
@@ -0,0 +1,27 @@
+$NetBSD$
+
+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>
+
diff --git a/MesaLib/patches/patch-src_amd_vulkan_winsys_amdgpu_radv__amdgpu__cs.c b/MesaLib/patches/patch-src_amd_vulkan_winsys_amdgpu_radv__amdgpu__cs.c
new file mode 100644
index 0000000000..614b620113
--- /dev/null
+++ b/MesaLib/patches/patch-src_amd_vulkan_winsys_amdgpu_radv__amdgpu__cs.c
@@ -0,0 +1,19 @@
+$NetBSD$
+
+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
diff --git a/MesaLib/patches/patch-src_compiler_builtin__type__macros.h b/MesaLib/patches/patch-src_compiler_builtin__type__macros.h
new file mode 100644
index 0000000000..ea5cc6fe3f
--- /dev/null
+++ b/MesaLib/patches/patch-src_compiler_builtin__type__macros.h
@@ -0,0 +1,25 @@
+$NetBSD$
+
+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)
+
diff --git a/MesaLib/patches/patch-src_compiler_glsl_glsl__parser__extras.cpp b/MesaLib/patches/patch-src_compiler_glsl_glsl__parser__extras.cpp
index d912e19e49..6dc940c687 100644
--- a/MesaLib/patches/patch-src_compiler_glsl_glsl__parser__extras.cpp
+++ b/MesaLib/patches/patch-src_compiler_glsl_glsl__parser__extras.cpp
@@ -2,14 +2,17 @@ $NetBSD: patch-src_compiler_glsl_glsl__parser__extras.cpp,v 1.1 2016/04/17 00:03
atexit() is not a good idea in a library; use destructor attribute.
---- src/compiler/glsl/glsl_parser_extras.cpp.orig 2016-04-04 10:24:28.000000000 +0000
+--- src/compiler/glsl/glsl_parser_extras.cpp.orig 2017-09-25 16:56:18.000000000 +0000
+++ src/compiler/glsl/glsl_parser_extras.cpp
-@@ -1938,7 +1938,7 @@ extern "C" {
+@@ -2224,7 +2224,11 @@ extern "C" {
* programs would be invalid. So this should happen at approximately
* program exit.
*/
--void
++#if defined(HAVE_NOATEXIT)
+void __attribute__((__destructor__))
++#else
+ void
++#endif
_mesa_destroy_shader_compiler(void)
{
_mesa_destroy_shader_compiler_caches();
diff --git a/MesaLib/patches/patch-src_egl_drivers_dri2_platform__drm.c b/MesaLib/patches/patch-src_egl_drivers_dri2_platform__drm.c
index c5ccec66b0..1de7c14fa3 100644
--- a/MesaLib/patches/patch-src_egl_drivers_dri2_platform__drm.c
+++ b/MesaLib/patches/patch-src_egl_drivers_dri2_platform__drm.c
@@ -1,16 +1,16 @@
-$NetBSD$
+$NetBSD: patch-src_egl_drivers_dri2_platform__drm.c,v 1.2 2016/01/05 13:02:57 tnn Exp $
netbsd-5 build fix
---- src/egl/drivers/dri2/platform_drm.c.orig 2016-11-10 22:06:40.000000000 +0000
+--- src/egl/drivers/dri2/platform_drm.c.orig 2017-10-19 12:23:53.000000000 +0000
+++ src/egl/drivers/dri2/platform_drm.c
-@@ -683,7 +683,9 @@ dri2_initialize_drm(_EGLDriver *drv, _EG
- goto cleanup;
+@@ -688,7 +688,9 @@ dri2_initialize_drm(_EGLDriver *drv, _EG
}
+ dri2_dpy->own_device = true;
} else {
+#ifdef F_DUPFD_CLOEXEC
- fd = fcntl(gbm_device_get_fd(gbm), F_DUPFD_CLOEXEC, 3);
+ dri2_dpy->fd = fcntl(gbm_device_get_fd(gbm), F_DUPFD_CLOEXEC, 3);
+#endif
- if (fd < 0) {
+ if (dri2_dpy->fd < 0) {
err = "DRI2: failed to fcntl() existing gbm device";
goto cleanup;
diff --git a/MesaLib/patches/patch-src_egl_drivers_dri2_platform__x11.c b/MesaLib/patches/patch-src_egl_drivers_dri2_platform__x11.c
index bc387318d8..7205c82fd6 100644
--- a/MesaLib/patches/patch-src_egl_drivers_dri2_platform__x11.c
+++ b/MesaLib/patches/patch-src_egl_drivers_dri2_platform__x11.c
@@ -2,9 +2,22 @@ $NetBSD: patch-src_egl_drivers_dri2_platform__x11.c,v 1.2 2016/05/18 12:55:28 wi
Provide compat strndup for older Darwin.
---- src/egl/drivers/dri2/platform_x11.c.orig 2016-05-05 12:59:22.000000000 +0000
+* 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
-@@ -591,6 +591,23 @@ dri2_x11_local_authenticate(struct dri2_
+@@ -608,6 +608,23 @@ dri2_x11_local_authenticate(struct dri2_
return EGL_TRUE;
}
@@ -28,3 +41,20 @@ Provide compat strndup for older Darwin.
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)
diff --git a/MesaLib/patches/patch-src_egl_main_eglglobals.c b/MesaLib/patches/patch-src_egl_main_eglglobals.c
index 9286f9a501..1a93bfce0b 100644
--- a/MesaLib/patches/patch-src_egl_main_eglglobals.c
+++ b/MesaLib/patches/patch-src_egl_main_eglglobals.c
@@ -1,40 +1,53 @@
-$NetBSD$
+$NetBSD: patch-src_egl_main_eglglobals.c,v 1.1 2016/01/27 07:39:54 wiz Exp $
atexit() is not a good idea in shared libraries.
---- src/egl/main/eglglobals.c.orig 2016-11-10 22:05:17.000000000 +0000
+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
-@@ -72,11 +72,16 @@ struct _egl_global _eglGlobal =
- _EGL_DEBUG_BIT_CRITICAL | _EGL_DEBUG_BIT_ERROR, /* debugTypesEnabled */
+@@ -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
+static void __attribute__((__destructor__))
++#else
+ static void
++#endif
_eglAtExit(void)
{
EGLint i;
+
++#if defined(HAVE_NOATEXIT)
+ if (!registered)
-+ return;
++ return;
++#endif
+
for (i = _eglGlobal.NumAtExitCalls - 1; i >= 0; i--)
_eglGlobal.AtExitCalls[i]();
}
-@@ -86,14 +91,9 @@ void
+@@ -99,14 +110,20 @@ void
_eglAddAtExitCall(void (*func)(void))
{
if (func) {
-- static EGLBoolean registered = EGL_FALSE;
--
++#if !defined(HAVE_NOATEXIT)
+ static EGLBoolean registered = EGL_FALSE;
++#endif
+
mtx_lock(_eglGlobal.Mutex);
-- if (!registered) {
-- atexit(_eglAtExit);
-- registered = EGL_TRUE;
-- }
++#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;
diff --git a/MesaLib/patches/patch-src_gallium_auxiliary_drivers_trace_tr__dump.c b/MesaLib/patches/patch-src_gallium_auxiliary_drivers_trace_tr__dump.c
new file mode 100644
index 0000000000..d7d657ac5e
--- /dev/null
+++ b/MesaLib/patches/patch-src_gallium_auxiliary_drivers_trace_tr__dump.c
@@ -0,0 +1,50 @@
+$NetBSD$
+
+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;
diff --git a/MesaLib/patches/patch-src_gallium_auxiliary_pipe-loader_pipe__loader__drm.c b/MesaLib/patches/patch-src_gallium_auxiliary_pipe-loader_pipe__loader__drm.c
new file mode 100644
index 0000000000..9574f08413
--- /dev/null
+++ b/MesaLib/patches/patch-src_gallium_auxiliary_pipe-loader_pipe__loader__drm.c
@@ -0,0 +1,127 @@
+$NetBSD$
+
+* 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;
+ }
+
diff --git a/MesaLib/patches/patch-src_gallium_auxiliary_util_u__math.h b/MesaLib/patches/patch-src_gallium_auxiliary_util_u__math.h
deleted file mode 100644
index 0c8b6f74fb..0000000000
--- a/MesaLib/patches/patch-src_gallium_auxiliary_util_u__math.h
+++ /dev/null
@@ -1,31 +0,0 @@
-$NetBSD: patch-src_gallium_auxiliary_util_u__math.h,v 1.4 2015/09/26 08:45:02 tnn Exp $
-
-The C99 "restrict" keyword is not valid in C++, but most compilers will
-understand __restrict.
-
---- src/gallium/auxiliary/util/u_math.h.orig 2015-09-11 17:41:47.000000000 +0000
-+++ src/gallium/auxiliary/util/u_math.h
-@@ -709,6 +712,11 @@ util_bswap16(uint16_t n)
- (n << 8);
- }
-
-+#if defined(__cplusplus) && !defined(restrict)
-+#define undef_restrict
-+#define restrict __restrict
-+#endif
-+
- static inline void*
- util_memcpy_cpu_to_le32(void * restrict dest, const void * restrict src, size_t n)
- {
-@@ -727,6 +735,11 @@ util_memcpy_cpu_to_le32(void * restrict
- #endif
- }
-
-+#if defined(undef_restrict)
-+#undef undef_restrict
-+#undef restrict
-+#endif
-+
- /**
- * Clamp X to [MIN, MAX].
- * This is a macro to allow float, int, uint, etc. types.
diff --git a/MesaLib/patches/patch-src_gallium_auxiliary_util_u__network.c b/MesaLib/patches/patch-src_gallium_auxiliary_util_u__network.c
deleted file mode 100644
index de17091454..0000000000
--- a/MesaLib/patches/patch-src_gallium_auxiliary_util_u__network.c
+++ /dev/null
@@ -1,33 +0,0 @@
-$NetBSD: patch-src_gallium_auxiliary_util_u__network.c,v 1.1 2015/04/25 11:19:18 tnn Exp $
-
-BSD has sockets, silence warning about missing implementation.
-
---- src/gallium/auxiliary/util/u_network.c.orig 2014-09-12 21:30:32.000000000 +0000
-+++ src/gallium/auxiliary/util/u_network.c
-@@ -7,7 +7,7 @@
- # include <winsock2.h>
- # include <windows.h>
- #elif defined(PIPE_OS_LINUX) || defined(PIPE_OS_HAIKU) || \
-- defined(PIPE_OS_APPLE) || defined(PIPE_OS_CYGWIN) || defined(PIPE_OS_SOLARIS)
-+ defined(PIPE_OS_APPLE) || defined(PIPE_OS_CYGWIN) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_BSD)
- # include <sys/socket.h>
- # include <netinet/in.h>
- # include <unistd.h>
-@@ -56,7 +56,7 @@ u_socket_close(int s)
- return;
-
- #if defined(PIPE_OS_LINUX) || defined(PIPE_OS_HAIKU) \
-- || defined(PIPE_OS_APPLE) || defined(PIPE_OS_SOLARIS)
-+ || defined(PIPE_OS_APPLE) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_BSD)
- shutdown(s, SHUT_RDWR);
- close(s);
- #elif defined(PIPE_SUBSYSTEM_WINDOWS_USER)
-@@ -172,7 +172,7 @@ void
- u_socket_block(int s, boolean block)
- {
- #if defined(PIPE_OS_LINUX) || defined(PIPE_OS_HAIKU) \
-- || defined(PIPE_OS_APPLE) || defined(PIPE_OS_SOLARIS)
-+ || defined(PIPE_OS_APPLE) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_BSD)
- int old = fcntl(s, F_GETFL, 0);
- if (old == -1)
- return;
diff --git a/MesaLib/patches/patch-src_gallium_auxiliary_util_u__network.h b/MesaLib/patches/patch-src_gallium_auxiliary_util_u__network.h
deleted file mode 100644
index 095a244125..0000000000
--- a/MesaLib/patches/patch-src_gallium_auxiliary_util_u__network.h
+++ /dev/null
@@ -1,15 +0,0 @@
-$NetBSD: patch-src_gallium_auxiliary_util_u__network.h,v 1.1 2015/04/25 11:19:18 tnn Exp $
-
-BSD has sockets, silence warning about missing implementation.
-
---- src/gallium/auxiliary/util/u_network.h.orig 2014-09-12 21:30:32.000000000 +0000
-+++ src/gallium/auxiliary/util/u_network.h
-@@ -7,7 +7,7 @@
- #if defined(PIPE_SUBSYSTEM_WINDOWS_USER)
- # define PIPE_HAVE_SOCKETS
- #elif defined(PIPE_OS_LINUX) || defined(PIPE_OS_HAIKU) || \
-- defined(PIPE_OS_APPLE) || defined(PIPE_OS_SOLARIS)
-+ defined(PIPE_OS_APPLE) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_BSD)
- # define PIPE_HAVE_SOCKETS
- #endif
-
diff --git a/MesaLib/patches/patch-src_gallium_drivers_nouveau_codegen_nv50__ir__peephole.cpp b/MesaLib/patches/patch-src_gallium_drivers_nouveau_codegen_nv50__ir__peephole.cpp
deleted file mode 100644
index 4a2b50df74..0000000000
--- a/MesaLib/patches/patch-src_gallium_drivers_nouveau_codegen_nv50__ir__peephole.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-$NetBSD: patch-src_gallium_drivers_nouveau_codegen_nv50__ir__peephole.cpp,v 1.1 2015/04/25 11:19:18 tnn Exp $
-
-The C99 "restrict" keyword is not valid in C++, but most compilers will
-understand __restrict.
-
---- src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp.orig 2015-03-28 18:20:39.000000000 +0000
-+++ src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
-@@ -1530,7 +1530,7 @@ private:
-
- bool replaceLdFromLd(Instruction *ld, Record *ldRec);
- bool replaceLdFromSt(Instruction *ld, Record *stRec);
-- bool replaceStFromSt(Instruction *restrict st, Record *stRec);
-+ bool replaceStFromSt(Instruction *__restrict st, Record *stRec);
-
- void addRecord(Instruction *ldst);
- void purgeRecords(Instruction *const st, DataFile);
-@@ -1817,7 +1817,7 @@ MemoryOpt::replaceLdFromLd(Instruction *
- }
-
- bool
--MemoryOpt::replaceStFromSt(Instruction *restrict st, Record *rec)
-+MemoryOpt::replaceStFromSt(Instruction *__restrict st, Record *rec)
- {
- const Instruction *const ri = rec->insn;
- Value *extra[3];
diff --git a/MesaLib/patches/patch-src_gallium_drivers_nouveau_nouveau__vp3__video.c b/MesaLib/patches/patch-src_gallium_drivers_nouveau_nouveau__vp3__video.c
index 89b3d08b57..c5d0c3d842 100644
--- a/MesaLib/patches/patch-src_gallium_drivers_nouveau_nouveau__vp3__video.c
+++ b/MesaLib/patches/patch-src_gallium_drivers_nouveau_nouveau__vp3__video.c
@@ -2,9 +2,9 @@ $NetBSD: patch-src_gallium_drivers_nouveau_nouveau__vp3__video.c,v 1.1 2015/04/2
Fix build on platforms without close-on-exec.
---- src/gallium/drivers/nouveau/nouveau_vp3_video.c.orig 2014-09-12 21:30:32.000000000 +0000
+--- 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
-@@ -292,7 +292,11 @@ nouveau_vp3_load_firmware(struct nouveau
+@@ -294,7 +294,11 @@ nouveau_vp3_load_firmware(struct nouveau
if (nouveau_bo_map(dec->fw_bo, NOUVEAU_BO_WR, dec->client))
return 1;
diff --git a/MesaLib/patches/patch-src_gallium_drivers_vc4_vc4__bufmgr.c b/MesaLib/patches/patch-src_gallium_drivers_vc4_vc4__bufmgr.c
new file mode 100644
index 0000000000..341da6ac95
--- /dev/null
+++ b/MesaLib/patches/patch-src_gallium_drivers_vc4_vc4__bufmgr.c
@@ -0,0 +1,18 @@
+$NetBSD$
+
+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"
diff --git a/MesaLib/patches/patch-src_gallium_include_pipe_p__config.h b/MesaLib/patches/patch-src_gallium_include_pipe_p__config.h
new file mode 100644
index 0000000000..f21eab9cf5
--- /dev/null
+++ b/MesaLib/patches/patch-src_gallium_include_pipe_p__config.h
@@ -0,0 +1,31 @@
+$NetBSD$
+
+* 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
+
diff --git a/MesaLib/patches/patch-src_gallium_state__trackers_clover_llvm_invocation.cpp b/MesaLib/patches/patch-src_gallium_state__trackers_clover_llvm_invocation.cpp
new file mode 100644
index 0000000000..15e00f62fb
--- /dev/null
+++ b/MesaLib/patches/patch-src_gallium_state__trackers_clover_llvm_invocation.cpp
@@ -0,0 +1,40 @@
+$NetBSD$
+
+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();
diff --git a/MesaLib/patches/patch-src_gallium_state__trackers_clover_llvm_metadata.hpp b/MesaLib/patches/patch-src_gallium_state__trackers_clover_llvm_metadata.hpp
new file mode 100644
index 0000000000..320f520a78
--- /dev/null
+++ b/MesaLib/patches/patch-src_gallium_state__trackers_clover_llvm_metadata.hpp
@@ -0,0 +1,21 @@
+$NetBSD$
+
+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 {};
+ }
diff --git a/MesaLib/patches/patch-src_gallium_state__trackers_clover_util_range.hpp b/MesaLib/patches/patch-src_gallium_state__trackers_clover_util_range.hpp
new file mode 100644
index 0000000000..4382079330
--- /dev/null
+++ b/MesaLib/patches/patch-src_gallium_state__trackers_clover_util_range.hpp
@@ -0,0 +1,40 @@
+$NetBSD$
+
+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)... };
+ }
diff --git a/MesaLib/patches/patch-src_gallium_targets_dri_Makefile.in b/MesaLib/patches/patch-src_gallium_targets_dri_Makefile.in
deleted file mode 100644
index e54ff8c0a2..0000000000
--- a/MesaLib/patches/patch-src_gallium_targets_dri_Makefile.in
+++ /dev/null
@@ -1,15 +0,0 @@
-$NetBSD: patch-src_gallium_targets_dri_Makefile.in,v 1.1 2015/04/25 11:19:18 tnn Exp $
-
-DRI drivers need explicit linkage to glapi. FDO bug 57702. We only need to do
-this for the "mega" drivers since that's where final linking takes place.
-
---- src/gallium/targets/dri/Makefile.in.orig 2015-03-28 18:43:38.000000000 +0000
-+++ src/gallium/targets/dri/Makefile.in
-@@ -735,6 +735,7 @@ GALLIUM_TARGET_CFLAGS = \
- $(VISIBILITY_CFLAGS)
-
- GALLIUM_COMMON_LIB_DEPS = \
-+ $(top_srcdir)/src/mapi/shared-glapi/libglapi.la \
- -lm \
- $(CLOCK_LIB) \
- $(PTHREAD_LIBS) \
diff --git a/MesaLib/patches/patch-src_gallium_winsys_radeon_drm_radeon__drm__winsys.c b/MesaLib/patches/patch-src_gallium_winsys_radeon_drm_radeon__drm__winsys.c
deleted file mode 100644
index e14f4dd7c0..0000000000
--- a/MesaLib/patches/patch-src_gallium_winsys_radeon_drm_radeon__drm__winsys.c
+++ /dev/null
@@ -1,18 +0,0 @@
-$NetBSD$
-
-Don't create pipe thread on NetBSD. It triggers some kernel bug.
-kern/49838.
-
---- src/gallium/winsys/radeon/drm/radeon_drm_winsys.c.orig 2016-11-10 22:05:17.000000000 +0000
-+++ src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
-@@ -819,8 +819,10 @@ radeon_drm_winsys_create(int fd, radeon_
- /* TTM aligns the BO size to the CPU page size */
- ws->info.gart_page_size = sysconf(_SC_PAGESIZE);
-
-+#if !defined(__NetBSD__)
- if (ws->num_cpus > 1 && debug_get_option_thread())
- util_queue_init(&ws->cs_queue, "radeon_cs", 8, 1);
-+#endif
-
- /* Create the screen at the end. The winsys must be initialized
- * completely.
diff --git a/MesaLib/patches/patch-src_gallium_winsys_svga_drm_vmw__screen__ioctl.c b/MesaLib/patches/patch-src_gallium_winsys_svga_drm_vmw__screen__ioctl.c
deleted file mode 100644
index 93b1be2f1a..0000000000
--- a/MesaLib/patches/patch-src_gallium_winsys_svga_drm_vmw__screen__ioctl.c
+++ /dev/null
@@ -1,32 +0,0 @@
-$NetBSD: patch-src_gallium_winsys_svga_drm_vmw__screen__ioctl.c,v 1.3 2015/05/15 14:27:42 nros Exp $
-
-Make sure ERESTART gets defined.
-
---- src/gallium/winsys/svga/drm/vmw_screen_ioctl.c.orig 2015-04-24 21:09:35.000000000 +0000
-+++ src/gallium/winsys/svga/drm/vmw_screen_ioctl.c
-@@ -48,6 +48,25 @@
-
- #include "os/os_mman.h"
-
-+#if defined(__NetBSD__)
-+#define _KMEMUSER
-+#include <errno.h>
-+#if !defined(ERESTART)
-+#define ERESTART -3
-+#endif
-+#endif
-+
-+#if defined(__FreeBSD__)
-+#include <errno.h>
-+#if !defined(ERESTART)
-+#define ERESTART -1
-+#endif
-+#endif
-+
-+#if defined(__DragonFly__)
-+#define _KERNEL_STRUCTURES 1
-+#endif
-+
- #include <errno.h>
- #include <unistd.h>
-
diff --git a/MesaLib/patches/patch-src_gbm_Makefile.am b/MesaLib/patches/patch-src_gbm_Makefile.am
new file mode 100644
index 0000000000..12d1e83088
--- /dev/null
+++ b/MesaLib/patches/patch-src_gbm_Makefile.am
@@ -0,0 +1,12 @@
+$NetBSD$
+
+--- 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
diff --git a/MesaLib/patches/patch-src_gbm_Makefile.in b/MesaLib/patches/patch-src_gbm_Makefile.in
new file mode 100644
index 0000000000..e161ce1aee
--- /dev/null
+++ b/MesaLib/patches/patch-src_gbm_Makefile.in
@@ -0,0 +1,13 @@
+$NetBSD$
+
+--- 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
diff --git a/MesaLib/patches/patch-src_glsl_ralloc.c b/MesaLib/patches/patch-src_glsl_ralloc.c
deleted file mode 100644
index f0e3ba6314..0000000000
--- a/MesaLib/patches/patch-src_glsl_ralloc.c
+++ /dev/null
@@ -1,39 +0,0 @@
-$NetBSD: patch-src_glsl_ralloc.c,v 1.4 2016/02/23 11:16:55 jperkin Exp $
-
-* Fix exit time segfault of qt5 application with modular xorg
-* Provide compat strnlen for older Darwin.
-
---- src/util/ralloc.c.orig 2016-01-29 12:21:30.000000000 +0000
-+++ src/util/ralloc.c
-@@ -312,7 +312,7 @@ ralloc_parent(const void *ptr)
-
- static void *autofree_context = NULL;
-
--static void
-+static void __attribute__((__destructor__))
- autofree(void)
- {
- ralloc_free(autofree_context);
-@@ -323,7 +323,6 @@ ralloc_autofree_context(void)
- {
- if (unlikely(autofree_context == NULL)) {
- autofree_context = ralloc_context(NULL);
-- atexit(autofree);
- }
- return autofree_context;
- }
-@@ -360,7 +359,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';
diff --git a/MesaLib/patches/patch-src_glx_apple_apple__glapi.c b/MesaLib/patches/patch-src_glx_apple_apple__glapi.c
index 6e538e67aa..b71d4f9b51 100644
--- a/MesaLib/patches/patch-src_glx_apple_apple__glapi.c
+++ b/MesaLib/patches/patch-src_glx_apple_apple__glapi.c
@@ -3,7 +3,7 @@ $NetBSD: patch-src_glx_apple_apple__glapi.c,v 1.1 2015/09/27 21:58:03 tnn Exp $
https://bugs.freedesktop.org/show_bug.cgi?id=90311
See also hacks.mk.
---- src/glx/apple/apple_glapi.c.orig 2015-08-07 17:36:03.000000000 +0000
+--- 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>
@@ -12,8 +12,8 @@ See also hacks.mk.
+#include "main/remap.h"
#include "glapi.h"
#include "glapitable.h"
- #include "main/dispatch.h"
-@@ -54,6 +55,8 @@ static void _apple_glapi_create_table(vo
+
+@@ -53,6 +54,8 @@ static void _apple_glapi_create_table(vo
if (__applegl_api)
return;
diff --git a/MesaLib/patches/patch-src_glx_dri__glx.c b/MesaLib/patches/patch-src_glx_dri__glx.c
new file mode 100644
index 0000000000..3cc568348f
--- /dev/null
+++ b/MesaLib/patches/patch-src_glx_dri__glx.c
@@ -0,0 +1,43 @@
+$NetBSD$
+
+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);
diff --git a/MesaLib/patches/patch-src_glx_glxclient.h b/MesaLib/patches/patch-src_glx_glxclient.h
index 60ecfcf73d..990d527b0d 100644
--- a/MesaLib/patches/patch-src_glx_glxclient.h
+++ b/MesaLib/patches/patch-src_glx_glxclient.h
@@ -3,9 +3,9 @@ $NetBSD: patch-src_glx_glxclient.h,v 1.1 2015/09/11 16:27:30 tnn Exp $
NetBSD only supports zero-initialized initial-exec tls variables in conjuction
with dlopen(3) at the moment.
---- src/glx/glxclient.h.orig 2015-09-02 17:06:23.000000000 +0000
+--- src/glx/glxclient.h.orig 2017-02-13 11:55:49.000000000 +0000
+++ src/glx/glxclient.h
-@@ -635,7 +635,11 @@ extern void __glXSetCurrentContext(struc
+@@ -661,7 +661,11 @@ extern void __glXSetCurrentContext(struc
extern __thread void *__glX_tls_Context
__attribute__ ((tls_model("initial-exec")));
diff --git a/MesaLib/patches/patch-src_glx_glxcurrent.c b/MesaLib/patches/patch-src_glx_glxcurrent.c
index 86406e4b4e..3e1b8ee451 100644
--- a/MesaLib/patches/patch-src_glx_glxcurrent.c
+++ b/MesaLib/patches/patch-src_glx_glxcurrent.c
@@ -5,10 +5,10 @@ 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 2015-09-02 17:06:23.000000000 +0000
+--- src/glx/glxcurrent.c.orig 2018-02-09 02:17:59.000000000 +0000
+++ src/glx/glxcurrent.c
@@ -40,6 +40,18 @@
- #include "glapi.h"
+ #include "glx_error.h"
/*
+ * MASSIVE KLUDGE!
diff --git a/MesaLib/patches/patch-src_glx_glxext.c b/MesaLib/patches/patch-src_glx_glxext.c
new file mode 100644
index 0000000000..df6c6feedc
--- /dev/null
+++ b/MesaLib/patches/patch-src_glx_glxext.c
@@ -0,0 +1,47 @@
+$NetBSD$
+
+* 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);
diff --git a/MesaLib/patches/patch-src_intel_Makefile.in b/MesaLib/patches/patch-src_intel_Makefile.in
new file mode 100644
index 0000000000..9017bd7402
--- /dev/null
+++ b/MesaLib/patches/patch-src_intel_Makefile.in
@@ -0,0 +1,14 @@
+$NetBSD$
+
+-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 = \
diff --git a/MesaLib/patches/patch-src_intel_Makefile.tools.am b/MesaLib/patches/patch-src_intel_Makefile.tools.am
new file mode 100644
index 0000000000..b30c727252
--- /dev/null
+++ b/MesaLib/patches/patch-src_intel_Makefile.tools.am
@@ -0,0 +1,14 @@
+$NetBSD$
+
+-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
+
+
diff --git a/MesaLib/patches/patch-src_intel_compiler_brw__fs__bank__conflicts.cpp b/MesaLib/patches/patch-src_intel_compiler_brw__fs__bank__conflicts.cpp
new file mode 100644
index 0000000000..4e9ad6e596
--- /dev/null
+++ b/MesaLib/patches/patch-src_intel_compiler_brw__fs__bank__conflicts.cpp
@@ -0,0 +1,23 @@
+$NetBSD$
+
+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]));
diff --git a/MesaLib/patches/patch-src_intel_tools_aubinator.c b/MesaLib/patches/patch-src_intel_tools_aubinator.c
new file mode 100644
index 0000000000..1f6946a65f
--- /dev/null
+++ b/MesaLib/patches/patch-src_intel_tools_aubinator.c
@@ -0,0 +1,36 @@
+$NetBSD$
+
+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);
+
diff --git a/MesaLib/patches/patch-src_intel_tools_aubinator__error__decode.c b/MesaLib/patches/patch-src_intel_tools_aubinator__error__decode.c
new file mode 100644
index 0000000000..367c6bf05e
--- /dev/null
+++ b/MesaLib/patches/patch-src_intel_tools_aubinator__error__decode.c
@@ -0,0 +1,19 @@
+$NetBSD$
+
+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>
diff --git a/MesaLib/patches/patch-src_intel_vulkan_anv__allocator.c b/MesaLib/patches/patch-src_intel_vulkan_anv__allocator.c
new file mode 100644
index 0000000000..23f834d22e
--- /dev/null
+++ b/MesaLib/patches/patch-src_intel_vulkan_anv__allocator.c
@@ -0,0 +1,62 @@
+$NetBSD$
+
+* 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
+
diff --git a/MesaLib/patches/patch-src_intel_vulkan_anv__device.c b/MesaLib/patches/patch-src_intel_vulkan_anv__device.c
new file mode 100644
index 0000000000..cf3a893371
--- /dev/null
+++ b/MesaLib/patches/patch-src_intel_vulkan_anv__device.c
@@ -0,0 +1,47 @@
+$NetBSD$
+
+* 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.
diff --git a/MesaLib/patches/patch-src_intel_vulkan_anv__gem.c b/MesaLib/patches/patch-src_intel_vulkan_anv__gem.c
new file mode 100644
index 0000000000..be78e8d6ca
--- /dev/null
+++ b/MesaLib/patches/patch-src_intel_vulkan_anv__gem.c
@@ -0,0 +1,19 @@
+$NetBSD$
+
+* 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>
+
diff --git a/MesaLib/patches/patch-src_intel_vulkan_anv__queue.c b/MesaLib/patches/patch-src_intel_vulkan_anv__queue.c
new file mode 100644
index 0000000000..e529c7854a
--- /dev/null
+++ b/MesaLib/patches/patch-src_intel_vulkan_anv__queue.c
@@ -0,0 +1,25 @@
+$NetBSD$
+
+* 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"
diff --git a/MesaLib/patches/patch-src_mapi_entry__x86-64__tls.h b/MesaLib/patches/patch-src_mapi_entry__x86-64__tls.h
new file mode 100644
index 0000000000..35d6ce0c0d
--- /dev/null
+++ b/MesaLib/patches/patch-src_mapi_entry__x86-64__tls.h
@@ -0,0 +1,32 @@
+$NetBSD: patch-src_mapi_entry__x86-64__tls.h,v 1.2 2015/09/26 08:45:02 tnn 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
+
diff --git a/MesaLib/patches/patch-src_mapi_entry__x86__tls.h b/MesaLib/patches/patch-src_mapi_entry__x86__tls.h
new file mode 100644
index 0000000000..720af26bc7
--- /dev/null
+++ b/MesaLib/patches/patch-src_mapi_entry__x86__tls.h
@@ -0,0 +1,40 @@
+$NetBSD: patch-src_mapi_entry__x86__tls.h,v 1.2 2015/09/26 08:45:02 tnn 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"
diff --git a/MesaLib/patches/patch-src_mapi_glapi_gen_gl__gentable.py b/MesaLib/patches/patch-src_mapi_glapi_gen_gl__gentable.py
index 4c9561c75d..84c66e6089 100644
--- a/MesaLib/patches/patch-src_mapi_glapi_gen_gl__gentable.py
+++ b/MesaLib/patches/patch-src_mapi_glapi_gen_gl__gentable.py
@@ -2,9 +2,9 @@ $NetBSD: patch-src_mapi_glapi_gen_gl__gentable.py,v 1.1 2015/09/11 00:03:36 tnn
FreeBSD support.
---- src/mapi/glapi/gen/gl_gentable.py.orig 2015-07-29 21:28:50.156039000 +0000
+--- src/mapi/glapi/gen/gl_gentable.py.orig 2017-02-13 11:55:49.000000000 +0000
+++ src/mapi/glapi/gen/gl_gentable.py
-@@ -42,7 +42,7 @@ header = """/* GLXEXT is the define used
+@@ -44,7 +44,7 @@ header = """/* GLXEXT is the define used
#endif
#if (defined(GLXEXT) && defined(HAVE_BACKTRACE)) \\
diff --git a/MesaLib/patches/patch-src_mapi_u__current.c b/MesaLib/patches/patch-src_mapi_u__current.c
index 1091eb49e8..d03a829fb3 100644
--- a/MesaLib/patches/patch-src_mapi_u__current.c
+++ b/MesaLib/patches/patch-src_mapi_u__current.c
@@ -7,25 +7,25 @@ with dlopen(3) at the moment.
+++ src/mapi/u_current.c
@@ -101,7 +101,11 @@ extern void (*__glapi_noop_table[])(void
- __thread struct mapi_table *u_current_table
+ __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 mapi_table *) table_noop_array;
+ = (struct _glapi_table *) table_noop_array;
+#endif
__thread void *u_current_context
__attribute__((tls_model("initial-exec")));
-@@ -283,7 +287,11 @@ struct mapi_table *
+@@ -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 mapi_table *) table_noop_array);
++ 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 mapi_table *) tss_get(u_current_table_tsd);
+ return (struct _glapi_table *) tss_get(u_current_table_tsd);
diff --git a/MesaLib/patches/patch-src_mapi_u__current.h b/MesaLib/patches/patch-src_mapi_u__current.h
index c137f9122b..dc1ac14d7b 100644
--- a/MesaLib/patches/patch-src_mapi_u__current.h
+++ b/MesaLib/patches/patch-src_mapi_u__current.h
@@ -6,7 +6,7 @@ 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 mapi_table *
+ static inline const struct _glapi_table *
u_current_get_table(void)
{
-#ifdef GLX_USE_TLS
diff --git a/MesaLib/patches/patch-src_mesa_drivers_dri_Makefile.in b/MesaLib/patches/patch-src_mesa_drivers_dri_Makefile.in
deleted file mode 100644
index 663a1d7d4c..0000000000
--- a/MesaLib/patches/patch-src_mesa_drivers_dri_Makefile.in
+++ /dev/null
@@ -1,15 +0,0 @@
-$NetBSD$
-
-DRI drivers need explicit linkage to glapi. FDO bug 57702. We only need to do
-this for the "mega" drivers since that's where final linking takes place.
-
---- src/mesa/drivers/dri/Makefile.in.orig 2016-11-14 11:29:32.000000000 +0000
-+++ src/mesa/drivers/dri/Makefile.in
-@@ -614,6 +614,7 @@ mesa_dri_drivers_la_LIBADD = \
- $(SHARED_GLAPI_LIB) \
- $(MEGADRIVERS_DEPS) \
- $(DRI_LIB_DEPS) \
-+ $(top_srcdir)/src/mapi/shared-glapi/libglapi.la \
- $()
-
- @NEED_MEGADRIVER_TRUE@dri_LTLIBRARIES = mesa_dri_drivers.la
diff --git a/MesaLib/patches/patch-src_mesa_drivers_dri_common_Makefile.in b/MesaLib/patches/patch-src_mesa_drivers_dri_common_Makefile.in
deleted file mode 100644
index 20e3007da3..0000000000
--- a/MesaLib/patches/patch-src_mesa_drivers_dri_common_Makefile.in
+++ /dev/null
@@ -1,16 +0,0 @@
-$NetBSD: patch-src_mesa_drivers_dri_common_Makefile.in,v 1.1 2015/04/25 11:19:18 tnn Exp $
-
-Don't install the sysconf directory for now.
-
---- src/mesa/drivers/dri/common/Makefile.in.orig 2015-02-28 00:06:10.000000000 +0000
-+++ src/mesa/drivers/dri/common/Makefile.in
-@@ -710,6 +710,9 @@ mostlyclean-libtool:
- clean-libtool:
- -rm -rf .libs _libs
- install-sysconfDATA: $(sysconf_DATA)
-+ true
-+
-+disabled-install-sysconfDATA:
- @$(NORMAL_INSTALL)
- @list='$(sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \
- if test -n "$$list"; then \
diff --git a/MesaLib/patches/patch-src_mesa_drivers_dri_common_xmlconfig.c b/MesaLib/patches/patch-src_mesa_drivers_dri_common_xmlconfig.c
deleted file mode 100644
index 22dafc62fe..0000000000
--- a/MesaLib/patches/patch-src_mesa_drivers_dri_common_xmlconfig.c
+++ /dev/null
@@ -1,50 +0,0 @@
-$NetBSD: patch-src_mesa_drivers_dri_common_xmlconfig.c,v 1.3 2016/02/23 11:16:55 jperkin Exp $
-
-PR pkg/50202.
-Provide compat strndup for older Darwin.
-
---- src/mesa/drivers/dri/common/xmlconfig.c.orig 2016-01-29 12:21:30.000000000 +0000
-+++ src/mesa/drivers/dri/common/xmlconfig.c
-@@ -50,12 +50,17 @@ extern char *program_invocation_name, *p
- # define GET_PROGRAM_NAME() program_invocation_short_name
- #elif defined(__CYGWIN__)
- # define GET_PROGRAM_NAME() program_invocation_short_name
-+/*
- #elif defined(__FreeBSD__) && (__FreeBSD__ >= 2)
- # include <osreldate.h>
- # if (__FreeBSD_version >= 440000)
- # include <stdlib.h>
- # define GET_PROGRAM_NAME() getprogname()
- # endif
-+*/
-+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
-+# include <stdlib.h>
-+# define GET_PROGRAM_NAME() getprogname()
- #elif defined(__NetBSD__) && defined(__NetBSD_Version__) && (__NetBSD_Version__ >= 106000100)
- # include <stdlib.h>
- # define GET_PROGRAM_NAME() getprogname()
-@@ -111,6 +116,24 @@ static const char *__getProgramName () {
- # endif
- #endif
-
-+#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 findOption (const driOptionCache *cache, const char *name) {
- uint32_t len = strlen (name);
diff --git a/MesaLib/patches/patch-src_mesa_drivers_dri_i915_intel__screen.c b/MesaLib/patches/patch-src_mesa_drivers_dri_i915_intel__screen.c
index 3b8aa7d268..1007daccb5 100644
--- a/MesaLib/patches/patch-src_mesa_drivers_dri_i915_intel__screen.c
+++ b/MesaLib/patches/patch-src_mesa_drivers_dri_i915_intel__screen.c
@@ -1,25 +1,30 @@
$NetBSD: patch-src_mesa_drivers_dri_i915_intel__screen.c,v 1.2 2015/06/07 15:48:12 tnn 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 2015-06-07 10:06:53.000000000 +0000
+--- 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
-@@ -41,6 +41,10 @@
- #include "utils.h"
- #include "xmlpool.h"
-
-+#ifdef HAVE_SYS_SYSCTL_H
+@@ -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
+
- static const __DRIconfigOptionsExtension i915_config_options = {
- .base = { __DRI_CONFIG_OPTIONS, 1 },
- .xml =
-@@ -732,6 +736,13 @@ i915_query_renderer_integer(__DRIscreen
+ #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)
++#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);
@@ -29,7 +34,7 @@ Fix build on older NetBSD w/o _SC_PHYS_PAGES.
const long system_memory_pages = sysconf(_SC_PHYS_PAGES);
const long system_page_size = sysconf(_SC_PAGE_SIZE);
-@@ -740,6 +751,7 @@ i915_query_renderer_integer(__DRIscreen
+@@ -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;
diff --git a/MesaLib/patches/patch-src_mesa_drivers_dri_i965_brw__performance__query.c b/MesaLib/patches/patch-src_mesa_drivers_dri_i965_brw__performance__query.c
new file mode 100644
index 0000000000..99588dbe89
--- /dev/null
+++ b/MesaLib/patches/patch-src_mesa_drivers_dri_i965_brw__performance__query.c
@@ -0,0 +1,16 @@
+$NetBSD$
+
+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"
diff --git a/MesaLib/patches/patch-src_mesa_drivers_dri_i965_intel__screen.c b/MesaLib/patches/patch-src_mesa_drivers_dri_i965_intel__screen.c
index b3012113ef..5fbfbc3f98 100644
--- a/MesaLib/patches/patch-src_mesa_drivers_dri_i965_intel__screen.c
+++ b/MesaLib/patches/patch-src_mesa_drivers_dri_i965_intel__screen.c
@@ -1,25 +1,30 @@
$NetBSD: patch-src_mesa_drivers_dri_i965_intel__screen.c,v 1.2 2015/06/07 15:48:12 tnn 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 2015-06-07 10:06:53.000000000 +0000
+--- 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
-@@ -42,6 +42,10 @@
- #include "utils.h"
- #include "xmlpool.h"
-
-+#ifdef HAVE_SYS_SYSCTL_H
+@@ -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
+
- static const __DRIconfigOptionsExtension brw_config_options = {
- .base = { __DRI_CONFIG_OPTIONS, 1 },
- .xml =
-@@ -829,6 +833,13 @@ brw_query_renderer_integer(__DRIscreen *
+ #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 =
- (aper_size / (1024 * 1024)) * 3 / 4;
+ screen->aperture_threshold / (1024 * 1024);
-+#if defined(HW_PHYSMEM64)
++#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);
@@ -29,7 +34,7 @@ Fix build on older NetBSD w/o _SC_PHYS_PAGES.
const long system_memory_pages = sysconf(_SC_PHYS_PAGES);
const long system_page_size = sysconf(_SC_PAGE_SIZE);
-@@ -837,6 +848,7 @@ brw_query_renderer_integer(__DRIscreen *
+@@ -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;
diff --git a/MesaLib/patches/patch-src_mesa_drivers_dri_i965_intel__tiled__memcpy.c b/MesaLib/patches/patch-src_mesa_drivers_dri_i965_intel__tiled__memcpy.c
index 8c2201edd8..d0d724be03 100644
--- a/MesaLib/patches/patch-src_mesa_drivers_dri_i965_intel__tiled__memcpy.c
+++ b/MesaLib/patches/patch-src_mesa_drivers_dri_i965_intel__tiled__memcpy.c
@@ -1,5 +1,7 @@
$NetBSD$
+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)
diff --git a/MesaLib/patches/patch-src_mesa_drivers_dri_swrast_swrast.c b/MesaLib/patches/patch-src_mesa_drivers_dri_swrast_swrast.c
index 6d7a514d42..75b4fa05dc 100644
--- a/MesaLib/patches/patch-src_mesa_drivers_dri_swrast_swrast.c
+++ b/MesaLib/patches/patch-src_mesa_drivers_dri_swrast_swrast.c
@@ -2,13 +2,13 @@ $NetBSD: patch-src_mesa_drivers_dri_swrast_swrast.c,v 1.2 2015/06/07 15:48:12 tn
Fix build on older NetBSD w/o _SC_PHYS_PAGES.
---- src/mesa/drivers/dri/swrast/swrast.c.orig 2015-06-07 10:06:53.000000000 +0000
+--- src/mesa/drivers/dri/swrast/swrast.c.orig 2017-10-19 12:23:53.000000000 +0000
+++ src/mesa/drivers/dri/swrast/swrast.c
-@@ -150,6 +150,12 @@ swrast_query_renderer_integer(__DRIscree
+@@ -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)
++#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);
diff --git a/MesaLib/patches/patch-src_mesa_main_context.c b/MesaLib/patches/patch-src_mesa_main_context.c
index 486ba22b74..5f2bd3704e 100644
--- a/MesaLib/patches/patch-src_mesa_main_context.c
+++ b/MesaLib/patches/patch-src_mesa_main_context.c
@@ -2,40 +2,56 @@ $NetBSD: patch-src_mesa_main_context.c,v 1.3 2015/09/26 08:45:02 tnn Exp $
* Fix exit time segfault of qt5 application with modular xorg
---- src/mesa/main/context.c.orig 2015-09-11 17:41:47.000000000 +0000
+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
-@@ -350,11 +350,14 @@ mtx_t OneTimeLock = _MTX_INITIALIZER_NP;
+@@ -354,11 +354,23 @@ mtx_t OneTimeLock = _MTX_INITIALIZER_NP;
* Calls all the various one-time-fini functions in Mesa
*/
--static void
++#if defined(HAVE_NOATEXIT)
+static GLbitfield api_init_mask = 0x0;
+static void __attribute__((__destructor__))
++#else
+ static void
++#endif
one_time_fini(void)
{
-- _mesa_destroy_shader_compiler();
-- _mesa_locale_fini();
++#if defined(HAVE_NOATEXIT)
+ if (api_init_mask) {
+ _mesa_destroy_shader_compiler();
+ _mesa_locale_fini();
+ }
++#else
+ _mesa_destroy_shader_compiler();
+ _mesa_locale_fini();
++#endif
}
/**
-@@ -369,7 +372,6 @@ one_time_fini(void)
+@@ -373,7 +385,9 @@ one_time_fini(void)
static void
one_time_init( struct gl_context *ctx )
{
-- static GLbitfield api_init_mask = 0x0;
++#if !defined(HAVE_NOATEXIT)
+ static GLbitfield api_init_mask = 0x0;
++#endif
mtx_lock(&OneTimeLock);
-@@ -394,8 +396,6 @@ one_time_init( struct gl_context *ctx )
+@@ -398,7 +412,9 @@ one_time_init( struct gl_context *ctx )
_mesa_ubyte_to_float_color_tab[i] = (float) i / 255.0F;
}
-- atexit(one_time_fini);
--
- #if defined(DEBUG) && defined(__DATE__) && defined(__TIME__)
++#if !defined(HAVE_NOATEXIT)
+ atexit(one_time_fini);
++#endif
+
+ #if defined(DEBUG)
if (MESA_VERBOSE != 0) {
- _mesa_debug(ctx, "Mesa %s DEBUG build %s %s\n",
diff --git a/MesaLib/patches/patch-src_mesa_main_extensions.c b/MesaLib/patches/patch-src_mesa_main_extensions.c
index 395d96d7b0..4088e763c2 100644
--- a/MesaLib/patches/patch-src_mesa_main_extensions.c
+++ b/MesaLib/patches/patch-src_mesa_main_extensions.c
@@ -2,23 +2,30 @@ $NetBSD: patch-src_mesa_main_extensions.c,v 1.1 2016/01/27 07:39:54 wiz Exp $
atexit() is not a good idea in shared libraries.
---- src/mesa/main/extensions.c.orig 2016-01-07 16:17:53.000000000 +0000
+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
-@@ -256,7 +256,7 @@ get_extension_override( struct gl_contex
- * These strings are allocated early during the first context creation by
+@@ -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.
*/
--static void
++#if defined(HAVE_NOATEXIT)
+static void __attribute__((__destructor__))
++#else
+ static void
++#endif
free_unknown_extensions_strings(void)
{
- free(extra_extensions);
-@@ -277,7 +277,7 @@ _mesa_one_time_init_extension_overrides(
- int len;
- size_t offset;
-
-- atexit(free_unknown_extensions_strings);
-+ /* atexit(free_unknown_extensions_strings); */
+ 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
+ }
+ }
- memset(&_mesa_extension_override_enables, 0, sizeof(struct gl_extensions));
- memset(&_mesa_extension_override_disables, 0, sizeof(struct gl_extensions));
diff --git a/MesaLib/patches/patch-src_mesa_main_macros.h b/MesaLib/patches/patch-src_mesa_main_macros.h
index 8b26b14287..362d661f79 100644
--- a/MesaLib/patches/patch-src_mesa_main_macros.h
+++ b/MesaLib/patches/patch-src_mesa_main_macros.h
@@ -2,13 +2,15 @@ $NetBSD: patch-src_mesa_main_macros.h,v 1.1 2016/01/05 13:02:57 tnn Exp $
ALIGN is also defined in sys/param.h on NetBSD.
---- src/mesa/main/macros.h.orig 2015-12-09 16:10:13.000000000 +0000
+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
-@@ -690,6 +690,9 @@ minify(unsigned value, unsigned levels)
+@@ -677,6 +677,9 @@ minify(unsigned value, unsigned levels)
*
* \sa ROUND_DOWN_TO()
*/
-+#if defined(__NetBSD__)
++#ifdef ALIGN
+#undef ALIGN
+#endif
static inline uintptr_t
diff --git a/MesaLib/patches/patch-src_mesa_main_shader__query.cpp b/MesaLib/patches/patch-src_mesa_main_shader__query.cpp
index b87fcd596c..f8c67796be 100644
--- a/MesaLib/patches/patch-src_mesa_main_shader__query.cpp
+++ b/MesaLib/patches/patch-src_mesa_main_shader__query.cpp
@@ -15,34 +15,44 @@ https://bugs.freedesktop.org/show_bug.cgi?id=66346
src/mesa/main/shader_query.cpp | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
-diff --git a/src/mesa/main/shader_query.cpp b/src/mesa/main/shader_query.cpp
-index bc6fec5..22d9e0f 100644
---- src/mesa/main/shader_query.cpp
+--- src/mesa/main/shader_query.cpp.orig 2016-11-10 22:05:17.000000000 +0000
+++ src/mesa/main/shader_query.cpp
-@@ -68,7 +68,7 @@ _mesa_BindAttribLocation(GLhandleARB program, GLuint index,
+@@ -70,7 +70,12 @@ _mesa_BindAttribLocation(GLuint program,
GET_CURRENT_CONTEXT(ctx);
struct gl_shader_program *const shProg =
-- _mesa_lookup_shader_program_err(ctx, program, "glBindAttribLocation");
++#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;
-@@ -136,7 +136,7 @@ _mesa_GetActiveAttrib(GLhandleARB program, GLuint desired_index,
+@@ -114,7 +119,12 @@ _mesa_GetActiveAttrib(GLuint program, GL
return;
}
-- shProg = _mesa_lookup_shader_program_err(ctx, program, "glGetActiveAttrib");
++#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;
-@@ -250,7 +250,7 @@ _mesa_GetAttribLocation(GLhandleARB program, const GLcharARB * name)
+@@ -159,7 +169,12 @@ _mesa_GetAttribLocation(GLuint program,
{
GET_CURRENT_CONTEXT(ctx);
struct gl_shader_program *const shProg =
-- _mesa_lookup_shader_program_err(ctx, program, "glGetAttribLocation");
++
++#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;
diff --git a/MesaLib/patches/patch-src_mesa_tnl_t__pipeline.c b/MesaLib/patches/patch-src_mesa_tnl_t__pipeline.c
index a089340ba7..46d4749763 100644
--- a/MesaLib/patches/patch-src_mesa_tnl_t__pipeline.c
+++ b/MesaLib/patches/patch-src_mesa_tnl_t__pipeline.c
@@ -2,16 +2,17 @@ $NetBSD: patch-src_mesa_tnl_t__pipeline.c,v 1.1 2015/09/11 00:03:36 tnn Exp $
i386 FPU control word defaults.
---- src/mesa/tnl/t_pipeline.c.orig 2015-09-09 17:55:36.000000000 +0000
+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,13 @@ static GLuint check_output_changes( stru
+@@ -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__ */
-+#elif defined(__FreeBSD__)
-+#define DEFAULT_X86_FPU 0x1272 /* __FreeBSD_NPXCW__ */
+#else
#define DEFAULT_X86_FPU 0x037f
+#endif
diff --git a/MesaLib/patches/patch-src_mesa_x86_common__x86.c b/MesaLib/patches/patch-src_mesa_x86_common__x86.c
index 49217fd3b9..39591f41f5 100644
--- a/MesaLib/patches/patch-src_mesa_x86_common__x86.c
+++ b/MesaLib/patches/patch-src_mesa_x86_common__x86.c
@@ -2,18 +2,18 @@ $NetBSD: patch-src_mesa_x86_common__x86.c,v 1.2 2015/09/11 00:03:36 tnn Exp $
DragonFly support.
---- src/mesa/x86/common_x86.c.orig 2015-07-14 18:10:47.000000000 +0000
+--- src/mesa/x86/common_x86.c.orig 2017-05-10 14:13:58.000000000 +0000
+++ src/mesa/x86/common_x86.c
-@@ -38,7 +38,7 @@
- #if defined(USE_SSE_ASM) && defined(__linux__)
- #include <linux/version.h>
- #endif
+@@ -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
-@@ -128,7 +128,7 @@ static LONG WINAPI ExceptionFilter(LPEXC
+@@ -125,7 +125,7 @@ static LONG WINAPI ExceptionFilter(LPEXC
*/
void _mesa_check_os_sse_support( void )
{
diff --git a/MesaLib/patches/patch-src_util_build__id.c b/MesaLib/patches/patch-src_util_build__id.c
new file mode 100644
index 0000000000..0e87645f0f
--- /dev/null
+++ b/MesaLib/patches/patch-src_util_build__id.c
@@ -0,0 +1,25 @@
+$NetBSD$
+
+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 {
diff --git a/MesaLib/patches/patch-src_util_futex.h b/MesaLib/patches/patch-src_util_futex.h
new file mode 100644
index 0000000000..c0f1b0da7e
--- /dev/null
+++ b/MesaLib/patches/patch-src_util_futex.h
@@ -0,0 +1,53 @@
+$NetBSD$
+
+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
+
diff --git a/MesaLib/patches/patch-src_util_ralloc.c b/MesaLib/patches/patch-src_util_ralloc.c
new file mode 100644
index 0000000000..da1e2ef346
--- /dev/null
+++ b/MesaLib/patches/patch-src_util_ralloc.c
@@ -0,0 +1,25 @@
+$NetBSD: patch-src_glsl_ralloc.c,v 1.4 2016/02/23 11:16:55 jperkin 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';
diff --git a/MesaLib/patches/patch-src_util_strndup.c b/MesaLib/patches/patch-src_util_strndup.c
deleted file mode 100644
index 3afd89bf1f..0000000000
--- a/MesaLib/patches/patch-src_util_strndup.c
+++ /dev/null
@@ -1,30 +0,0 @@
-$NetBSD: patch-src_util_strndup.c,v 1.1 2016/02/23 11:16:55 jperkin Exp $
-
-Provide compat strndup for older Darwin.
-
---- src/util/strndup.c.orig 2016-01-22 15:44:31.000000000 +0000
-+++ src/util/strndup.c
-@@ -21,7 +21,7 @@
- * IN THE SOFTWARE.
- */
-
--#if defined(_WIN32)
-+#if defined(_WIN32) || (defined(__APPLE__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__-0 < 1070)
- #include <stdlib.h>
- #include <string.h>
- #include "strndup.h"
-@@ -35,7 +35,14 @@ strndup(const char *str, size_t max)
- if (!str)
- return NULL;
-
-+#if defined(__APPLE__)
-+ for (n = 0; n < max; n++, str++) {
-+ if (!*str)
-+ break;
-+ }
-+#else
- n = strnlen(str, max);
-+#endif
- ptr = (char *) calloc(n + 1, sizeof(char));
- if (!ptr)
- return NULL;
diff --git a/MesaLib/patches/patch-src_util_strndup.h b/MesaLib/patches/patch-src_util_strndup.h
index 5de6a78338..29175c03de 100644
--- a/MesaLib/patches/patch-src_util_strndup.h
+++ b/MesaLib/patches/patch-src_util_strndup.h
@@ -2,14 +2,14 @@ $NetBSD: patch-src_util_strndup.h,v 1.1 2016/02/23 11:16:55 jperkin Exp $
Provide compat strndup for older Darwin.
---- src/util/strndup.h.orig 2016-01-22 15:44:31.000000000 +0000
+--- src/util/strndup.h.orig 2017-05-10 14:13:58.000000000 +0000
+++ src/util/strndup.h
-@@ -25,7 +25,7 @@
-
- #include <stdlib.h> // size_t
+@@ -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)
- #ifdef __cplusplus
- extern "C" {
+ #include <stdlib.h> // size_t
+ #include <string.h>
diff --git a/MesaLib/patches/patch-src_util_u__atomic.h b/MesaLib/patches/patch-src_util_u__atomic.h
index 2b71ffd9db..7d61840a6b 100644
--- a/MesaLib/patches/patch-src_util_u__atomic.h
+++ b/MesaLib/patches/patch-src_util_u__atomic.h
@@ -2,9 +2,9 @@ $NetBSD: patch-src_util_u__atomic.h,v 1.1 2015/04/25 11:19:18 tnn Exp $
Fix SunOS atomic macros.
---- src/util/u_atomic.h.orig 2015-03-28 18:20:39.000000000 +0000
+--- src/util/u_atomic.h.orig 2017-02-13 11:55:50.000000000 +0000
+++ src/util/u_atomic.h
-@@ -175,7 +175,7 @@ char _InterlockedCompareExchange8(char v
+@@ -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)) : \
@@ -13,7 +13,7 @@ Fix SunOS atomic macros.
#define p_atomic_inc_return(v) ((__typeof(*v)) \
sizeof(*v) == sizeof(uint8_t) ? atomic_inc_8_nv ((uint8_t *)(v)) : \
-@@ -184,12 +184,12 @@ char _InterlockedCompareExchange8(char v
+@@ -186,12 +186,12 @@
sizeof(*v) == sizeof(uint64_t) ? atomic_inc_64_nv((uint64_t *)(v)) : \
(assert(!"should not get here"), 0))
diff --git a/MesaLib/patches/patch-src_util_u__queue.c b/MesaLib/patches/patch-src_util_u__queue.c
new file mode 100644
index 0000000000..d2283c47e3
--- /dev/null
+++ b/MesaLib/patches/patch-src_util_u__queue.c
@@ -0,0 +1,44 @@
+$NetBSD$
+
+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
diff --git a/MesaLib/patches/patch-src_util_xmlconfig.c b/MesaLib/patches/patch-src_util_xmlconfig.c
new file mode 100644
index 0000000000..1488fb73e2
--- /dev/null
+++ b/MesaLib/patches/patch-src_util_xmlconfig.c
@@ -0,0 +1,31 @@
+$NetBSD: patch-src_mesa_drivers_dri_common_xmlconfig.c,v 1.3 2016/02/23 11:16:55 jperkin 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