MesaLib-dfbsd: Import MesaLib mesa3d git as wip/MesaLib-dfbsd
mesa3d git through 2019-02-02 wsi/display: add comment COMMIT_ID= 808bf59cac793bc6c7de04eee4e23e6921a8a7b5 Includes fixes for netbsd radeonsi.
This commit is contained in:
parent
a54df52179
commit
75af6f1003
1
Makefile
1
Makefile
|
@ -20,6 +20,7 @@ SUBDIR+= Geomyidae-git
|
|||
SUBDIR+= GoogleEarth
|
||||
SUBDIR+= I2util
|
||||
SUBDIR+= LuaJIT21
|
||||
SUBDIR+= MesaLib-dfbsd
|
||||
SUBDIR+= MoleInvasion
|
||||
SUBDIR+= OpenGLUT
|
||||
SUBDIR+= OpenIPMI
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
MesaLib is a 3-D graphics library with an API which is very similar to
|
||||
that of OpenGL*. To the extent that Mesa utilizes the OpenGL command syntax
|
||||
or state machine, it is being used with authorization from Silicon Graphics,
|
||||
Inc. However, the author makes no claim that Mesa is in any way a
|
||||
compatible replacement for OpenGL or associated with Silicon Graphics, Inc.
|
|
@ -0,0 +1,131 @@
|
|||
# $NetBSD: Makefile,v 1.18 2019/02/22 15:40:35 tnn Exp $
|
||||
|
||||
# 2019-02-02 wsi/display: add comment
|
||||
COMMIT_ID= 808bf59cac793bc6c7de04eee4e23e6921a8a7b5
|
||||
|
||||
PORTNAME= mesa
|
||||
|
||||
DISTNAME= ${PORTNAME}-${COMMIT_ID}
|
||||
PKGNAME= MesaLib-19.1.0
|
||||
# PKGREVISION= 1
|
||||
CATEGORIES= graphics x11
|
||||
MASTER_SITES= http://cgit.freedesktop.org/mesa/${PORTNAME}/snapshot/
|
||||
|
||||
# DISTNAME= mesa-18.3.3
|
||||
# PKGNAME= ${DISTNAME:S/mesa/MesaLib/}
|
||||
# CATEGORIES= graphics x11
|
||||
# MASTER_SITES= ftp://ftp.freedesktop.org/pub/mesa/
|
||||
# MASTER_SITES= ftp://ftp.freedesktop.org/pub/mesa/${PKGVERSION_NOREV}/
|
||||
EXTRACT_SUFX= .tar.xz
|
||||
|
||||
MAINTAINER= pkgsrc-users@NetBSD.org
|
||||
HOMEPAGE= https://www.mesa3d.org/
|
||||
COMMENT= The Mesa 3D Graphics Library
|
||||
LICENSE= mit
|
||||
|
||||
GNU_CONFIGURE= yes
|
||||
USE_TOOLS+= autoconf automake autoreconf bison pkg-config gmake flex
|
||||
USE_LANGUAGES= c99 c++
|
||||
USE_LIBTOOL= yes
|
||||
|
||||
PKGCONFIG_OVERRIDE+= src/egl/main/egl.pc.in
|
||||
PKGCONFIG_OVERRIDE+= src/gallium/targets/d3dadapter9/d3d.pc.in
|
||||
PKGCONFIG_OVERRIDE+= src/gallium/targets/osmesa/osmesa.pc.in
|
||||
PKGCONFIG_OVERRIDE+= src/gallium/targets/xa/xatracker.pc.in
|
||||
PKGCONFIG_OVERRIDE+= src/gbm/main/gbm.pc.in
|
||||
PKGCONFIG_OVERRIDE+= src/glx/windows/windowsdriproto.pc.in
|
||||
PKGCONFIG_OVERRIDE+= src/mapi/es1api/glesv1_cm.pc.in
|
||||
PKGCONFIG_OVERRIDE+= src/mapi/es2api/glesv2.pc.in
|
||||
PKGCONFIG_OVERRIDE+= src/mesa/drivers/dri/dri.pc.in
|
||||
PKGCONFIG_OVERRIDE+= src/mesa/drivers/osmesa/osmesa.pc.in
|
||||
PKGCONFIG_OVERRIDE+= src/mesa/gl.pc.in
|
||||
|
||||
CONFIGURE_ARGS+= --enable-shared-glapi
|
||||
|
||||
# Work around a buildlink and/or libtool bug:
|
||||
# In the libtool install/relink stage, if we want to link with two static
|
||||
# archives named libglapi.la but in different directories, bad things happen.
|
||||
SUBST_CLASSES+= wrapper-bug
|
||||
SUBST_STAGE.wrapper-bug= pre-configure
|
||||
SUBST_MESSAGE.wrapper-bug= Renaming non-shared libglapi.la in Makefiles
|
||||
SUBST_FILES.wrapper-bug= src/gallium/targets/libgl-xlib/Makefile.am
|
||||
SUBST_FILES.wrapper-bug+= src/gallium/targets/osmesa/Makefile.am
|
||||
SUBST_FILES.wrapper-bug+= src/glx/Makefile.am
|
||||
SUBST_FILES.wrapper-bug+= src/mapi/Makefile.am
|
||||
SUBST_FILES.wrapper-bug+= src/mesa/drivers/osmesa/Makefile.am
|
||||
SUBST_FILES.wrapper-bug+= src/mesa/drivers/x11/Makefile.am
|
||||
SUBST_SED.wrapper-bug= -e 's,shared-glapi/libglapi\.la,shared-glapi/libglapi_tmp_rename.la,g'
|
||||
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_la,libglapi_impl_la,g'
|
||||
SUBST_SED.wrapper-bug+= -e 's,libglapi_tmp_rename\.la,libglapi.la,g'
|
||||
SUBST_SED.wrapper-bug+= -e 's,libglapi_tmp_rename_la,libglapi_la,g'
|
||||
|
||||
# Replace /etc/drirc.d with ${PREFIX}/etc/drirc.d
|
||||
SUBST_CLASSES+= drirc
|
||||
SUBST_STAGE.drirc= pre-configure
|
||||
SUBST_MESSAGE.drirc= Fixing hardcoded /etc/drirc.d references
|
||||
SUBST_FILES.drirc+= src/util/xmlconfig.c
|
||||
SUBST_SED.drirc+= -e 's|/etc|${PREFIX}/etc|g'
|
||||
|
||||
CFLAGS.SunOS+= -D__EXTENSIONS__ -D_POSIX_PTHREAD_SEMANTICS
|
||||
CXXFLAGS.SunOS+= -Drestrict=__restrict__
|
||||
LDFLAGS.SunOS+= -lsocket -lnsl
|
||||
|
||||
.include "../../mk/bsd.prefs.mk"
|
||||
.include "../../mk/compiler.mk"
|
||||
.include "options.mk"
|
||||
|
||||
.if ${MACHINE_ARCH} == "i386"
|
||||
CONFIGURE_ARGS+= --enable-glx-read-only-text
|
||||
.endif
|
||||
|
||||
PYTHON_FOR_BUILD_ONLY= yes
|
||||
BUILD_DEPENDS+= ${PYPKGPREFIX}-mako-[0-9]*:../../devel/py-mako
|
||||
# needed to build vulkan support
|
||||
BUILD_DEPENDS+= ${PYPKGPREFIX}-cElementTree-[0-9]*:../../textproc/py-cElementTree
|
||||
CONFIGURE_ENV+= PYTHON=${PYTHONBIN}
|
||||
.include "../../lang/python/tool.mk"
|
||||
|
||||
# Handle platforms without exp2
|
||||
.if !empty(MACHINE_PLATFORM:MNetBSD-[1-5].*-*)
|
||||
CPPFLAGS+= -Dexp2\(x\)=exp\(\(x\)\*M_LN2\)
|
||||
CPPFLAGS+= -Dexp2f\(x\)=expf\(\(x\)\*M_LN2\)
|
||||
.endif
|
||||
|
||||
# Work around Xorg segfaulting in radeon driver due to wrong alloca being used
|
||||
CFLAGS.NetBSD+= -Dalloca=__builtin_alloca
|
||||
CXXFLAGS.NetBSD+= -Dalloca=__builtin_alloca
|
||||
|
||||
# Autotools is being phased out
|
||||
CONFIGURE_ARGS+= --enable-autotools
|
||||
|
||||
pre-configure:
|
||||
touch ${WRKSRC}/src/glx/apple_dummy.cpp
|
||||
cd ${WRKSRC} && autoreconf -vif
|
||||
|
||||
DRIRC_DIR= ${PKG_SYSCONFDIR}/drirc.d
|
||||
EGDIR= ${PREFIX}/share/examples/mesa
|
||||
OWN_DIRS+= ${DRIRC_DIR}
|
||||
INSTALLATION_DIRS+= ${EGDIR}
|
||||
CONF_FILES+= ${EGDIR}/00-mesa-defaults.conf \
|
||||
${DRIRC_DIR}/00-mesa-defaults.conf
|
||||
|
||||
post-install:
|
||||
${INSTALL_DATA} ${WRKSRC}/src/util/00-mesa-defaults.conf ${DESTDIR}${EGDIR}
|
||||
|
||||
# FreeBSD bug 225414 --build-id=sha1 used by i965
|
||||
.if ${OPSYS} == "FreeBSD"
|
||||
PKG_LD= ${PREFIX}/bin/gld
|
||||
LDFLAGS+= -fuse-ld=${PKG_LD:Q}
|
||||
_WRAP_EXTRA_ARGS.CXX+= -fuse-ld=${PKG_LD:Q}
|
||||
CWRAPPERS_APPEND.cxx+= -fuse-ld=${PKG_LD:Q}
|
||||
.include "../../devel/binutils/buildlink3.mk"
|
||||
.endif
|
||||
|
||||
.include "../../devel/zlib/buildlink3.mk"
|
||||
.include "../../x11/libXrandr/buildlink3.mk"
|
||||
.include "../../x11/libX11/buildlink3.mk"
|
||||
.include "../../x11/libXext/buildlink3.mk"
|
||||
.include "../../x11/libxcb/buildlink3.mk"
|
||||
.include "../../mk/bsd.pkg.mk"
|
|
@ -0,0 +1,104 @@
|
|||
@comment $NetBSD: PLIST,v 1.5 2019/01/19 21:54:03 tnn Exp $
|
||||
${PLIST.egl}include/EGL/egl.h
|
||||
${PLIST.egl}include/EGL/eglext.h
|
||||
${PLIST.egl}include/EGL/eglextchromium.h
|
||||
${PLIST.egl}include/EGL/eglmesaext.h
|
||||
${PLIST.egl}include/EGL/eglplatform.h
|
||||
include/GL/gl.h
|
||||
include/GL/gl_mangle.h
|
||||
include/GL/glcorearb.h
|
||||
include/GL/glext.h
|
||||
include/GL/glx.h
|
||||
include/GL/glx_mangle.h
|
||||
include/GL/glxext.h
|
||||
${PLIST.osmesa}include/GL/osmesa.h
|
||||
${PLIST.dri}include/GL/internal/dri_interface.h
|
||||
${PLIST.glesv1}include/GLES/egl.h
|
||||
${PLIST.glesv1}include/GLES/gl.h
|
||||
${PLIST.glesv1}include/GLES/glext.h
|
||||
${PLIST.glesv1}include/GLES/glplatform.h
|
||||
${PLIST.glesv2}include/GLES2/gl2.h
|
||||
${PLIST.glesv2}include/GLES2/gl2ext.h
|
||||
${PLIST.glesv2}include/GLES2/gl2platform.h
|
||||
${PLIST.glesv2}include/GLES3/gl3.h
|
||||
${PLIST.glesv2}include/GLES3/gl31.h
|
||||
${PLIST.glesv2}include/GLES3/gl32.h
|
||||
${PLIST.glesv2}include/GLES3/gl3ext.h
|
||||
${PLIST.glesv2}include/GLES3/gl3platform.h
|
||||
include/KHR/khrplatform.h
|
||||
${PLIST.gbm}include/gbm.h
|
||||
${PLIST.vulkan}include/vulkan/vulkan_intel.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}lib/dri/i915_dri.so
|
||||
${PLIST.i965}lib/dri/i965_dri.so
|
||||
@comment ${PLIST.ilo}lib/dri/ilo_dri.so
|
||||
${PLIST.freedreno}lib/dri/kgsl_dri.so
|
||||
${PLIST.swrast}lib/dri/kms_swrast_dri.so
|
||||
${PLIST.freedreno}lib/dri/msm_dri.so
|
||||
${PLIST.nouveau}lib/dri/nouveau_dri.so
|
||||
${PLIST.nouveau_dri}lib/dri/nouveau_vieux_dri.so
|
||||
${PLIST.r200}lib/dri/r200_dri.so
|
||||
${PLIST.r300}lib/dri/r300_dri.so
|
||||
${PLIST.r600}lib/dri/r600_dri.so
|
||||
${PLIST.radeon_dri}lib/dri/radeon_dri.so
|
||||
${PLIST.radeonsi}lib/dri/radeonsi_dri.so
|
||||
${PLIST.swrast_dri}lib/dri/swrast_dri.so
|
||||
${PLIST.vc4}lib/dri/vc4_dri.so
|
||||
${PLIST.svga}lib/dri/vmwgfx_dri.so
|
||||
${PLIST.egl}lib/libEGL.la
|
||||
lib/libGL.la
|
||||
${PLIST.glesv1}lib/libGLESv1_CM.la
|
||||
${PLIST.glesv2}lib/libGLESv2.la
|
||||
${PLIST.osmesa}lib/libOSMesa.la
|
||||
${PLIST.xvmc}${PLIST.nouveau}lib/libXvMCnouveau.so
|
||||
${PLIST.xvmc}${PLIST.nouveau}lib/libXvMCnouveau.so.1
|
||||
${PLIST.xvmc}${PLIST.nouveau}lib/libXvMCnouveau.so.1.0
|
||||
${PLIST.xvmc}${PLIST.nouveau}lib/libXvMCnouveau.so.1.0.0
|
||||
${PLIST.xvmc}${PLIST.r600}lib/libXvMCr600.so
|
||||
${PLIST.xvmc}${PLIST.r600}lib/libXvMCr600.so.1
|
||||
${PLIST.xvmc}${PLIST.r600}lib/libXvMCr600.so.1.0
|
||||
${PLIST.xvmc}${PLIST.r600}lib/libXvMCr600.so.1.0.0
|
||||
${PLIST.gbm}lib/libgbm.la
|
||||
lib/libglapi.la
|
||||
${PLIST.wayland}lib/libwayland-egl.la
|
||||
${PLIST.xatracker}lib/libxatracker.la
|
||||
${PLIST.dri}lib/pkgconfig/dri.pc
|
||||
${PLIST.egl}lib/pkgconfig/egl.pc
|
||||
${PLIST.gbm}lib/pkgconfig/gbm.pc
|
||||
${PLIST.osmesa}lib/pkgconfig/osmesa.pc
|
||||
lib/pkgconfig/gl.pc
|
||||
${PLIST.glesv1}lib/pkgconfig/glesv1_cm.pc
|
||||
${PLIST.glesv2}lib/pkgconfig/glesv2.pc
|
||||
${PLIST.wayland}lib/pkgconfig/wayland-egl.pc
|
||||
${PLIST.xatracker}lib/pkgconfig/xatracker.pc
|
||||
${PLIST.nouveau}${PLIST.vdpau}lib/vdpau/libvdpau_nouveau.so
|
||||
${PLIST.nouveau}${PLIST.vdpau}lib/vdpau/libvdpau_nouveau.so.1
|
||||
${PLIST.nouveau}${PLIST.vdpau}lib/vdpau/libvdpau_nouveau.so.1.0
|
||||
${PLIST.nouveau}${PLIST.vdpau}lib/vdpau/libvdpau_nouveau.so.1.0.0
|
||||
${PLIST.vdpau}lib/vdpau/libvdpau_r300.so
|
||||
${PLIST.vdpau}lib/vdpau/libvdpau_r300.so.1
|
||||
${PLIST.vdpau}lib/vdpau/libvdpau_r300.so.1.0
|
||||
${PLIST.vdpau}lib/vdpau/libvdpau_r300.so.1.0.0
|
||||
${PLIST.vdpau}lib/vdpau/libvdpau_r600.so
|
||||
${PLIST.vdpau}lib/vdpau/libvdpau_r600.so.1
|
||||
${PLIST.vdpau}lib/vdpau/libvdpau_r600.so.1.0
|
||||
${PLIST.vdpau}lib/vdpau/libvdpau_r600.so.1.0.0
|
||||
${PLIST.vdpau}lib/vdpau/libvdpau_radeonsi.so
|
||||
${PLIST.vdpau}lib/vdpau/libvdpau_radeonsi.so.1
|
||||
${PLIST.vdpau}lib/vdpau/libvdpau_radeonsi.so.1.0
|
||||
${PLIST.vdpau}lib/vdpau/libvdpau_radeonsi.so.1.0.0
|
||||
@comment ${PLIST.vdpau}lib/dri/nouveau_drv_video.la
|
||||
${PLIST.nouveau}${PLIST.vaapi}lib/dri/nouveau_drv_video.so
|
||||
@comment ${PLIST.vdpau}lib/dri/r600_drv_video.la
|
||||
${PLIST.vaapi}lib/dri/r600_drv_video.so
|
||||
@comment ${PLIST.vdpau}lib/dri/radeonsi_drv_video.la
|
||||
${PLIST.vaapi}lib/dri/radeonsi_drv_video.so
|
||||
${PLIST.vulkan}lib/libvulkan_intel.la
|
||||
${PLIST.vulkan}lib/libvulkan_radeon.la
|
||||
${PLIST.vulkan}share/vulkan/icd.d/intel_icd.${MACHINE_ARCH}.json
|
||||
${PLIST.vulkan}share/vulkan/icd.d/radeon_icd.${MACHINE_ARCH}.json
|
||||
share/examples/mesa/00-mesa-defaults.conf
|
|
@ -0,0 +1,8 @@
|
|||
Copy port to graphics/MesaLib, do not install from wip.
|
||||
|
||||
* See what can be done on NetBSD build for glesv1 and glesv2
|
||||
* See if libLLVM 3.9+ on FreeBSD can build nouveau
|
||||
* Test OSX quartz, check if bug 90311 patch needs regen
|
||||
* Test Solaris
|
||||
* Test Linux
|
||||
* Fully port Vulkan support from FreeBSD ports.
|
|
@ -0,0 +1,50 @@
|
|||
# $NetBSD: buildlink3.mk,v 1.2 2018/10/10 11:03:02 maya Exp $
|
||||
|
||||
BUILDLINK_TREE+= MesaLib
|
||||
|
||||
.if !defined(MESALIB_BUILDLINK3_MK)
|
||||
MESALIB_BUILDLINK3_MK:=
|
||||
|
||||
BUILDLINK_API_DEPENDS.MesaLib+= MesaLib>=3.4.2
|
||||
BUILDLINK_ABI_DEPENDS.MesaLib+= MesaLib>=7.11.2
|
||||
BUILDLINK_PKGSRCDIR.MesaLib?= ../../graphics/MesaLib
|
||||
|
||||
.include "../../mk/bsd.fast.prefs.mk"
|
||||
|
||||
.if ${X11_TYPE} == "modular"
|
||||
BUILDLINK_ABI_DEPENDS.MesaLib+= MesaLib>=10.5.3
|
||||
# This is needed to avoid linking conflicting libstdc++ versions
|
||||
. if defined(USE_LANGUAGES) && !empty(USE_LANGUAGES:Mc++)
|
||||
GCC_REQD+= 4.2
|
||||
. endif
|
||||
.endif
|
||||
|
||||
# See <http://developer.apple.com/qa/qa2007/qa1567.html>.
|
||||
.if ${X11_TYPE} == "native" && !empty(MACHINE_PLATFORM:MDarwin-[9].*-*)
|
||||
BUILDLINK_LDFLAGS.MesaLib+= -Wl,-dylib_file,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
|
||||
.endif
|
||||
|
||||
pkgbase:= MesaLib
|
||||
.include "../../mk/pkg-build-options.mk"
|
||||
|
||||
.if ${X11_TYPE} == "native" && ${OPSYS} != "Cygwin" && exists(${X11BASE}/lib/pkgconfig/dri.pc)
|
||||
PKG_BUILD_OPTIONS.MesaLib+= dri
|
||||
.endif
|
||||
|
||||
.if !empty(PKG_BUILD_OPTIONS.MesaLib:Mdri)
|
||||
. include "../../graphics/MesaLib/dri.mk"
|
||||
.endif
|
||||
|
||||
.if ${X11_TYPE} == "modular" && !empty(PKG_BUILD_OPTIONS.MesaLib:Mdri) || \
|
||||
${X11_TYPE} == "native" && exists(${X11BASE}/include/EGL/egl.h)
|
||||
MESALIB_SUPPORTS_EGL= yes
|
||||
.else
|
||||
MESALIB_SUPPORTS_EGL= no
|
||||
.endif
|
||||
|
||||
.include "../../mk/pthread.buildlink3.mk"
|
||||
|
||||
.include "../../x11/libXext/buildlink3.mk"
|
||||
.endif # MESALIB_BUILDLINK3_MK
|
||||
|
||||
BUILDLINK_TREE+= -MesaLib
|
|
@ -0,0 +1,87 @@
|
|||
# $NetBSD: builtin.mk,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
BUILTIN_PKG:= MesaLib
|
||||
|
||||
BUILTIN_FIND_FILES_VAR:= H_MESALIB PC_GL
|
||||
BUILTIN_FIND_FILES.H_MESALIB= ${X11BASE}/include/GL/glx.h
|
||||
BUILTIN_FIND_FILES.PC_GL= ${X11BASE}/lib/pkgconfig/gl.pc
|
||||
BUILTIN_FIND_FILES.PC_GL+= ${X11BASE}/lib${LIBABISUFFIX}/pkgconfig/gl.pc
|
||||
|
||||
.include "../../mk/buildlink3/bsd.builtin.mk"
|
||||
|
||||
###
|
||||
### Determine if there is a built-in implementation of the package and
|
||||
### set IS_BUILTIN.<pkg> appropriately ("yes" or "no").
|
||||
###
|
||||
.if !defined(IS_BUILTIN.MesaLib)
|
||||
. if empty(PC_GL:M__nonexistent__)
|
||||
IS_BUILTIN.MesaLib= yes
|
||||
. elif empty(H_MESALIB:M__nonexistent__)
|
||||
IS_BUILTIN.MesaLib= yes
|
||||
. else
|
||||
IS_BUILTIN.MesaLib= no
|
||||
. endif
|
||||
.endif
|
||||
MAKEVARS+= IS_BUILTIN.MesaLib
|
||||
|
||||
###
|
||||
### If there is a built-in implementation, then set BUILTIN_PKG.<pkg> to
|
||||
### a package name to represent the built-in package.
|
||||
###
|
||||
.if !defined(BUILTIN_PKG.MesaLib) && \
|
||||
!empty(IS_BUILTIN.MesaLib:M[yY][eE][sS])
|
||||
. if empty(PC_GL:M__nonexistent__)
|
||||
BUILTIN_VERSION.Mesa!= ${SED} -n -e 's/Version: //p' ${PC_GL}
|
||||
. elif empty(H_MESALIB:M__nonexistent__)
|
||||
. include "../../graphics/Mesa/version.mk"
|
||||
. else # ?
|
||||
BUILTIN_VERSION.Mesa:= 0.something-weird-happened
|
||||
. endif
|
||||
BUILTIN_PKG.MesaLib= MesaLib-${BUILTIN_VERSION.Mesa}
|
||||
MAKEVARS+= BUILTIN_VERSION.Mesa
|
||||
.endif
|
||||
MAKEVARS+= BUILTIN_PKG.MesaLib
|
||||
|
||||
###
|
||||
### Determine whether we should use the built-in implementation if it
|
||||
### exists, and set USE_BUILTIN.<pkg> appropriate ("yes" or "no").
|
||||
###
|
||||
.if !defined(USE_BUILTIN.MesaLib)
|
||||
. if ${PREFER.MesaLib} == "pkgsrc"
|
||||
USE_BUILTIN.MesaLib= no
|
||||
. else
|
||||
USE_BUILTIN.MesaLib= ${IS_BUILTIN.MesaLib}
|
||||
. if defined(BUILTIN_PKG.MesaLib) && \
|
||||
!empty(IS_BUILTIN.MesaLib:M[yY][eE][sS])
|
||||
USE_BUILTIN.MesaLib= yes
|
||||
. for dep in ${BUILDLINK_API_DEPENDS.MesaLib}
|
||||
. if !empty(USE_BUILTIN.MesaLib:M[yY][eE][sS])
|
||||
USE_BUILTIN.MesaLib!= \
|
||||
if ${PKG_ADMIN} pmatch ${dep:Q} ${BUILTIN_PKG.MesaLib}; then \
|
||||
${ECHO} yes; \
|
||||
else \
|
||||
${ECHO} no; \
|
||||
fi
|
||||
. endif
|
||||
. endfor
|
||||
. endif
|
||||
. endif # PREFER.MesaLib
|
||||
.endif
|
||||
MAKEVARS+= USE_BUILTIN.MesaLib
|
||||
|
||||
###
|
||||
### The section below only applies if we are not including this file
|
||||
### solely to determine whether a built-in implementation exists.
|
||||
###
|
||||
CHECK_BUILTIN.MesaLib?= no
|
||||
.if !empty(CHECK_BUILTIN.MesaLib:M[nN][oO])
|
||||
|
||||
. if !empty(USE_BUILTIN.MesaLib:M[nN][oO])
|
||||
. include "../../mk/pthread.buildlink3.mk"
|
||||
. include "../../mk/pthread.builtin.mk"
|
||||
BUILTIN_PKG:= MesaLib
|
||||
. endif
|
||||
|
||||
. include "../../mk/x11.builtin.mk"
|
||||
|
||||
.endif # CHECK_BUILTIN.MesaLib
|
|
@ -0,0 +1,76 @@
|
|||
$NetBSD: distinfo,v 1.16 2019/02/22 15:40:35 tnn Exp $
|
||||
|
||||
SHA1 (mesa-808bf59cac793bc6c7de04eee4e23e6921a8a7b5.tar.xz) = 781799c44fbc7e3d486a584c0da94015fbd84491
|
||||
RMD160 (mesa-808bf59cac793bc6c7de04eee4e23e6921a8a7b5.tar.xz) = 38d2cccc855cf1dfc8b712624d04cefa63b08757
|
||||
SHA512 (mesa-808bf59cac793bc6c7de04eee4e23e6921a8a7b5.tar.xz) = 1de951823e8b355370e705b79ec10ac9d66d12f6f16b205dd8b774f393f22c470435de6b36047b11381bc4cc654eb9b7bc7d6c30e60652a3d3e41e593398834b
|
||||
Size (mesa-808bf59cac793bc6c7de04eee4e23e6921a8a7b5.tar.xz) = 10222844 bytes
|
||||
SHA1 (patch-configure.ac) = ba9ded10c5a87275db29c9d008d917041b2e0c78
|
||||
SHA1 (patch-include_GL_internal_dri__interface.h) = 146d2f3f3e50fc1947e8941301d9cf9d90a035e2
|
||||
SHA1 (patch-src_amd_common_ac__debug.c) = 8233367c3b5bc344442ea8d19488fdd1e3791ae9
|
||||
SHA1 (patch-src_amd_vulkan_radv__device.c) = a029ba89311fe62e3712573993fabf38910e9838
|
||||
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) = e18e7b1ffbc74b8acf3d9095a92c750f9d005479
|
||||
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) = f913b779404e6bd8ae707a4fd66eb7c1dca9b311
|
||||
SHA1 (patch-src_gallium_auxiliary_util_u__format__tests.c) = d878e6f3e9a0a37d4903c0d0551f9fa535635d40
|
||||
SHA1 (patch-src_gallium_drivers_freedreno_freedreno__screen.c) = d76bf52c25609d641dbf4021e81282cbdc925976
|
||||
SHA1 (patch-src_gallium_drivers_nouveau_nouveau__vp3__video.c) = 04f95784c3270c9bb7e95377982e217962481525
|
||||
SHA1 (patch-src_gallium_drivers_nouveau_nv50_nv84__video.c) = 1b4239fe053523835ecac006894bdb0cde0ee626
|
||||
SHA1 (patch-src_gallium_drivers_radeonsi_si__compute__blit.c) = a154669340b36125561749ca305ba47a5e1bf110
|
||||
SHA1 (patch-src_gallium_drivers_radeonsi_si__pipe.c) = 24a37091733e938199dfefe98d0f21796162a7ea
|
||||
SHA1 (patch-src_gallium_drivers_radeonsi_si__state__shaders.c) = ed51a57765f2349bc91fd509dc03e709241bd899
|
||||
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_gallium_winsys_radeon_drm_radeon__drm__winsys.c) = 8c73f29a93e4e7ae8c0acd6f5f345047dc8a8541
|
||||
SHA1 (patch-src_gbm_Makefile.am) = 5f3107afbf64b97f7d21ce427cecc4fb78974db3
|
||||
SHA1 (patch-src_glx_Makefile.am) = 869c4f2388f835b9b296b3c84c2a03ef7717f17d
|
||||
SHA1 (patch-src_glx_apple_apple__glapi.c) = c4eea8dabf74eb03d22da4eb834b18ae3384c63b
|
||||
SHA1 (patch-src_glx_dri__common.h) = 0274877f8c65a4bb729536a897df4704897a4c6e
|
||||
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.tools.am) = 5253d5972b48ae3bc8d648bb9f479dcf6cbd3fab
|
||||
SHA1 (patch-src_intel_compiler_brw__fs__bank__conflicts.cpp) = 6276d2c6846bb4dd08699921bec4e20202a17478
|
||||
SHA1 (patch-src_intel_isl_isl__tiled__memcpy.c) = 265721e521d1d1e43a50cbbcffbc0f0fc47922f7
|
||||
SHA1 (patch-src_intel_tools_aub__mem.c) = 671e478a843b70c12c5038ad314c108925ab5cc7
|
||||
SHA1 (patch-src_intel_tools_aubinator__error__decode.c) = 159b57f9a3c1fd37ab1e5b49ff911073e2e9ff9b
|
||||
SHA1 (patch-src_intel_tools_error2aub.c) = e38395e3889f6e3af645f312a429ce2a7d285231
|
||||
SHA1 (patch-src_intel_vulkan_anv__allocator.c) = 5dd27eea9811d739558c5b488c57a3d7ae539d87
|
||||
SHA1 (patch-src_intel_vulkan_anv__device.c) = 69ded51aa20ed3a8a2b1515b90eceac1fadf1db4
|
||||
SHA1 (patch-src_intel_vulkan_anv__gem.c) = b8eb487fa704151e7c3c3b1d23973b2b0aa5922e
|
||||
SHA1 (patch-src_intel_vulkan_anv__gem__stubs.c) = 7f0a25e96624815ef0912024b52bbb512d4fa42f
|
||||
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) = 1250b3477c4b8013b928772b7dc7f24e8c4b67aa
|
||||
SHA1 (patch-src_mesa_drivers_dri_i965_intel__screen.c) = 639d0d2680a98dd5213dfadf608468de6ac54c20
|
||||
SHA1 (patch-src_mesa_drivers_dri_swrast_swrast.c) = 3106f350e590f62c8bd29cd85f24f977639dccdb
|
||||
SHA1 (patch-src_mesa_drivers_x11_Makefile.am) = 172a8da11a620edce790f64338a0390cd1e93188
|
||||
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_x86_common__x86.c) = f8c4b93443ef66d017f6aa114b877565b30f2598
|
||||
SHA1 (patch-src_util_Makefile.am) = e390cd47b784ad08987b81fdbce537968ad4a624
|
||||
SHA1 (patch-src_util_build__id.c) = fee28ddf5c91208492efcfdebf32e0cfef35502d
|
||||
SHA1 (patch-src_util_disk__cache.c) = cc0b29780dba5d5b5e43c0798336f16a1f0008de
|
||||
SHA1 (patch-src_util_futex.h) = 35097c3b8baf8b969c6ec5ec1feb6f4e0a48237e
|
||||
SHA1 (patch-src_util_os__time.c) = 0cdeec38dbb09700f4cfaa075f865e2a617daf31
|
||||
SHA1 (patch-src_util_ralloc.c) = d311bfd9ed7e673d72e050668d351c1e6552cdc8
|
||||
SHA1 (patch-src_util_strndup.h) = 73f49694ca48ad6b9a9d8346c5b84fddec2463bd
|
||||
SHA1 (patch-src_util_u__atomic.h) = 31d4514538ef5ee53012695eb5c66134aaec981e
|
||||
SHA1 (patch-src_util_u__queue.c) = ed1ea3f6fc37e9a64894a3e865c48691b6e01b2c
|
||||
SHA1 (patch-src_util_u__thread.h) = 1c0d6ea3638e79bb437843e96cfe6786a9616b7b
|
||||
SHA1 (patch-src_util_xmlconfig.c) = ad5619e067957b120a70c1c63421c92b356e16ac
|
|
@ -0,0 +1,34 @@
|
|||
# $NetBSD: dri.mk,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
#
|
||||
# Currently, this is for convenience only.
|
||||
#
|
||||
.if !defined(DRI_MK)
|
||||
DRI_MK= # defined
|
||||
|
||||
. if !defined(USE_BUILTIN.MesaLib)
|
||||
CHECK_BUILTIN.MesaLib:= yes
|
||||
. include "../../graphics/MesaLib/builtin.mk"
|
||||
CHECK_BUILTIN.MesaLib:= no
|
||||
. endif
|
||||
|
||||
. if !empty(USE_BUILTIN.MesaLib:M[Nn][Oo])
|
||||
. if ${OPSYS} != "Darwin"
|
||||
BUILDLINK_API_DEPENDS.libdrm+= libdrm>=2.4.60
|
||||
. endif
|
||||
. if ${OPSYS} == "Linux"
|
||||
BUILDLINK_API_DEPENDS.libxcb+= libxcb>=1.9.3
|
||||
. endif
|
||||
. endif
|
||||
. include "../../textproc/expat/buildlink3.mk"
|
||||
. include "../../x11/xorgproto/buildlink3.mk"
|
||||
# XXX these do not have builtin.mk
|
||||
. if ${X11_TYPE} == "modular"
|
||||
. include "../../x11/libxshmfence/buildlink3.mk"
|
||||
. endif
|
||||
. include "../../x11/libXdamage/buildlink3.mk"
|
||||
. include "../../x11/libXfixes/buildlink3.mk"
|
||||
. include "../../x11/libXxf86vm/buildlink3.mk"
|
||||
. if ${OPSYS} != "Darwin"
|
||||
. include "../../x11/libdrm/buildlink3.mk"
|
||||
. endif
|
||||
.endif
|
|
@ -0,0 +1,324 @@
|
|||
# $NetBSD: options.mk,v 1.11 2019/01/26 21:28:29 tnn Exp $
|
||||
|
||||
PKG_OPTIONS_VAR= PKG_OPTIONS.MesaLib
|
||||
PKG_SUPPORTED_OPTIONS= llvm dri
|
||||
PKG_SUGGESTED_OPTIONS=
|
||||
|
||||
PKG_SUPPORTED_OPTIONS+= glx-tls xvmc debug
|
||||
PKG_SUPPORTED_OPTIONS+= vdpau vaapi
|
||||
PKG_SUPPORTED_OPTIONS+= osmesa
|
||||
PKG_SUPPORTED_OPTIONS+= glesv1 glesv2
|
||||
PKG_SUPPORTED_OPTIONS+= xa
|
||||
PKG_SUPPORTED_OPTIONS+= noatexit
|
||||
PKG_SUPPORTED_OPTIONS+= vulkan
|
||||
PKG_SUPPORTED_OPTIONS+= no_cs_queue
|
||||
PKG_SUPPORTED_OPTIONS+= revert_threaded_context
|
||||
PKG_SUPPORTED_OPTIONS+= revert_copy_clear
|
||||
|
||||
# PKG_SUGGESTED_OPTIONS+= xvmc
|
||||
PKG_SUGGESTED_OPTIONS+= vdpau vaapi
|
||||
|
||||
# glesv1 and glesv2 build error on NetBSD
|
||||
# due to no table_noop_array for tls patch
|
||||
.if ${OPSYS} != "NetBSD"
|
||||
PKG_SUGGESTED_OPTIONS+= glesv1 glesv2
|
||||
.endif
|
||||
|
||||
PKG_SUGGESTED_OPTIONS+= xa
|
||||
PKG_SUGGESTED_OPTIONS+= noatexit
|
||||
|
||||
# The LLVM option enables JIT accelerated software rendering and
|
||||
# is also required to support the latest RADEON GPUs, so enable it
|
||||
# by default on platforms where such GPUs might be encountered.
|
||||
.if (${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64") && \
|
||||
${OPSYS} != "SunOS" && ${OPSYS} != "Darwin" && \
|
||||
!(${OPSYS} == "NetBSD" && ${X11_TYPE} == "native")
|
||||
PKG_SUGGESTED_OPTIONS+= llvm
|
||||
.endif
|
||||
|
||||
.if ${OPSYS} == "FreeBSD" || ${OPSYS} == "OpenBSD" || \
|
||||
${OPSYS} == "DragonFly" || ${OPSYS} == "Linux" || \
|
||||
${OPSYS} == "SunOS" || ${OPSYS} == "Darwin" || \
|
||||
(${OPSYS} == "NetBSD" && ${X11_TYPE} == "modular")
|
||||
PKG_SUGGESTED_OPTIONS+= dri
|
||||
.endif
|
||||
|
||||
# Use Thread Local Storage in GLX where it is supported by Mesa and works.
|
||||
.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
|
||||
|
||||
.if ${OPSYS} == "NetBSD"
|
||||
PKG_SUGGESTED_OPTIONS+= no_cs_queue
|
||||
PKG_SUGGESTED_OPTIONS+= revert_threaded_context
|
||||
PKG_SUGGESTED_OPTIONS+= revert_copy_clear
|
||||
.endif
|
||||
|
||||
.include "../../mk/bsd.options.mk"
|
||||
|
||||
# gallium
|
||||
PLIST_VARS+= freedreno i915 i965 nouveau r300 r600 radeonsi \
|
||||
swrast svga vc4 virgl vulkan
|
||||
# classic DRI
|
||||
PLIST_VARS+= dri swrast_dri nouveau_dri radeon_dri r200
|
||||
# other features
|
||||
PLIST_VARS+= egl gbm vaapi vdpau wayland xatracker
|
||||
PLIST_VARS+= osmesa xvmc
|
||||
PLIST_VARS+= glesv1 glesv2
|
||||
|
||||
.if !empty(PKG_OPTIONS:Mdri)
|
||||
|
||||
CONFIGURE_ARGS+= --enable-dri
|
||||
# Having DRI3 and egl compiled in by default doesn't hurt, the X server
|
||||
# will only use it if it is supported at run time.
|
||||
CONFIGURE_ARGS+= --enable-dri3
|
||||
.if ${OPSYS} != "Darwin"
|
||||
CONFIGURE_ARGS+= --enable-egl
|
||||
CONFIGURE_ARGS+= --enable-gbm
|
||||
PLIST.egl= yes
|
||||
PLIST.gbm= yes
|
||||
.else
|
||||
CONFIGURE_ARGS+= --disable-egl
|
||||
CONFIGURE_ARGS+= --disable-gbm
|
||||
.endif
|
||||
|
||||
.if !empty(PKG_OPTIONS:Mosmesa)
|
||||
CONFIGURE_ARGS+= --enable-osmesa
|
||||
PLIST.osmesa= yes
|
||||
.endif
|
||||
|
||||
.if !empty(PKG_OPTIONS:Mglesv1)
|
||||
CONFIGURE_ARGS+= --enable-gles1
|
||||
PLIST.glesv1= yes
|
||||
.else
|
||||
CONFIGURE_ARGS+= --disable-gles1
|
||||
.endif
|
||||
|
||||
.if !empty(PKG_OPTIONS:Mglesv2)
|
||||
CONFIGURE_ARGS+= --enable-gles2
|
||||
PLIST.glesv2= yes
|
||||
.else
|
||||
CONFIGURE_ARGS+= --disable-gles2
|
||||
.endif
|
||||
|
||||
.if !empty(PKG_OPTIONS:Mglx-tls)
|
||||
# Recommended by
|
||||
# http://www.freedesktop.org/wiki/Software/Glamor/
|
||||
CONFIGURE_ARGS+= --enable-glx-tls
|
||||
.else
|
||||
# (EE) Failed to load /usr/pkg/lib/xorg/modules/extensions/libglx.so:
|
||||
# /usr/pkg/lib/libGL.so.1: Use of initialized Thread Local Storage with model
|
||||
# initial-exec and dlopen is not supported
|
||||
CONFIGURE_ARGS+= --disable-glx-tls
|
||||
.endif # glx-tls
|
||||
|
||||
# DRI on Linux needs either sysfs or udev
|
||||
CONFIGURE_ARGS.Linux+= --enable-sysfs
|
||||
|
||||
PLIST.dri= yes
|
||||
|
||||
.if ${OPSYS} != "Darwin"
|
||||
BUILDLINK_DEPMETHOD.libpciaccess= full
|
||||
.include "../../sysutils/libpciaccess/buildlink3.mk"
|
||||
.endif
|
||||
.include "../../graphics/MesaLib/dri.mk"
|
||||
|
||||
DRI_DRIVERS= #
|
||||
GALLIUM_DRIVERS= #
|
||||
VULKAN_DRIVERS= #
|
||||
|
||||
# Software rasterizer
|
||||
PLIST.swrast_dri= yes
|
||||
DRI_DRIVERS+= swrast
|
||||
.if ${OPSYS} != "Darwin"
|
||||
PLIST.swrast= yes
|
||||
GALLIUM_DRIVERS+= swrast
|
||||
.endif
|
||||
|
||||
# x86 only drivers
|
||||
.if (${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64") && ${OPSYS} != "Darwin"
|
||||
# svga / VMWare driver
|
||||
PLIST.svga= yes
|
||||
GALLIUM_DRIVERS+= svga
|
||||
|
||||
# Intel chipsets, x86 only
|
||||
PLIST.i915= yes
|
||||
# GALLIUM_DRIVERS+= i915
|
||||
DRI_DRIVERS+= i915
|
||||
|
||||
PLIST.i965= yes
|
||||
DRI_DRIVERS+= i965
|
||||
|
||||
.endif
|
||||
|
||||
# Vulkan support
|
||||
.if !empty(PKG_OPTIONS:Mvulkan)
|
||||
VULKAN_DRIVERS+= intel
|
||||
VULKAN_DRIVERS+= radeon
|
||||
PLIST.vulkan= yes
|
||||
.endif
|
||||
|
||||
# ARM drivers
|
||||
.if !empty(MACHINE_PLATFORM:MNetBSD-*-*arm*)
|
||||
# Qualcomm SnapDragon, libdrm_freedreno.pc
|
||||
#GALLIUM_DRIVERS+= freedreno
|
||||
#PLIST.freedreno= yes
|
||||
|
||||
# Broadcom VideoCore 4
|
||||
GALLIUM_DRIVERS+= vc4
|
||||
PLIST.vc4= yes
|
||||
.endif
|
||||
|
||||
# qemu Linux guest driver
|
||||
.if !empty(MACHINE_PLATFORM:MLinux-*-x86_64)
|
||||
# XXX test this
|
||||
#GALLIUM_DRIVERS+= virgl
|
||||
#PLIST.virgl= yes
|
||||
.endif
|
||||
|
||||
# theoretically cross platform PCI drivers
|
||||
.if ${OPSYS} != "Darwin" && empty(MACHINE_PLATFORM:MNetBSD-*-*arm*) && \
|
||||
empty(MACHINE_PLATFORM:MNetBSD-*-mipsel)
|
||||
|
||||
# AMD Radeon r600
|
||||
PLIST.r600= yes
|
||||
GALLIUM_DRIVERS+= r600
|
||||
|
||||
# FULL_OS_VERSION_CMD= ${UNAME} -r
|
||||
# FULL_OS_VERSION= ${FULL_OS_VERSION_CMD:sh}
|
||||
|
||||
# FreeBSD lacks nouveau support (there are official binaries from Nvidia)
|
||||
.if ${OPSYS} != "FreeBSD"
|
||||
# nVidia
|
||||
PLIST.nouveau= yes
|
||||
GALLIUM_DRIVERS+= nouveau
|
||||
.endif
|
||||
|
||||
# classic DRI radeon
|
||||
PLIST.radeon_dri= yes
|
||||
DRI_DRIVERS+= radeon
|
||||
|
||||
# classic DRI r200
|
||||
PLIST.r200= yes
|
||||
DRI_DRIVERS+= r200
|
||||
|
||||
# FreeBSD lacks nouveau support (there are official binaries from Nvidia)
|
||||
.if ${OPSYS} != "FreeBSD"
|
||||
# classic DRI nouveau
|
||||
PLIST.nouveau_dri= yes
|
||||
DRI_DRIVERS+= nouveau
|
||||
.endif
|
||||
.endif # cross platform PCI drivers
|
||||
|
||||
.if ${OPSYS} == "Darwin"
|
||||
CONFIGURE_ARGS+= --with-platforms=x11
|
||||
#.elif ${OPSYS} == "Linux"
|
||||
#.include "../../wip/wayland/buildlink3.mk"
|
||||
#CONFIGURE_ARGS+= --with-platforms=x11,drm,wayland
|
||||
#PLIST.wayland= yes
|
||||
.else
|
||||
CONFIGURE_ARGS+= --with-platforms=x11,drm
|
||||
.endif
|
||||
|
||||
.if !empty(PKG_OPTIONS:Mllvm)
|
||||
# VA-API and VDPAU
|
||||
.if !empty(PKG_OPTIONS:Mvaapi)
|
||||
.include "../../multimedia/libva/available.mk"
|
||||
.if ${VAAPI_AVAILABLE} == "yes"
|
||||
PLIST.vaapi= yes
|
||||
.include "../../multimedia/libva/buildlink3.mk"
|
||||
.endif
|
||||
.endif # vaapi
|
||||
.if !empty(PKG_OPTIONS:Mvdpau)
|
||||
.include "../../multimedia/libvdpau/available.mk"
|
||||
.if ${VDPAU_AVAILABLE} == "yes"
|
||||
PLIST.vdpau= yes
|
||||
.include "../../multimedia/libvdpau/buildlink3.mk"
|
||||
.endif
|
||||
.endif # vdpau
|
||||
|
||||
# XA is useful for accelerating xf86-video-vmware
|
||||
.if !empty(PKG_OPTIONS:Mxa)
|
||||
CONFIGURE_ARGS+= --enable-xa
|
||||
PLIST.xatracker= yes
|
||||
.endif
|
||||
|
||||
# AMD Radeon r300
|
||||
PLIST.r300= yes
|
||||
GALLIUM_DRIVERS+= r300
|
||||
# AMD Canary Islands GPUs
|
||||
PLIST.radeonsi= yes
|
||||
GALLIUM_DRIVERS+= radeonsi
|
||||
CONFIGURE_ARGS+= --enable-llvm
|
||||
CONFIGURE_ARGS+= --enable-llvm-shared-libs
|
||||
|
||||
.if !exists(/usr/include/libelf.h)
|
||||
.include "../../devel/libelf/buildlink3.mk"
|
||||
.endif
|
||||
|
||||
# XXX update libLLVM to use it instead
|
||||
#BUILDLINK_API_DEPENDS.libLLVM+= libLLVM>=5.0
|
||||
.include "../../lang/llvm/buildlink3.mk"
|
||||
|
||||
# BUILDLINK_API_DEPENDS.libLLVM+= libLLVM>=4.0
|
||||
# .include "../../lang/libLLVM/buildlink3.mk"
|
||||
CONFIGURE_ENV+= ac_cv_path_ac_pt_LLVM_CONFIG=${LLVM_CONFIG_PATH}
|
||||
.else # !llvm
|
||||
CONFIGURE_ARGS+= --disable-xa
|
||||
CONFIGURE_ARGS+= --disable-llvm
|
||||
CONFIGURE_ARGS+= --disable-llvm-shared-libs
|
||||
.endif # llvm
|
||||
|
||||
CONFIGURE_ARGS+= --with-gallium-drivers=${GALLIUM_DRIVERS:ts,}
|
||||
CONFIGURE_ARGS+= --with-dri-drivers=${DRI_DRIVERS:ts,}
|
||||
CONFIGURE_ARGS+= --with-vulkan-drivers=${VULKAN_DRIVERS:ts,}
|
||||
|
||||
.else # !dri
|
||||
CONFIGURE_ARGS+= --with-gallium-drivers=
|
||||
CONFIGURE_ARGS+= --with-dri-drivers=
|
||||
CONFIGURE_ARGS+= --with-vulkan-drivers=
|
||||
CONFIGURE_ARGS+= --disable-dri
|
||||
CONFIGURE_ARGS+= --disable-dri3
|
||||
CONFIGURE_ARGS+= --disable-egl
|
||||
CONFIGURE_ARGS+= --disable-gbm
|
||||
CONFIGURE_ARGS+= --disable-gles1
|
||||
CONFIGURE_ARGS+= --disable-gles2
|
||||
CONFIGURE_ARGS+= --enable-xlib-glx
|
||||
CONFIGURE_ARGS+= --with-platforms=x11
|
||||
# XXX configure looks for expat but doesn't actually need it in non-dri case
|
||||
CONFIGURE_ENV+= EXPAT_CFLAGS=" " EXPAT_LIBS=" "
|
||||
.if !empty(PKG_OPTIONS:Mllvm)
|
||||
PKG_FAIL_REASON+= "The llvm PKG_OPTION must also be disabled when dri is disabled"
|
||||
.endif
|
||||
.endif # dri
|
||||
|
||||
.if !empty(PKG_OPTIONS:Mdebug)
|
||||
CONFIGURE_ARGS+= --enable-debug
|
||||
.endif
|
||||
|
||||
.if !empty(PKG_OPTIONS:Mxvmc)
|
||||
.include "../../x11/libXvMC/buildlink3.mk"
|
||||
PLIST.xvmc= yes
|
||||
.endif
|
||||
|
||||
.if !empty(PKG_OPTIONS:Mnoatexit)
|
||||
CPPFLAGS+= -DHAVE_NOATEXIT
|
||||
.endif
|
||||
|
||||
.if !empty(PKG_OPTIONS:Mno_cs_queue)
|
||||
CPPFLAGS+= -DNO_CS_QUEUE
|
||||
.endif
|
||||
|
||||
.if !empty(PKG_OPTIONS:Mrevert_threaded_context)
|
||||
CPPFLAGS+= -DREVERT_THREADED_CONTEXT
|
||||
.endif
|
||||
|
||||
.if !empty(PKG_OPTIONS:Mrevert_copy_clear)
|
||||
CPPFLAGS+= -DREVERT_COPY_CLEAR
|
||||
.endif
|
|
@ -0,0 +1,127 @@
|
|||
$NetBSD: patch-configure.ac,v 1.5 2019/01/20 09:50:28 tnn Exp $
|
||||
|
||||
Don't check for pthread stubs anywhere, as we don't provide it.
|
||||
|
||||
From FreeBSD ports graphics/mesa-dri 18.0.0,
|
||||
DragonFly dports graphics/mesa-dri 17.3.1,
|
||||
files/patch-configure
|
||||
|
||||
For FreeBSD 11.2-RELEASE
|
||||
CXXLD mesa_dri_drivers.la
|
||||
/usr/bin/ld: unrecognized option '--build-id=sha1'
|
||||
|
||||
* But do NOT extend to FreeBSD, instead use binutils ld to link.
|
||||
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 2019-01-17 11:26:22.000000000 +0000
|
||||
+++ configure.ac
|
||||
@@ -726,7 +726,7 @@ dnl
|
||||
dnl OSX linker does not support build-id
|
||||
dnl
|
||||
case "$host_os" in
|
||||
-darwin*)
|
||||
+darwin* | solaris*)
|
||||
LD_BUILD_ID=""
|
||||
;;
|
||||
*)
|
||||
@@ -931,7 +931,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])
|
||||
@@ -941,6 +941,9 @@ esac
|
||||
dnl See if posix_memalign is available
|
||||
AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
|
||||
|
||||
+dnl See if open_memstream is available
|
||||
+AC_CHECK_FUNC([open_memstream], [DEFINES="$DEFINES -DHAVE_OPEN_MEMSTREAM"])
|
||||
+
|
||||
dnl Check for zlib
|
||||
PKG_CHECK_MODULES([ZLIB], [zlib >= $ZLIB_REQUIRED])
|
||||
DEFINES="$DEFINES -DHAVE_ZLIB"
|
||||
@@ -966,7 +969,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*)
|
||||
+*)
|
||||
pthread_stubs_possible="no"
|
||||
;;
|
||||
* )
|
||||
@@ -982,8 +985,12 @@ save_LIBS="$LIBS"
|
||||
LIBS="$PTHREAD_LIBS"
|
||||
AC_MSG_CHECKING(whether pthread_setaffinity_np is supported)
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([[
|
||||
+ #if defined(__DragonFly__) || defined(__FreeBSD__)
|
||||
+ #include <pthread_np.h>
|
||||
+ #else
|
||||
#define _GNU_SOURCE
|
||||
#include <pthread.h>
|
||||
+ #endif
|
||||
int main() {
|
||||
void *a = (void*) &pthread_setaffinity_np;
|
||||
long b = (long) a;
|
||||
@@ -995,7 +1002,10 @@ AC_LINK_IFELSE([AC_LANG_SOURCE([[
|
||||
LIBS="$save_LIBS"
|
||||
|
||||
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],
|
||||
@@ -1278,7 +1288,7 @@ fi
|
||||
AC_SUBST(LIBSENSORS_LIBS)
|
||||
|
||||
case "$host_os" in
|
||||
-linux*)
|
||||
+linux* | freebsd* | dragonfly*)
|
||||
dri3_default=yes
|
||||
;;
|
||||
*)
|
||||
@@ -1908,7 +1918,7 @@ if test x"$enable_dri3" = xyes; then
|
||||
dri3_modifier_modules="xcb-dri3 >= $XCBDRI3_MODIFIERS_REQUIRED xcb-present >= $XCBPRESENT_MODIFIERS_REQUIRED"
|
||||
PKG_CHECK_MODULES([XCB_DRI3_MODIFIERS], [$dri3_modifier_modules], [have_dri3_modifiers=yes], [have_dri3_modifiers=no])
|
||||
|
||||
- if test "x$have_dri3_modifiers" == xyes; then
|
||||
+ if test "x$have_dri3_modifiers" = xyes; then
|
||||
DEFINES="$DEFINES -DHAVE_DRI3_MODIFIERS"
|
||||
fi
|
||||
fi
|
||||
@@ -2505,8 +2515,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)
|
||||
@@ -2941,7 +2949,7 @@ if test "x$enable_llvm" = xyes; then
|
||||
dnl the LLVM library propagated in the Libs.private of the respective .pc
|
||||
dnl file which ensures complete dependency information when statically
|
||||
dnl linking.
|
||||
- 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
|
|
@ -0,0 +1,27 @@
|
|||
$NetBSD: patch-include_GL_internal_dri__interface.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
From FreeBSD ports graphics/mesa-dri 17.2.4.
|
||||
|
||||
GCC on 9.x doesn't allow types to be overwritten, these types are defined
|
||||
in drm.h also, which causes build issues in xorg-server.
|
||||
|
||||
--- include/GL/internal/dri_interface.h.orig 2017-11-20 14:25:47.000000000 +0000
|
||||
+++ include/GL/internal/dri_interface.h
|
||||
@@ -40,6 +40,9 @@
|
||||
#ifndef DRI_INTERFACE_H
|
||||
#define DRI_INTERFACE_H
|
||||
|
||||
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
|
||||
+#include <drm.h>
|
||||
+#else
|
||||
#ifdef HAVE_LIBDRM
|
||||
#include <drm.h>
|
||||
#else
|
||||
@@ -47,6 +50,7 @@ typedef unsigned int drm_context_t;
|
||||
typedef unsigned int drm_drawable_t;
|
||||
typedef struct drm_clip_rect drm_clip_rect_t;
|
||||
#endif
|
||||
+#endif /* __FreeBSD__ || __DragonFly__ */
|
||||
|
||||
#include <stdint.h>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
$NetBSD: patch-src_amd_common_ac__debug.c,v 1.2 2019/01/20 09:50:28 tnn Exp $
|
||||
|
||||
#if'out some debug code on SunOS. There is no open_memstream(3)
|
||||
|
||||
--- src/amd/common/ac_debug.c.orig 2019-01-17 11:26:22.000000000 +0000
|
||||
+++ src/amd/common/ac_debug.c
|
||||
@@ -571,10 +571,12 @@ void ac_parse_ib_chunk(FILE *f, uint32_t
|
||||
|
||||
char *out;
|
||||
size_t outsize;
|
||||
+#if defined(HAVE_OPEN_MEMSTREAM)
|
||||
FILE *memf = open_memstream(&out, &outsize);
|
||||
ib.f = memf;
|
||||
ac_do_parse_ib(memf, &ib);
|
||||
fclose(memf);
|
||||
+#endif
|
||||
|
||||
if (out) {
|
||||
format_ib_output(f, out);
|
|
@ -0,0 +1,23 @@
|
|||
$NetBSD$
|
||||
|
||||
From graphics/mesa-dri: update to 18.3.1
|
||||
|
||||
https://reviews.freebsd.org/D17872
|
||||
|
||||
--- src/amd/vulkan/radv_device.c.orig 2018-12-11 21:13:57.000000000 +0000
|
||||
+++ src/amd/vulkan/radv_device.c
|
||||
@@ -50,6 +50,14 @@
|
||||
#include "util/debug.h"
|
||||
#include "util/mesa-sha1.h"
|
||||
|
||||
+#ifndef CLOCK_MONOTONIC_RAW
|
||||
+# ifdef CLOCK_MONOTONIC_FAST
|
||||
+# define CLOCK_MONOTONIC_RAW CLOCK_MONOTONIC_FAST
|
||||
+# else
|
||||
+# define CLOCK_MONOTONIC_RAW CLOCK_MONOTONIC
|
||||
+# endif
|
||||
+#endif
|
||||
+
|
||||
static int
|
||||
radv_device_get_cache_uuid(enum radeon_family family, void *uuid)
|
||||
{
|
|
@ -0,0 +1,19 @@
|
|||
$NetBSD: patch-src_amd_vulkan_winsys_amdgpu_radv__amdgpu__cs.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
Define ETIME if missing
|
||||
|
||||
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225415
|
||||
FreeBSD Bugzilla: Bug 225415 graphics/mesa-dri: update to 18.0.0
|
||||
|
||||
--- src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c.orig 2018-02-09 02:17:57.000000000 +0000
|
||||
+++ src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
|
||||
@@ -33,6 +33,9 @@
|
||||
#include "radv_amdgpu_bo.h"
|
||||
#include "sid.h"
|
||||
|
||||
+#ifndef ETIME
|
||||
+#define ETIME ETIMEDOUT
|
||||
+#endif
|
||||
|
||||
enum {
|
||||
VIRTUAL_BUFFER_HASH_TABLE_SIZE = 1024
|
|
@ -0,0 +1,25 @@
|
|||
$NetBSD: patch-src_compiler_builtin__type__macros.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
Workaround netbsd headers.
|
||||
|
||||
--- src/compiler/builtin_type_macros.h.orig 2018-09-07 21:18:07.000000000 +0000
|
||||
+++ src/compiler/builtin_type_macros.h
|
||||
@@ -28,6 +28,18 @@
|
||||
* language version or extension might provide them.
|
||||
*/
|
||||
|
||||
+#ifdef __NetBSD__ /* XXX https://mail-index.netbsd.org/tech-userlevel/2018/09/08/msg011381.html */
|
||||
+#undef uint8_t
|
||||
+#undef uint16_t
|
||||
+#undef uint32_t
|
||||
+#undef uint64_t
|
||||
+#undef int8_t
|
||||
+#undef int16_t
|
||||
+#undef int32_t
|
||||
+#undef int64_t
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
DECL_TYPE(error, GL_INVALID_ENUM, GLSL_TYPE_ERROR, 0, 0)
|
||||
DECL_TYPE(void, GL_INVALID_ENUM, GLSL_TYPE_VOID, 0, 0)
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
$NetBSD: patch-src_compiler_glsl_glsl__parser__extras.cpp,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
atexit() is not a good idea in a library; use destructor attribute.
|
||||
|
||||
--- src/compiler/glsl/glsl_parser_extras.cpp.orig 2017-09-25 16:56:18.000000000 +0000
|
||||
+++ src/compiler/glsl/glsl_parser_extras.cpp
|
||||
@@ -2224,7 +2224,11 @@ extern "C" {
|
||||
* programs would be invalid. So this should happen at approximately
|
||||
* program exit.
|
||||
*/
|
||||
+#if defined(HAVE_NOATEXIT)
|
||||
+void __attribute__((__destructor__))
|
||||
+#else
|
||||
void
|
||||
+#endif
|
||||
_mesa_destroy_shader_compiler(void)
|
||||
{
|
||||
_mesa_destroy_shader_compiler_caches();
|
|
@ -0,0 +1,18 @@
|
|||
$NetBSD: patch-src_egl_drivers_dri2_platform__drm.c,v 1.2 2019/01/20 09:50:28 tnn Exp $
|
||||
|
||||
netbsd-5 build fix
|
||||
|
||||
--- src/egl/drivers/dri2/platform_drm.c.orig 2019-01-17 11:26:22.000000000 +0000
|
||||
+++ src/egl/drivers/dri2/platform_drm.c
|
||||
@@ -725,7 +725,11 @@ dri2_initialize_drm(_EGLDriver *drv, _EG
|
||||
}
|
||||
dri2_dpy->own_device = true;
|
||||
} else {
|
||||
+#ifdef F_DUPFD_CLOEXEC
|
||||
dri2_dpy->fd = fcntl(gbm_device_get_fd(gbm), F_DUPFD_CLOEXEC, 3);
|
||||
+#else
|
||||
+ dri2_dpy->fd = -1;
|
||||
+#endif
|
||||
if (dri2_dpy->fd < 0) {
|
||||
err = "DRI2: failed to fcntl() existing gbm device";
|
||||
goto cleanup;
|
|
@ -0,0 +1,60 @@
|
|||
$NetBSD: patch-src_egl_drivers_dri2_platform__x11.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
Provide compat strndup for older Darwin.
|
||||
|
||||
* From FreeBSD ports 18.0.0:
|
||||
work-around for https://bugs.freedesktop.org/show_bug.cgi?id=100627
|
||||
|
||||
Mon Apr 10 19:14:48 2017 UTC
|
||||
DRI3 remains enabled at compile time, but it is now disabled at
|
||||
runtime for stock FreeBSD. Set LIBGL_DRI3_ENABLE in the
|
||||
environment to enable DRI3.
|
||||
This change was made to work around a problem in libEGL,
|
||||
which fails to fall back to using DRI2 when run on a system
|
||||
without DRI3 support.
|
||||
|
||||
* Added logging statement to note dri3 initialization being invoked.
|
||||
|
||||
--- src/egl/drivers/dri2/platform_x11.c.orig 2018-02-09 02:17:57.000000000 +0000
|
||||
+++ src/egl/drivers/dri2/platform_x11.c
|
||||
@@ -608,6 +608,23 @@ dri2_x11_local_authenticate(struct dri2_
|
||||
return EGL_TRUE;
|
||||
}
|
||||
|
||||
+#if (defined(__APPLE__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__-0 < 1070)
|
||||
+static char *
|
||||
+strndup(const char *s, int length)
|
||||
+{
|
||||
+ char *d;
|
||||
+
|
||||
+ d = malloc(length + 1);
|
||||
+ if (d == NULL)
|
||||
+ return NULL;
|
||||
+
|
||||
+ memcpy(d, s, length);
|
||||
+ d[length] = '\0';
|
||||
+
|
||||
+ return d;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
static EGLBoolean
|
||||
dri2_x11_connect(struct dri2_egl_display *dri2_dpy)
|
||||
{
|
||||
@@ -1466,8 +1483,15 @@ dri2_initialize_x11(_EGLDriver *drv, _EG
|
||||
|
||||
if (!disp->Options.ForceSoftware) {
|
||||
#ifdef HAVE_DRI3
|
||||
- if (!env_var_as_boolean("LIBGL_DRI3_DISABLE", false))
|
||||
+#if ((defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) && !defined(__DRM_NEXT__)) || defined(__DragonFly__) || defined(__NetBSD__)
|
||||
+ if (env_var_as_boolean("LIBGL_DRI3_ENABLE", false))
|
||||
+#endif
|
||||
+ if (!env_var_as_boolean("LIBGL_DRI3_DISABLE", false)) {
|
||||
+ _eglLog(_EGL_INFO, "platform_x11.c: calling dri2_initialize_x11_dri3\n");
|
||||
initialized = dri2_initialize_x11_dri3(drv, disp);
|
||||
+ if (initialized)
|
||||
+ _eglLog(_EGL_INFO, "platform_x11.c: initialized by dri2_initialize_x11_dri3\n");
|
||||
+ }
|
||||
#endif
|
||||
|
||||
if (!initialized)
|
|
@ -0,0 +1,53 @@
|
|||
$NetBSD: patch-src_egl_main_eglglobals.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
atexit() is not a good idea in shared libraries.
|
||||
|
||||
FreeBSD reported atexit bug for 10.6:
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=91869
|
||||
|
||||
--- src/egl/main/eglglobals.c.orig 2018-01-18 21:30:28.000000000 +0000
|
||||
+++ src/egl/main/eglglobals.c
|
||||
@@ -85,11 +85,22 @@ struct _egl_global _eglGlobal =
|
||||
.debugTypesEnabled = _EGL_DEBUG_BIT_CRITICAL | _EGL_DEBUG_BIT_ERROR,
|
||||
};
|
||||
|
||||
+#if defined(HAVE_NOATEXIT)
|
||||
+static EGLBoolean registered = EGL_FALSE;
|
||||
|
||||
+static void __attribute__((__destructor__))
|
||||
+#else
|
||||
static void
|
||||
+#endif
|
||||
_eglAtExit(void)
|
||||
{
|
||||
EGLint i;
|
||||
+
|
||||
+#if defined(HAVE_NOATEXIT)
|
||||
+ if (!registered)
|
||||
+ return;
|
||||
+#endif
|
||||
+
|
||||
for (i = _eglGlobal.NumAtExitCalls - 1; i >= 0; i--)
|
||||
_eglGlobal.AtExitCalls[i]();
|
||||
}
|
||||
@@ -99,14 +110,20 @@ void
|
||||
_eglAddAtExitCall(void (*func)(void))
|
||||
{
|
||||
if (func) {
|
||||
+#if !defined(HAVE_NOATEXIT)
|
||||
static EGLBoolean registered = EGL_FALSE;
|
||||
+#endif
|
||||
|
||||
mtx_lock(_eglGlobal.Mutex);
|
||||
|
||||
+#if defined(HAVE_NOATEXIT)
|
||||
+ registered = EGL_TRUE;
|
||||
+#else
|
||||
if (!registered) {
|
||||
atexit(_eglAtExit);
|
||||
registered = EGL_TRUE;
|
||||
}
|
||||
+#endif
|
||||
|
||||
assert(_eglGlobal.NumAtExitCalls < ARRAY_SIZE(_eglGlobal.AtExitCalls));
|
||||
_eglGlobal.AtExitCalls[_eglGlobal.NumAtExitCalls++] = func;
|
|
@ -0,0 +1,50 @@
|
|||
$NetBSD: patch-src_gallium_auxiliary_drivers_trace_tr__dump.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
atexit() is not a good idea in shared libraries.
|
||||
|
||||
FreeBSD reported atexit bug for 10.6:
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=91869
|
||||
|
||||
--- src/gallium/auxiliary/driver_trace/tr_dump.c.orig 2018-09-07 21:18:07.000000000 +0000
|
||||
+++ src/gallium/auxiliary/driver_trace/tr_dump.c
|
||||
@@ -63,7 +63,6 @@ static mtx_t call_mutex = _MTX_INITIALIZ
|
||||
static long unsigned call_no = 0;
|
||||
static boolean dumping = FALSE;
|
||||
|
||||
-
|
||||
static inline void
|
||||
trace_dump_write(const char *buf, size_t size)
|
||||
{
|
||||
@@ -171,9 +170,20 @@ trace_dump_trace_flush(void)
|
||||
}
|
||||
}
|
||||
|
||||
+#if defined(HAVE_NOATEXIT)
|
||||
+static boolean trace_dump_has_begun = FALSE;
|
||||
+
|
||||
+static void __attribute__((__destructor__))
|
||||
+#else
|
||||
static void
|
||||
+#endif
|
||||
trace_dump_trace_close(void)
|
||||
{
|
||||
+#if defined(HAVE_NOATEXIT)
|
||||
+ if (!trace_dump_has_begun)
|
||||
+ return;
|
||||
+#endif
|
||||
+
|
||||
if (stream) {
|
||||
trace_dump_writes("</trace>\n");
|
||||
if (close_stream) {
|
||||
@@ -233,7 +243,11 @@ trace_dump_trace_begin(void)
|
||||
* screen multiple times, so we only write </trace> tag and close at exit
|
||||
* time.
|
||||
*/
|
||||
+#if defined(HAVE_NOATEXIT)
|
||||
+ trace_dump_has_begun = TRUE;
|
||||
+#else
|
||||
atexit(trace_dump_trace_close);
|
||||
+#endif
|
||||
}
|
||||
|
||||
return TRUE;
|
|
@ -0,0 +1,127 @@
|
|||
$NetBSD: patch-src_gallium_auxiliary_pipe-loader_pipe__loader__drm.c,v 1.2 2019/01/10 22:30:11 tnn Exp $
|
||||
|
||||
* From FreeBSD ports / DragonFly dports graphics/mesa-dri
|
||||
|
||||
Revert the following commit.
|
||||
|
||||
FreeBSD and DragonFly don't have the required render nodes.
|
||||
|
||||
-------
|
||||
|
||||
From 69a1b9959e59653da262185c4e2cf57d24939b19 Mon Sep 17 00:00:00 2001
|
||||
Date: Mon, 29 Jun 2015 12:36:45 +0100
|
||||
Subject: pipe-loader: drop support for non-render node devices
|
||||
|
||||
Render nodes have been around for quite some time. Removing support via
|
||||
the master/primary node allows us to clean up the conditional
|
||||
compilation and simplify the build greatly.
|
||||
|
||||
For example currently we the pipe-loader, which explicitly links against
|
||||
xcb and friends (for X auth) if found at compile-time. That
|
||||
would cause problems as one will be forced to use X/xcb, even if it's a
|
||||
headless system that is used for opencl.
|
||||
|
||||
v2: Clarify the linking topic in the commit message.
|
||||
|
||||
* Extended for NetBSD.
|
||||
|
||||
--- src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c.orig 2018-12-11 21:13:57.000000000 +0000
|
||||
+++ src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
|
||||
@@ -229,6 +229,16 @@ pipe_loader_drm_probe_fd(struct pipe_loa
|
||||
return ret;
|
||||
}
|
||||
|
||||
+#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)
|
||||
{
|
||||
@@ -241,7 +251,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++) {
|
||||
@@ -256,6 +278,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 {
|
||||
@@ -265,6 +292,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;
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
$NetBSD: patch-src_gallium_auxiliary_util_u__format__tests.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
On old NetBSD, NAN in math.h is __nanf.__val. Which is not constant.
|
||||
|
||||
--- src/gallium/auxiliary/util/u_format_tests.c.orig 2019-01-04 23:59:59.000000000 +0000
|
||||
+++ src/gallium/auxiliary/util/u_format_tests.c
|
||||
@@ -28,6 +28,10 @@
|
||||
|
||||
#include <math.h>
|
||||
#include <float.h>
|
||||
+#if defined(__NetBSD__) && __NetBSD_Version__ < 600000000
|
||||
+#undef NAN
|
||||
+#define NAN __builtin_nanf("")
|
||||
+#endif
|
||||
|
||||
#include "pipe/p_config.h"
|
||||
#include "util/u_memory.h"
|
|
@ -0,0 +1,34 @@
|
|||
$NetBSD$
|
||||
|
||||
From FreeBSD ports graphics/mesa-dri 18.1.4.
|
||||
|
||||
- Without sysinfo() fall back to sysconf()
|
||||
|
||||
--- src/gallium/drivers/freedreno/freedreno_screen.c.orig 2018-07-13 18:41:27.000000000 +0000
|
||||
+++ src/gallium/drivers/freedreno/freedreno_screen.c
|
||||
@@ -43,7 +43,11 @@
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
+#ifdef __GLIBC__
|
||||
#include <sys/sysinfo.h>
|
||||
+#else
|
||||
+#include <unistd.h>
|
||||
+#endif
|
||||
|
||||
#include "freedreno_screen.h"
|
||||
#include "freedreno_resource.h"
|
||||
@@ -837,9 +841,13 @@ fd_screen_create(struct fd_device *dev)
|
||||
screen->priority_mask = (1 << val) - 1;
|
||||
}
|
||||
|
||||
+#ifdef __GLIBC__
|
||||
struct sysinfo si;
|
||||
sysinfo(&si);
|
||||
screen->ram_size = si.totalram;
|
||||
+#else
|
||||
+ screen->ram_size = sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGE_SIZE);
|
||||
+#endif
|
||||
|
||||
DBG("Pipe Info:");
|
||||
DBG(" GPU-id: %d", screen->gpu_id);
|
|
@ -0,0 +1,18 @@
|
|||
$NetBSD: patch-src_gallium_drivers_nouveau_nouveau__vp3__video.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
Fix build on platforms without close-on-exec.
|
||||
|
||||
--- src/gallium/drivers/nouveau/nouveau_vp3_video.c.orig 2017-02-13 11:55:49.000000000 +0000
|
||||
+++ src/gallium/drivers/nouveau/nouveau_vp3_video.c
|
||||
@@ -294,7 +294,11 @@ nouveau_vp3_load_firmware(struct nouveau
|
||||
if (nouveau_bo_map(dec->fw_bo, NOUVEAU_BO_WR, dec->client))
|
||||
return 1;
|
||||
|
||||
+#ifdef O_CLOEXEC
|
||||
fd = open(path, O_RDONLY | O_CLOEXEC);
|
||||
+#else
|
||||
+ fd = open(path, O_RDONLY);
|
||||
+#endif
|
||||
if (fd < 0) {
|
||||
fprintf(stderr, "opening firmware file %s failed: %m\n", path);
|
||||
return 1;
|
|
@ -0,0 +1,18 @@
|
|||
$NetBSD: patch-src_gallium_drivers_nouveau_nv50_nv84__video.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
Fix build on platforms without close-on-exec.
|
||||
|
||||
--- src/gallium/drivers/nouveau/nv50/nv84_video.c.orig 2015-03-21 00:51:18.000000000 +0000
|
||||
+++ src/gallium/drivers/nouveau/nv50/nv84_video.c
|
||||
@@ -34,7 +34,11 @@
|
||||
static int
|
||||
nv84_copy_firmware(const char *path, void *dest, ssize_t len)
|
||||
{
|
||||
+#ifdef O_CLOEXEC
|
||||
int fd = open(path, O_RDONLY | O_CLOEXEC);
|
||||
+#else
|
||||
+ int fd = open(path, O_RDONLY);
|
||||
+#endif
|
||||
ssize_t r;
|
||||
if (fd < 0) {
|
||||
fprintf(stderr, "opening firmware file %s failed: %m\n", path);
|
|
@ -0,0 +1,181 @@
|
|||
$NetBSD$
|
||||
|
||||
2018-10-16 radeonsi: use compute shaders for clear_buffer & copy_buffer
|
||||
Commit: 9b331e462e5021d994859756d46cd2519d9c9c6e
|
||||
|
||||
https://cgit.freedesktop.org/mesa/mesa/commit/?id=9b331e462e5021d994859756d46cd2519d9c9c6e
|
||||
|
||||
--- src/gallium/drivers/radeonsi/si_compute_blit.c.orig 2019-02-02 23:08:03.000000000 +0000
|
||||
+++ src/gallium/drivers/radeonsi/si_compute_blit.c
|
||||
@@ -33,10 +33,17 @@ static enum si_cache_policy get_cache_po
|
||||
enum si_coherency coher,
|
||||
uint64_t size)
|
||||
{
|
||||
+#if defined(REVERT_COPY_CLEAR)
|
||||
+ if ((sctx->chip_class >= GFX9 && coher == SI_COHERENCY_CB_META) ||
|
||||
+ (sctx->chip_class >= CIK && coher == SI_COHERENCY_SHADER))
|
||||
+ return L2_LRU;
|
||||
+
|
||||
+#else
|
||||
if ((sctx->chip_class >= GFX9 && (coher == SI_COHERENCY_CB_META ||
|
||||
coher == SI_COHERENCY_CP)) ||
|
||||
(sctx->chip_class >= CIK && coher == SI_COHERENCY_SHADER))
|
||||
return size <= 256 * 1024 ? L2_LRU : L2_STREAM;
|
||||
+#endif
|
||||
|
||||
return L2_BYPASS;
|
||||
}
|
||||
@@ -179,6 +186,52 @@ void si_clear_buffer(struct si_context *
|
||||
uint64_t offset, uint64_t size, uint32_t *clear_value,
|
||||
uint32_t clear_value_size, enum si_coherency coher)
|
||||
{
|
||||
+#if defined(REVERT_COPY_CLEAR)
|
||||
+
|
||||
+/* Recommended maximum sizes for optimal performance.
|
||||
+ * Fall back to compute or SDMA if the size is greater.
|
||||
+ */
|
||||
+#define CP_DMA_COPY_PERF_THRESHOLD (64 * 1024) /* copied from Vulkan */
|
||||
+#define CP_DMA_CLEAR_PERF_THRESHOLD (32 * 1024) /* guess (clear is much slower) */
|
||||
+
|
||||
+ struct radeon_winsys *ws = sctx->ws;
|
||||
+ struct si_resource *rdst = si_resource(dst);
|
||||
+ enum si_cache_policy cache_policy = get_cache_policy(sctx, coher, size);
|
||||
+
|
||||
+ if (!size)
|
||||
+ return;
|
||||
+
|
||||
+ uint64_t aligned_size = size & ~3ull;
|
||||
+
|
||||
+ /* dma_clear_buffer can use clear_buffer on failure. Make sure that
|
||||
+ * doesn't happen. We don't want an infinite recursion: */
|
||||
+ if (sctx->dma_cs &&
|
||||
+ !(dst->flags & PIPE_RESOURCE_FLAG_SPARSE) &&
|
||||
+ (offset % 4 == 0) &&
|
||||
+ /* CP DMA is very slow. Always use SDMA for big clears. This
|
||||
+ * alone improves DeusEx:MD performance by 70%. */
|
||||
+ (size > CP_DMA_CLEAR_PERF_THRESHOLD ||
|
||||
+ /* Buffers not used by the GFX IB yet will be cleared by SDMA.
|
||||
+ * This happens to move most buffer clears to SDMA, including
|
||||
+ * DCC and CMASK clears, because pipe->clear clears them before
|
||||
+ * si_emit_framebuffer_state (in a draw call) adds them.
|
||||
+ * For example, DeusEx:MD has 21 buffer clears per frame and all
|
||||
+ * of them are moved to SDMA thanks to this. */
|
||||
+ !ws->cs_is_buffer_referenced(sctx->gfx_cs, rdst->buf,
|
||||
+ RADEON_USAGE_READWRITE))) {
|
||||
+ si_sdma_clear_buffer(sctx, dst, offset, aligned_size, *clear_value);
|
||||
+
|
||||
+ offset += aligned_size;
|
||||
+ size -= aligned_size;
|
||||
+ } else if (aligned_size >= 4) {
|
||||
+ si_cp_dma_clear_buffer(sctx, sctx->gfx_cs, dst, offset,
|
||||
+ aligned_size, *clear_value, 0, coher,
|
||||
+ get_cache_policy(sctx, coher, size));
|
||||
+
|
||||
+ offset += aligned_size;
|
||||
+ size -= aligned_size;
|
||||
+ }
|
||||
+#else
|
||||
if (!size)
|
||||
return;
|
||||
|
||||
@@ -257,6 +310,7 @@ void si_clear_buffer(struct si_context *
|
||||
offset += aligned_size;
|
||||
size -= aligned_size;
|
||||
}
|
||||
+#endif
|
||||
|
||||
/* Handle non-dword alignment. */
|
||||
if (size) {
|
||||
@@ -274,6 +328,58 @@ static void si_pipe_clear_buffer(struct
|
||||
const void *clear_value,
|
||||
int clear_value_size)
|
||||
{
|
||||
+#if defined(REVERT_COPY_CLEAR)
|
||||
+ struct si_context *sctx = (struct si_context*)ctx;
|
||||
+ uint32_t dword_value;
|
||||
+
|
||||
+ assert(offset % clear_value_size == 0);
|
||||
+ assert(size % clear_value_size == 0);
|
||||
+
|
||||
+ if (clear_value_size > 4) {
|
||||
+ bool clear_dword_duplicated = true;
|
||||
+
|
||||
+ /* See if we can lower large fills to dword fills. */
|
||||
+ for (unsigned i = 1; i < clear_value_size / 4; i++)
|
||||
+ if (((uint32_t *)clear_value)[0] != ((uint32_t*)clear_value)[i]) {
|
||||
+ clear_dword_duplicated = false;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (!clear_dword_duplicated) {
|
||||
+ /* Use transform feedback for 64-bit, 96-bit, and
|
||||
+ * 128-bit fills.
|
||||
+ */
|
||||
+ union pipe_color_union streamout_clear_value;
|
||||
+
|
||||
+ memcpy(&streamout_clear_value, clear_value, clear_value_size);
|
||||
+ si_blitter_begin(sctx, SI_DISABLE_RENDER_COND);
|
||||
+ util_blitter_clear_buffer(sctx->blitter, dst, offset,
|
||||
+ size, clear_value_size / 4,
|
||||
+ &streamout_clear_value);
|
||||
+ si_blitter_end(sctx);
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* Expand the clear value to a dword. */
|
||||
+ switch (clear_value_size) {
|
||||
+ case 1:
|
||||
+ dword_value = *(uint8_t*)clear_value;
|
||||
+ dword_value |= (dword_value << 8) |
|
||||
+ (dword_value << 16) |
|
||||
+ (dword_value << 24);
|
||||
+ break;
|
||||
+ case 2:
|
||||
+ dword_value = *(uint16_t*)clear_value;
|
||||
+ dword_value |= dword_value << 16;
|
||||
+ break;
|
||||
+ default:
|
||||
+ dword_value = *(uint32_t*)clear_value;
|
||||
+ }
|
||||
+
|
||||
+ si_clear_buffer(sctx, dst, offset, size, &dword_value,
|
||||
+ clear_value_size, SI_COHERENCY_SHADER);
|
||||
+#else
|
||||
enum si_coherency coher;
|
||||
|
||||
if (dst->flags & SI_RESOURCE_FLAG_SO_FILLED_SIZE)
|
||||
@@ -283,6 +389,7 @@ static void si_pipe_clear_buffer(struct
|
||||
|
||||
si_clear_buffer((struct si_context*)ctx, dst, offset, size, (uint32_t*)clear_value,
|
||||
clear_value_size, coher);
|
||||
+#endif
|
||||
}
|
||||
|
||||
void si_copy_buffer(struct si_context *sctx,
|
||||
@@ -295,6 +402,17 @@ void si_copy_buffer(struct si_context *s
|
||||
enum si_coherency coher = SI_COHERENCY_SHADER;
|
||||
enum si_cache_policy cache_policy = get_cache_policy(sctx, coher, size);
|
||||
|
||||
+#if defined(REVERT_COPY_CLEAR)
|
||||
+ si_cp_dma_copy_buffer(sctx, dst, src, dst_offset, src_offset, size,
|
||||
+ 0, coher, cache_policy);
|
||||
+
|
||||
+ if (cache_policy != L2_BYPASS)
|
||||
+ si_resource(dst)->TC_L2_dirty = true;
|
||||
+
|
||||
+ /* If it's not a prefetch... */
|
||||
+ if (dst_offset != src_offset)
|
||||
+ sctx->num_cp_dma_calls++;
|
||||
+#else
|
||||
/* Only use compute for VRAM copies on dGPUs. */
|
||||
if (sctx->screen->info.has_dedicated_vram &&
|
||||
si_resource(dst)->domains & RADEON_DOMAIN_VRAM &&
|
||||
@@ -307,6 +425,7 @@ void si_copy_buffer(struct si_context *s
|
||||
si_cp_dma_copy_buffer(sctx, dst, src, dst_offset, src_offset, size,
|
||||
0, coher, cache_policy);
|
||||
}
|
||||
+#endif
|
||||
}
|
||||
|
||||
void si_compute_copy_image(struct si_context *sctx,
|
|
@ -0,0 +1,93 @@
|
|||
$NetBSD$
|
||||
|
||||
Option to revert:
|
||||
|
||||
2017-05-15 radeonsi: enable threaded_context
|
||||
Commit: 1c8f7d3be6ffb3567041f1e11a037fa7e75e4c28
|
||||
|
||||
https://cgit.freedesktop.org/mesa/mesa/commit/?id=1c8f7d3be6ffb3567041f1e11a037fa7e75e4c28
|
||||
|
||||
2018-10-16 radeonsi: use compute shaders for clear_buffer & copy_buffer
|
||||
Commit: 9b331e462e5021d994859756d46cd2519d9c9c6e
|
||||
|
||||
https://cgit.freedesktop.org/mesa/mesa/commit/?id=9b331e462e5021d994859756d46cd2519d9c9c6e
|
||||
|
||||
--- src/gallium/drivers/radeonsi/si_pipe.c.orig 2019-02-02 23:08:03.000000000 +0000
|
||||
+++ src/gallium/drivers/radeonsi/si_pipe.c
|
||||
@@ -197,10 +197,12 @@ static void si_destroy_context(struct pi
|
||||
sctx->b.delete_vs_state(&sctx->b, sctx->vs_blit_color_layered);
|
||||
if (sctx->vs_blit_texcoord)
|
||||
sctx->b.delete_vs_state(&sctx->b, sctx->vs_blit_texcoord);
|
||||
+#if !defined(REVERT_COPY_CLEAR)
|
||||
if (sctx->cs_clear_buffer)
|
||||
sctx->b.delete_compute_state(&sctx->b, sctx->cs_clear_buffer);
|
||||
if (sctx->cs_copy_buffer)
|
||||
sctx->b.delete_compute_state(&sctx->b, sctx->cs_copy_buffer);
|
||||
+#endif
|
||||
if (sctx->cs_copy_image)
|
||||
sctx->b.delete_compute_state(&sctx->b, sctx->cs_copy_image);
|
||||
if (sctx->cs_copy_image_1d_array)
|
||||
@@ -373,7 +375,11 @@ static void si_set_context_param(struct
|
||||
}
|
||||
|
||||
static struct pipe_context *si_create_context(struct pipe_screen *screen,
|
||||
+#if defined(REVERT_THREADED_CONTEXT)
|
||||
+ void *priv, unsigned flags)
|
||||
+#else
|
||||
unsigned flags)
|
||||
+#endif
|
||||
{
|
||||
struct si_context *sctx = CALLOC_STRUCT(si_context);
|
||||
struct si_screen* sscreen = (struct si_screen *)screen;
|
||||
@@ -388,7 +394,11 @@ static struct pipe_context *si_create_co
|
||||
sscreen->record_llvm_ir = true; /* racy but not critical */
|
||||
|
||||
sctx->b.screen = screen; /* this must be set first */
|
||||
+#if defined(REVERT_THREADED_CONTEXT)
|
||||
+ sctx->b.priv = priv;
|
||||
+#else
|
||||
sctx->b.priv = NULL;
|
||||
+#endif
|
||||
sctx->b.destroy = si_destroy_context;
|
||||
sctx->b.emit_string_marker = si_emit_string_marker;
|
||||
sctx->b.set_debug_callback = si_set_debug_callback;
|
||||
@@ -622,6 +632,7 @@ fail:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+#if !defined(REVERT_THREADED_CONTEXT)
|
||||
static struct pipe_context *si_pipe_create_context(struct pipe_screen *screen,
|
||||
void *priv, unsigned flags)
|
||||
{
|
||||
@@ -652,6 +663,7 @@ static struct pipe_context *si_pipe_crea
|
||||
sscreen->info.drm_major >= 3 ? si_create_fence : NULL,
|
||||
&((struct si_context*)ctx)->tc);
|
||||
}
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* pipe_screen
|
||||
@@ -847,7 +859,11 @@ struct pipe_screen *radeonsi_screen_crea
|
||||
debug_options, 0);
|
||||
|
||||
/* Set functions first. */
|
||||
+#if defined(REVERT_THREADED_CONTEXT)
|
||||
+ sscreen->b.context_create = si_create_context;
|
||||
+#else
|
||||
sscreen->b.context_create = si_pipe_create_context;
|
||||
+#endif
|
||||
sscreen->b.destroy = si_destroy_screen;
|
||||
|
||||
si_init_screen_get_functions(sscreen);
|
||||
@@ -1116,7 +1132,11 @@ struct pipe_screen *radeonsi_screen_crea
|
||||
si_init_compiler(sscreen, &sscreen->compiler_lowp[i]);
|
||||
|
||||
/* Create the auxiliary context. This must be done last. */
|
||||
+#if defined(REVERT_THREADED_CONTEXT)
|
||||
+ sscreen->aux_context = sscreen->b.context_create(&sscreen->b, NULL, 0);
|
||||
+#else
|
||||
sscreen->aux_context = si_create_context(&sscreen->b, 0);
|
||||
+#endif
|
||||
|
||||
if (sscreen->debug_flags & DBG(TEST_DMA))
|
||||
si_test_dma(sscreen);
|
|
@ -0,0 +1,21 @@
|
|||
$NetBSD: patch-src_gallium_drivers_radeonsi_si__state__shaders.c,v 1.3 2019/01/20 09:50:28 tnn Exp $
|
||||
|
||||
#if'out some debug code on SunOS. There is no open_memstream(3)
|
||||
|
||||
--- src/gallium/drivers/radeonsi/si_state_shaders.c.orig 2019-01-17 11:26:22.000000000 +0000
|
||||
+++ src/gallium/drivers/radeonsi/si_state_shaders.c
|
||||
@@ -1721,12 +1721,14 @@ static void si_build_shader_variant(stru
|
||||
}
|
||||
|
||||
if (shader->compiler_ctx_state.is_debug_context) {
|
||||
+#if defined(HAVE_OPEN_MEMSTREAM)
|
||||
FILE *f = open_memstream(&shader->shader_log,
|
||||
&shader->shader_log_size);
|
||||
if (f) {
|
||||
si_shader_dump(sscreen, shader, NULL, sel->type, f, false);
|
||||
fclose(f);
|
||||
}
|
||||
+#endif
|
||||
}
|
||||
|
||||
si_shader_init_pm4_state(sscreen, shader);
|
|
@ -0,0 +1,18 @@
|
|||
$NetBSD: patch-src_gallium_drivers_vc4_vc4__bufmgr.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
Patch from FreeBSD ports graphics/mesa-dri 17.1.0
|
||||
|
||||
# define ETIME as ETIMEOUT same as in intel driver
|
||||
|
||||
--- src/gallium/drivers/vc4/vc4_bufmgr.c.orig 2017-05-25 07:13:13.000000000 +0000
|
||||
+++ src/gallium/drivers/vc4/vc4_bufmgr.c
|
||||
@@ -27,6 +27,9 @@
|
||||
#include <fcntl.h>
|
||||
#include <xf86drm.h>
|
||||
#include <xf86drmMode.h>
|
||||
+#ifndef ETIME
|
||||
+#define ETIME ETIMEDOUT
|
||||
+#endif
|
||||
|
||||
#include "util/u_hash_table.h"
|
||||
#include "util/u_memory.h"
|
|
@ -0,0 +1,31 @@
|
|||
$NetBSD: patch-src_gallium_include_pipe_p__config.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
* Patches for Sparc from FreeBSD ports for mesa-dri 17.2.3.
|
||||
|
||||
* Definitions for DragonFly already in upstream source.
|
||||
|
||||
--- src/gallium/include/pipe/p_config.h.orig 2017-10-19 12:23:53.000000000 +0000
|
||||
+++ src/gallium/include/pipe/p_config.h
|
||||
@@ -77,6 +77,12 @@
|
||||
#define PIPE_CC_ICL
|
||||
#endif
|
||||
|
||||
+#if defined(__sparc__) || defined(__sparc64__)
|
||||
+#define PIPE_ARCH_SPARC
|
||||
+#if defined(__sparc64__)
|
||||
+#define PIPE_ARCH_SPARC_64
|
||||
+#endif
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* Processor architecture
|
||||
@@ -131,7 +137,8 @@
|
||||
|
||||
#if defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64) || defined(PIPE_ARCH_ARM) || defined(PIPE_ARCH_AARCH64)
|
||||
#define PIPE_ARCH_LITTLE_ENDIAN
|
||||
-#elif defined(PIPE_ARCH_PPC) || defined(PIPE_ARCH_PPC_64) || defined(PIPE_ARCH_S390)
|
||||
+#elif defined(PIPE_ARCH_PPC) || defined(PIPE_ARCH_PPC_64) || defined(PIPE_ARCH_S390) || defined(PIPE_ARCH_SPARC) || defined(PIPE_ARCH_SPARC_64)
|
||||
+
|
||||
#define PIPE_ARCH_BIG_ENDIAN
|
||||
#endif
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
$NetBSD: patch-src_gallium_state__trackers_clover_llvm_invocation.cpp,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
Patch from FreeBSD ports graphics/mesa-dri 17.1.0
|
||||
|
||||
# fix errors like the following
|
||||
#
|
||||
# llvm/invocation.cpp:(.text+0x1275): undefined reference to `std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::c_str()
|
||||
const'
|
||||
# /usr/bin/ld: ../../../../src/gallium/state_trackers/clover/.libs/libclover.a(libclllvm_la-invocation.o): relocation R_X86_64_PC32 against `_ZNKSt3__112bas
|
||||
ic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE5c_strEv' can not be used when making a shared object; recompile with -fPIC
|
||||
# /usr/bin/ld: final link failed: Bad value
|
||||
#
|
||||
|
||||
--- src/gallium/state_trackers/clover/llvm/invocation.cpp.orig 2018-09-07 21:18:07.000000000 +0000
|
||||
+++ src/gallium/state_trackers/clover/llvm/invocation.cpp
|
||||
@@ -181,6 +181,10 @@ namespace {
|
||||
return get_lang_standard_from_version_str(device_version);
|
||||
}
|
||||
|
||||
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
|
||||
+ const char* cstr(const std::string& str) { return str.c_str(); }
|
||||
+#endif
|
||||
+
|
||||
std::unique_ptr<clang::CompilerInstance>
|
||||
create_compiler_instance(const device &dev,
|
||||
const std::vector<std::string> &opts,
|
||||
@@ -193,8 +197,13 @@ namespace {
|
||||
// Parse the compiler options. A file name should be present at the end
|
||||
// and must have the .cl extension in order for the CompilerInvocation
|
||||
// class to recognize it as an OpenCL source file.
|
||||
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
|
||||
+ std::vector<const char *> copts(opts.size());
|
||||
+ std::transform(opts.begin(), opts.end(), copts.begin(), cstr);
|
||||
+#else
|
||||
const std::vector<const char *> copts =
|
||||
map(std::mem_fn(&std::string::c_str), opts);
|
||||
+#endif
|
||||
|
||||
const target &target = dev.ir_target();
|
||||
const std::string &device_clc_version = dev.device_clc_version();
|
|
@ -0,0 +1,21 @@
|
|||
$NetBSD: patch-src_gallium_state__trackers_clover_llvm_metadata.hpp,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
From FreeBSD ports graphics/libGL mesa 13.0.5
|
||||
|
||||
# Fix error: no matching constructor for initialization of 'std::vector<const ::llvm::MDNode *>'
|
||||
#
|
||||
|
||||
--- src/gallium/state_trackers/clover/llvm/metadata.hpp.orig 2017-02-13 11:55:49.000000000 +0000
|
||||
+++ src/gallium/state_trackers/clover/llvm/metadata.hpp
|
||||
@@ -42,7 +42,11 @@ namespace clover {
|
||||
get_kernel_nodes(const ::llvm::Module &mod) {
|
||||
if (const ::llvm::NamedMDNode *n =
|
||||
mod.getNamedMetadata("opencl.kernels"))
|
||||
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
|
||||
+ return { n->getOperand(0), n->getOperand(n->getNumOperands()) };
|
||||
+#else
|
||||
return { n->op_begin(), n->op_end() };
|
||||
+#endif
|
||||
else
|
||||
return {};
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
$NetBSD: patch-src_gallium_state__trackers_clover_util_range.hpp,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
From FreeBSD ports for mesa 17.1.10:
|
||||
|
||||
From b95533b981af9a6687b41418e7cc2a5652fc2bdb Mon Sep 17 00:00:00 2001
|
||||
Date: Fri, 7 Mar 2014 15:16:08 +0100
|
||||
Subject: [PATCH 3/3] Work around for clang 3.4 which fails to build Clover
|
||||
|
||||
See:
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=74098#c3
|
||||
|
||||
--- src/gallium/state_trackers/clover/util/range.hpp.orig 2017-09-25 16:56:19.000000000 +0000
|
||||
+++ src/gallium/state_trackers/clover/util/range.hpp
|
||||
@@ -362,6 +362,14 @@ namespace clover {
|
||||
return { i, i + n };
|
||||
}
|
||||
|
||||
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
|
||||
+ namespace detail {
|
||||
+ template<typename T>
|
||||
+ using fixup_function_type =
|
||||
+ typename std::conditional<std::is_function<T>::value, T &, T>::type;
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
///
|
||||
/// Create a range by transforming the contents of a number of
|
||||
/// source ranges \a rs element-wise using a provided functor \a f.
|
||||
@@ -369,7 +377,11 @@ namespace clover {
|
||||
/// \sa adaptor_range.
|
||||
///
|
||||
template<typename F, typename... Rs>
|
||||
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
|
||||
+ adaptor_range<detail::fixup_function_type<F>, Rs...>
|
||||
+#else
|
||||
adaptor_range<F, Rs...>
|
||||
+#endif
|
||||
map(F &&f, Rs &&... rs) {
|
||||
return { std::forward<F>(f), std::forward<Rs>(rs)... };
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
$NetBSD: patch-src_gallium_winsys_radeon_drm_radeon__drm__winsys.c,v 1.1 2015/04/25 11:19:18 tnn Exp $
|
||||
|
||||
Don't create pipe thread on NetBSD. It triggers some kernel bug.
|
||||
kern/49838.
|
||||
|
||||
--- src/gallium/winsys/radeon/drm/radeon_drm_winsys.c.orig 2018-07-06 23:20:10.000000000 +0000
|
||||
+++ src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
|
||||
@@ -906,8 +906,10 @@ radeon_drm_winsys_create(int fd, const s
|
||||
/* TTM aligns the BO size to the CPU page size */
|
||||
ws->info.gart_page_size = sysconf(_SC_PAGESIZE);
|
||||
|
||||
+#if !defined(NO_CS_QUEUE)
|
||||
if (ws->num_cpus > 1 && debug_get_option_thread())
|
||||
util_queue_init(&ws->cs_queue, "rcs", 8, 1, 0);
|
||||
+#endif
|
||||
|
||||
/* Create the screen at the end. The winsys must be initialized
|
||||
* completely.
|
|
@ -0,0 +1,12 @@
|
|||
$NetBSD: patch-src_gbm_Makefile.am,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
--- src/gbm/Makefile.am.orig 2017-11-20 14:25:47.000000000 +0000
|
||||
+++ src/gbm/Makefile.am
|
||||
@@ -28,6 +28,7 @@ libgbm_la_LIBADD = \
|
||||
$(top_builddir)/src/loader/libloader.la \
|
||||
$(top_builddir)/src/util/libmesautil.la \
|
||||
$(top_builddir)/src/util/libxmlconfig.la \
|
||||
+ $(PTHREAD_LIBS) \
|
||||
$(DLOPEN_LIBS)
|
||||
|
||||
if HAVE_PLATFORM_WAYLAND
|
|
@ -0,0 +1,49 @@
|
|||
$NetBSD: patch-src_glx_Makefile.am,v 1.3 2019/01/19 23:21:43 tnn Exp $
|
||||
|
||||
- We don't need libmesautil.la here. Those symbols seem to already be
|
||||
included in libmesa.la.
|
||||
- force libtool to use clang++ to link libGL on OSX.
|
||||
Otherwise we get:
|
||||
Undefined symbols for architecture x86_64:
|
||||
"std::terminate()", referenced from:
|
||||
___clang_call_terminate in libglx.a(glsl_parser.o)
|
||||
...
|
||||
|
||||
--- src/glx/Makefile.am.orig 2019-01-17 11:26:23.000000000 +0000
|
||||
+++ src/glx/Makefile.am
|
||||
@@ -89,10 +89,16 @@ libglx_la_SOURCES = \
|
||||
singlepix.c \
|
||||
vertarr.c
|
||||
|
||||
+if HAVE_APPLEDRI
|
||||
+libglx_la_LIBADD = \
|
||||
+ $(top_builddir)/src/loader/libloader.la \
|
||||
+ $(top_builddir)/src/util/libxmlconfig.la
|
||||
+else
|
||||
libglx_la_LIBADD = \
|
||||
$(top_builddir)/src/loader/libloader.la \
|
||||
$(top_builddir)/src/util/libmesautil.la \
|
||||
$(top_builddir)/src/util/libxmlconfig.la
|
||||
+endif
|
||||
|
||||
if HAVE_DRISW
|
||||
libglx_la_SOURCES += \
|
||||
@@ -136,6 +142,7 @@ libglx_la_SOURCES += \
|
||||
|
||||
SUBDIRS += apple
|
||||
libglx_la_LIBADD += $(builddir)/apple/libappleglx.la
|
||||
+libglx_la_LIBADD += $(top_builddir)/src/mesa/libmesa.la
|
||||
endif
|
||||
|
||||
if HAVE_WINDOWSDRI
|
||||
@@ -187,6 +194,10 @@ lib@GL_LIB@_la_SOURCES =
|
||||
lib@GL_LIB@_la_LIBADD = $(GL_LIBS)
|
||||
lib@GL_LIB@_la_LDFLAGS = $(GL_LDFLAGS)
|
||||
|
||||
+if HAVE_APPLEDRI
|
||||
+lib@GL_LIB@_la_SOURCES += apple_dummy.cpp
|
||||
+endif
|
||||
+
|
||||
if HAVE_WINDOWSDRI
|
||||
lib@GL_LIB@_la_LDFLAGS += -lgdi32 -lopengl32 -Wl,--disable-stdcall-fixup
|
||||
endif
|
|
@ -0,0 +1,24 @@
|
|||
$NetBSD: patch-src_glx_apple_apple__glapi.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=90311
|
||||
See also hacks.mk.
|
||||
|
||||
--- src/glx/apple/apple_glapi.c.orig 2018-02-09 02:17:59.000000000 +0000
|
||||
+++ src/glx/apple/apple_glapi.c
|
||||
@@ -39,6 +39,7 @@
|
||||
#include <GL/gl.h>
|
||||
|
||||
#include "main/glheader.h"
|
||||
+#include "main/remap.h"
|
||||
#include "glapi.h"
|
||||
#include "glapitable.h"
|
||||
|
||||
@@ -53,6 +54,8 @@ static void _apple_glapi_create_table(vo
|
||||
if (__applegl_api)
|
||||
return;
|
||||
|
||||
+ _mesa_init_remap_table();
|
||||
+
|
||||
__ogl_framework_api = _glapi_create_table_from_handle(apple_cgl_get_dl_handle(), "gl");
|
||||
assert(__ogl_framework_api);
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
$NetBSD: patch-src_glx_dri__common.h,v 1.1 2019/01/19 21:54:03 tnn Exp $
|
||||
|
||||
Fix error on OSX.
|
||||
|
||||
--- src/glx/dri_common.h.orig 2019-01-17 11:26:23.000000000 +0000
|
||||
+++ src/glx/dri_common.h
|
||||
@@ -55,8 +55,10 @@ extern struct glx_config *driConvertConf
|
||||
|
||||
extern void driDestroyConfigs(const __DRIconfig **configs);
|
||||
|
||||
+#if !defined(GLX_USE_APPLEGL)
|
||||
extern __GLXDRIdrawable *
|
||||
driFetchDrawable(struct glx_context *gc, GLXDrawable glxDrawable);
|
||||
+#endif
|
||||
|
||||
extern void
|
||||
driReleaseDrawables(struct glx_context *gc);
|
|
@ -0,0 +1,43 @@
|
|||
$NetBSD: patch-src_glx_dri__glx.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
atexit() is not a good idea in shared libraries.
|
||||
|
||||
FreeBSD reported atexit bug for 10.6:
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=91869
|
||||
|
||||
--- src/glx/dri_glx.c.orig 2018-01-18 21:30:28.000000000 +0000
|
||||
+++ src/glx/dri_glx.c
|
||||
@@ -183,9 +183,21 @@ static struct driver_config_entry *drive
|
||||
/* Called as an atexit function. Otherwise, this would have to be called with
|
||||
* driver_config_mutex locked.
|
||||
*/
|
||||
+#if defined(HAVE_NOATEXIT)
|
||||
+static Bool e_next_ever_null = False;
|
||||
+
|
||||
+static void __attribute__((__destructor__))
|
||||
+#else
|
||||
static void
|
||||
+#endif
|
||||
clear_driver_config_cache()
|
||||
{
|
||||
+
|
||||
+#if defined(HAVE_NOATEXIT)
|
||||
+ if (!e_next_ever_null)
|
||||
+ return;
|
||||
+#endif
|
||||
+
|
||||
while (driver_config_cache) {
|
||||
struct driver_config_entry *e = driver_config_cache;
|
||||
driver_config_cache = e->next;
|
||||
@@ -276,7 +288,11 @@ glXGetDriverConfig(const char *driverNam
|
||||
driver_config_cache = e;
|
||||
|
||||
if (!e->next)
|
||||
+#if defined(HAVE_NOATEXIT)
|
||||
+ e_next_ever_null = True;
|
||||
+#else
|
||||
atexit(clear_driver_config_cache);
|
||||
+#endif
|
||||
|
||||
out:
|
||||
pthread_mutex_unlock(&driver_config_mutex);
|
|
@ -0,0 +1,19 @@
|
|||
$NetBSD: patch-src_glx_glxclient.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
NetBSD only supports zero-initialized initial-exec tls variables in conjuction
|
||||
with dlopen(3) at the moment.
|
||||
|
||||
--- src/glx/glxclient.h.orig 2017-02-13 11:55:49.000000000 +0000
|
||||
+++ src/glx/glxclient.h
|
||||
@@ -661,7 +661,11 @@ extern void __glXSetCurrentContext(struc
|
||||
extern __thread void *__glX_tls_Context
|
||||
__attribute__ ((tls_model("initial-exec")));
|
||||
|
||||
+#if defined(__NetBSD__)
|
||||
+# define __glXGetCurrentContext() (likely(__glX_tls_Context) ? __glX_tls_Context : (void*)&dummyContext)
|
||||
+#else
|
||||
# define __glXGetCurrentContext() __glX_tls_Context
|
||||
+#endif
|
||||
|
||||
# else
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
$NetBSD: patch-src_glx_glxcurrent.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
Interim fix for toolchain/50277.
|
||||
|
||||
NetBSD only supports zero-initialized initial-exec tls variables in conjuction
|
||||
with dlopen(3) at the moment.
|
||||
|
||||
--- src/glx/glxcurrent.c.orig 2018-02-09 02:17:59.000000000 +0000
|
||||
+++ src/glx/glxcurrent.c
|
||||
@@ -40,6 +40,18 @@
|
||||
#include "glx_error.h"
|
||||
|
||||
/*
|
||||
+ * MASSIVE KLUDGE!
|
||||
+ * We need these to not be extern in libGL.so because of
|
||||
+ * PR toolchain/50277
|
||||
+ */
|
||||
+#if defined(GLX_USE_TLS) && defined(__NetBSD__)
|
||||
+_X_EXPORT __thread struct _glapi_table * _glapi_tls_Dispatch
|
||||
+ __attribute__((tls_model("initial-exec"))) = NULL;
|
||||
+_X_EXPORT __thread void * _glapi_tls_Context
|
||||
+ __attribute__((tls_model("initial-exec")));
|
||||
+#endif
|
||||
+
|
||||
+/*
|
||||
** We setup some dummy structures here so that the API can be used
|
||||
** even if no context is current.
|
||||
*/
|
||||
@@ -77,7 +89,11 @@ _X_HIDDEN pthread_mutex_t __glXmutex = P
|
||||
* \c __glXGetCurrentContext can be implemented as trivial macro.
|
||||
*/
|
||||
__thread void *__glX_tls_Context __attribute__ ((tls_model("initial-exec")))
|
||||
+#if defined(__NetBSD__)
|
||||
+ = NULL; /* non-zero initializers not supported with dlopen */
|
||||
+#else
|
||||
= &dummyContext;
|
||||
+#endif
|
||||
|
||||
_X_HIDDEN void
|
||||
__glXSetCurrentContext(struct glx_context * c)
|
|
@ -0,0 +1,47 @@
|
|||
$NetBSD: patch-src_glx_glxext.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
* Patch from FreeBSD ports graphics/mesa-dri 18.0.0
|
||||
|
||||
# work-around for https://bugs.freedesktop.org/show_bug.cgi?id=100627
|
||||
|
||||
* Extended to DragonFly and NetBSD. Other OSes might need this as well.
|
||||
|
||||
* Added logging statements to note dri3 initialization being invoked.
|
||||
|
||||
--- src/glx/glxext.c.orig 2017-12-08 13:49:11.000000000 +0000
|
||||
+++ src/glx/glxext.c
|
||||
@@ -55,6 +55,7 @@
|
||||
#include <xcb/xcb.h>
|
||||
#include <xcb/glx.h>
|
||||
|
||||
+#include "dri_common.h"
|
||||
|
||||
#ifdef DEBUG
|
||||
void __glXDumpDrawBuffer(struct glx_context * ctx);
|
||||
@@ -817,7 +818,11 @@ AllocAndFetchScreenConfigs(Display * dpy
|
||||
#if defined(GLX_USE_DRM)
|
||||
#if defined(HAVE_DRI3)
|
||||
if (priv->dri3Display)
|
||||
+ InfoMessageF("glxext.c: AllocAndFetchScreenConfigs: priv->dri3Display\n");
|
||||
+ if (priv->dri3Display)
|
||||
psc = (*priv->dri3Display->createScreen) (i, priv);
|
||||
+ if (psc != NULL && priv->dri3Display)
|
||||
+ InfoMessageF("glxext.c: AllocAndFetchScreenConfigs: psc set by priv->dri3Display\n");
|
||||
#endif /* HAVE_DRI3 */
|
||||
if (psc == NULL && priv->dri2Display)
|
||||
psc = (*priv->dri2Display->createScreen) (i, priv);
|
||||
@@ -920,8 +925,13 @@ __glXInitialize(Display * dpy)
|
||||
#if defined(GLX_USE_DRM)
|
||||
if (glx_direct && glx_accel) {
|
||||
#if defined(HAVE_DRI3)
|
||||
- if (!env_var_as_boolean("LIBGL_DRI3_DISABLE", false))
|
||||
+#if ((defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) && !defined(__DRM_NEXT__)) || defined(__DragonFly__) || defined(__NetBSD__)
|
||||
+ if (env_var_as_boolean("LIBGL_DRI3_ENABLE", false))
|
||||
+#endif
|
||||
+ if (!env_var_as_boolean("LIBGL_DRI3_DISABLE", false)) {
|
||||
+ InfoMessageF("glxext.c: __glxInitialize: dpyPriv->dri3Display = dri3_create_display\n");
|
||||
dpyPriv->dri3Display = dri3_create_display(dpy);
|
||||
+ }
|
||||
#endif /* HAVE_DRI3 */
|
||||
dpyPriv->dri2Display = dri2CreateDisplay(dpy);
|
||||
dpyPriv->driDisplay = driCreateDisplay(dpy);
|
|
@ -0,0 +1,14 @@
|
|||
$NetBSD: patch-src_intel_Makefile.tools.am,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
-lrt for shm_open in aubinator.c, a more portable alternative to memfd_create
|
||||
|
||||
--- src/intel/Makefile.tools.am.orig 2018-09-07 21:18:07.000000000 +0000
|
||||
+++ src/intel/Makefile.tools.am
|
||||
@@ -43,6 +43,7 @@ tools_aubinator_LDADD = \
|
||||
$(PTHREAD_LIBS) \
|
||||
$(DLOPEN_LIBS) \
|
||||
$(ZLIB_LIBS) \
|
||||
+ -lrt \
|
||||
-lm
|
||||
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
$NetBSD: patch-src_intel_compiler_brw__fs__bank__conflicts.cpp,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225415
|
||||
FreeBSD Bugzilla: Bug 225415 graphics/mesa-dri: update to 18.0.0
|
||||
|
||||
compiler/brw_fs_bank_conflicts.cpp:719:25: error: scalar initializer cannot be empty
|
||||
vector_type s_p = {}, s_n = {};
|
||||
^~
|
||||
compiler/brw_fs_bank_conflicts.cpp:719:35: error: scalar initializer cannot be empty
|
||||
vector_type s_p = {}, s_n = {};
|
||||
^~
|
||||
|
||||
--- src/intel/compiler/brw_fs_bank_conflicts.cpp.orig 2018-02-09 02:17:59.000000000 +0000
|
||||
+++ src/intel/compiler/brw_fs_bank_conflicts.cpp
|
||||
@@ -716,7 +716,7 @@ namespace {
|
||||
const weight_vector_type &conflicts)
|
||||
{
|
||||
const unsigned m = DIV_ROUND_UP(conflicts.size, vector_width);
|
||||
- vector_type s_p = {}, s_n = {};
|
||||
+ vector_type s_p = {0}, s_n = {0};
|
||||
|
||||
for (unsigned r = 0; r < m; r++) {
|
||||
s_p = adds(s_p, mask(bank_mask_p.v[r], conflicts.v[r]));
|
|
@ -0,0 +1,22 @@
|
|||
$NetBSD: patch-src_mesa_drivers_dri_i965_intel__tiled__memcpy.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
From wip/MesaLib 13.0.1.
|
||||
|
||||
--- src/intel/isl/isl_tiled_memcpy.c.orig 2019-01-22 16:42:57.000000000 +0000
|
||||
+++ src/intel/isl/isl_tiled_memcpy.c
|
||||
@@ -64,6 +64,7 @@ ror(uint32_t n, uint32_t d)
|
||||
return (n >> d) | (n << (32 - d));
|
||||
}
|
||||
|
||||
+#if !defined(__NetBSD__)
|
||||
static inline uint32_t
|
||||
bswap32(uint32_t n)
|
||||
{
|
||||
@@ -76,6 +77,7 @@ bswap32(uint32_t n)
|
||||
(n << 24);
|
||||
#endif
|
||||
}
|
||||
+#endif /* NetBSD */
|
||||
|
||||
/**
|
||||
* Copy RGBA to BGRA - swap R and B.
|
|
@ -0,0 +1,43 @@
|
|||
$NetBSD: patch-src_intel_tools_aub__mem.c,v 1.1 2019/01/10 22:30:11 tnn Exp $
|
||||
|
||||
* Partially implement memfd_create() via mkostemp()
|
||||
|
||||
--- src/intel/tools/aub_mem.c.orig 2018-12-11 21:13:57.000000000 +0000
|
||||
+++ src/intel/tools/aub_mem.c
|
||||
@@ -30,11 +30,36 @@
|
||||
|
||||
#ifndef HAVE_MEMFD_CREATE
|
||||
#include <sys/syscall.h>
|
||||
+#if defined(__FreeBSD__)
|
||||
+#include <fcntl.h>
|
||||
+#endif
|
||||
|
||||
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
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
$NetBSD: patch-src_intel_tools_aubinator__error__decode.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
Patch from FreeBSD ports graphics/mesa-dri 17.1.0
|
||||
|
||||
# expose getline in FreeBSD's stdio.h
|
||||
#
|
||||
|
||||
--- src/intel/tools/aubinator_error_decode.c.orig 2017-05-25 07:13:13.000000000 +0000
|
||||
+++ src/intel/tools/aubinator_error_decode.c
|
||||
@@ -22,6 +22,9 @@
|
||||
*
|
||||
*/
|
||||
|
||||
+#if defined(__FreeBSD__) && __FreeBSD__ < 12
|
||||
+#define _WITH_GETLINE
|
||||
+#endif
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
|
@ -0,0 +1,19 @@
|
|||
$NetBSD$
|
||||
|
||||
Patch from FreeBSD ports graphics/mesa-dri 18.2.0
|
||||
|
||||
# expose getline in FreeBSD's stdio.h
|
||||
#
|
||||
|
||||
--- src/intel/tools/error2aub.c.orig 2018-08-09 00:34:30.000000000 +0000
|
||||
+++ src/intel/tools/error2aub.c
|
||||
@@ -26,6 +26,9 @@
|
||||
#include <getopt.h>
|
||||
#include <inttypes.h>
|
||||
#include <signal.h>
|
||||
+#if defined(__FreeBSD__) && __FreeBSD__ < 12
|
||||
+#define _WITH_GETLINE
|
||||
+#endif
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
|
@ -0,0 +1,62 @@
|
|||
$NetBSD: patch-src_intel_vulkan_anv__allocator.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
* Partially implement memfd_create() via mkostemp()
|
||||
* Ignore MAP_POPULATE if unsupported
|
||||
|
||||
FreeBSD Bugzilla - Bug 225415: graphics/mesa-dri: update to 18.0.0
|
||||
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225415
|
||||
|
||||
--- src/intel/vulkan/anv_allocator.c.orig 2018-02-09 02:17:59.000000000 +0000
|
||||
+++ src/intel/vulkan/anv_allocator.c
|
||||
@@ -25,9 +25,21 @@
|
||||
#include <unistd.h>
|
||||
#include <limits.h>
|
||||
#include <assert.h>
|
||||
+#ifdef __linux__
|
||||
#include <linux/memfd.h>
|
||||
+#else
|
||||
+#include <fcntl.h>
|
||||
+#endif
|
||||
#include <sys/mman.h>
|
||||
|
||||
+#ifndef MAP_POPULATE
|
||||
+#define MAP_POPULATE 0
|
||||
+#endif
|
||||
+
|
||||
+#ifndef MFD_CLOEXEC
|
||||
+#define MFD_CLOEXEC O_CLOEXEC
|
||||
+#endif
|
||||
+
|
||||
#include "anv_private.h"
|
||||
|
||||
#include "util/hash_table.h"
|
||||
@@ -113,7 +125,29 @@ struct anv_mmap_cleanup {
|
||||
static inline int
|
||||
memfd_create(const char *name, unsigned int flags)
|
||||
{
|
||||
+#if defined(__linux__)
|
||||
return syscall(SYS_memfd_create, name, flags);
|
||||
+#elif defined(__FreeBSD__)
|
||||
+ return shm_open(SHM_ANON, flags | O_RDWR | O_CREAT, 0600);
|
||||
+#else /* DragonFly, NetBSD, OpenBSD, Solaris */
|
||||
+ char template[] = "/tmp/shmfd-XXXXXX";
|
||||
+#ifdef HAVE_MKOSTEMP
|
||||
+ int fd = mkostemp(template, flags);
|
||||
+#else
|
||||
+ int fd = mkstemp(template);
|
||||
+ if (flags & O_CLOEXEC) {
|
||||
+ int flags = fcntl(fd, F_GETFD);
|
||||
+ if (flags != -1) {
|
||||
+ flags |= FD_CLOEXEC;
|
||||
+ (void) fcntl(fd, F_SETFD, &flags);
|
||||
+ }
|
||||
+ }
|
||||
+#endif /* HAVE_MKOSTEMP */
|
||||
+ if (fd >= 0)
|
||||
+ unlink(template);
|
||||
+
|
||||
+ return fd;
|
||||
+#endif /* __linux__ */
|
||||
}
|
||||
#endif
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
$NetBSD: patch-src_intel_vulkan_anv__device.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
* Without sysinfo() fall back to sysconf()
|
||||
* Define ETIME if missing
|
||||
|
||||
FreeBSD Bugzilla - Bug 225415: graphics/mesa-dri: update to 18.0.0
|
||||
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225415
|
||||
|
||||
https://reviews.freebsd.org/D17872
|
||||
|
||||
* Define CLOCK_MONOTONIC_RAW if missing
|
||||
|
||||
--- src/intel/vulkan/anv_device.c.orig 2019-02-02 23:08:03.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>
|
||||
@@ -44,6 +46,17 @@
|
||||
|
||||
#include "genxml/gen7_pack.h"
|
||||
|
||||
+#ifndef ETIME
|
||||
+#define ETIME ETIMEDOUT
|
||||
+#endif
|
||||
+#ifndef CLOCK_MONOTONIC_RAW
|
||||
+# ifdef CLOCK_MONOTONIC_FAST
|
||||
+# define CLOCK_MONOTONIC_RAW CLOCK_MONOTONIC_FAST
|
||||
+# else
|
||||
+# define CLOCK_MONOTONIC_RAW CLOCK_MONOTONIC
|
||||
+# endif
|
||||
+#endif
|
||||
+
|
||||
static void
|
||||
compiler_debug_log(void *data, const char *fmt, ...)
|
||||
{ }
|
||||
@@ -64,10 +77,18 @@ static uint64_t
|
||||
anv_compute_heap_size(int fd, uint64_t gtt_size)
|
||||
{
|
||||
/* Query the total ram from the system */
|
||||
+#ifdef __GLIBC__
|
||||
struct sysinfo info;
|
||||
sysinfo(&info);
|
||||
|
||||
uint64_t total_ram = (uint64_t)info.totalram * (uint64_t)info.mem_unit;
|
||||
+#else
|
||||
+#if defined(__FreeBSD__) || defined(__DragonFly__)
|
||||
+ uint64_t total_ram = sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGE_SIZE);
|
||||
+#else
|
||||
+ uint64_t total_ram = sysctlbyname(SYSCTL_MEMSIZE, &mem, &size, nullptr, 0);
|
||||
+#endif
|
||||
+#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.
|
|
@ -0,0 +1,19 @@
|
|||
$NetBSD: patch-src_intel_vulkan_anv__gem.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
* Define ETIME if missing
|
||||
|
||||
FreeBSD Bugzilla - Bug 225415: graphics/mesa-dri: update to 18.0.0
|
||||
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225415
|
||||
|
||||
--- src/intel/vulkan/anv_gem.c.orig 2018-02-09 02:17:59.000000000 +0000
|
||||
+++ src/intel/vulkan/anv_gem.c
|
||||
@@ -26,6 +26,9 @@
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
+#ifndef ETIME
|
||||
+#define ETIME ETIMEDOUT
|
||||
+#endif
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
$NetBSD: patch-src_intel_vulkan_anv__gem__stubs.c,v 1.1 2019/01/10 22:30:11 tnn Exp $
|
||||
|
||||
* Partially implement memfd_create() via mkostemp()
|
||||
|
||||
--- src/intel/vulkan/anv_gem_stubs.c.orig 2018-12-11 21:13:57.000000000 +0000
|
||||
+++ src/intel/vulkan/anv_gem_stubs.c
|
||||
@@ -31,7 +31,29 @@
|
||||
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
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
$NetBSD: patch-src_intel_vulkan_anv__queue.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
* Define ETIME if missing
|
||||
* Drop header that was never used (modified for Linux inclusion)
|
||||
|
||||
FreeBSD Bugzilla - Bug 225415: graphics/mesa-dri: update to 18.0.0
|
||||
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225415
|
||||
|
||||
--- src/intel/vulkan/anv_queue.c.orig 2018-02-09 02:17:59.000000000 +0000
|
||||
+++ src/intel/vulkan/anv_queue.c
|
||||
@@ -26,8 +26,14 @@
|
||||
*/
|
||||
|
||||
#include <fcntl.h>
|
||||
+#include <errno.h>
|
||||
+#ifndef ETIME
|
||||
+#define ETIME ETIMEDOUT
|
||||
+#endif
|
||||
#include <unistd.h>
|
||||
+#if defined(__linux__)
|
||||
#include <sys/eventfd.h>
|
||||
+#endif
|
||||
|
||||
#include "anv_private.h"
|
||||
#include "vk_util.h"
|
|
@ -0,0 +1,32 @@
|
|||
$NetBSD: patch-src_mapi_entry__x86-64__tls.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
NetBSD only supports zero-initialized initial-exec tls variables in conjuction
|
||||
with dlopen(3) at the moment.
|
||||
|
||||
Fix --enable-glx-tls with clang. From FreeBSD.
|
||||
|
||||
table_noop_array is only defined for shared-glapi.
|
||||
es1api and es2api are not going to be patched for NetBSD.
|
||||
|
||||
--- src/mapi/entry_x86-64_tls.h.orig 2017-11-20 14:25:47.000000000 +0000
|
||||
+++ src/mapi/entry_x86-64_tls.h
|
||||
@@ -43,10 +43,19 @@ __asm__(".text\n"
|
||||
|
||||
#ifndef __ILP32__
|
||||
|
||||
+#if defined(__NetBSD__) && defined(MAPI_MODE_GLAPI)
|
||||
#define STUB_ASM_CODE(slot) \
|
||||
"movq " ENTRY_CURRENT_TABLE "@GOTTPOFF(%rip), %rax\n\t" \
|
||||
"movq %fs:(%rax), %r11\n\t" \
|
||||
+ "testq %r11, %r11\n\t" \
|
||||
+ "cmoveq table_noop_array@GOTPCREL(%rip), %r11\n\t" \
|
||||
"jmp *(8 * " slot ")(%r11)"
|
||||
+#else
|
||||
+#define STUB_ASM_CODE(slot) \
|
||||
+ "movq " ENTRY_CURRENT_TABLE "@GOTTPOFF(%rip), %rax\n\t" \
|
||||
+ "movq %fs:(%rax), %r11\n\t" \
|
||||
+ "jmp *(8 * " slot ")(%r11)"
|
||||
+#endif
|
||||
|
||||
#else
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
$NetBSD: patch-src_mapi_entry__x86__tls.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
NetBSD only supports zero-initialized initial-exec tls variables in conjuction
|
||||
with dlopen(3) at the moment.
|
||||
|
||||
Fix --enable-glx-tls with clang. From FreeBSD.
|
||||
|
||||
table_noop_array is only defined for shared-glapi.
|
||||
es1api and es2api are not going to be patched for NetBSD.
|
||||
|
||||
--- src/mapi/entry_x86_tls.h.orig 2018-01-18 21:30:29.000000000 +0000
|
||||
+++ src/mapi/entry_x86_tls.h
|
||||
@@ -56,10 +56,27 @@ __asm__(".balign 16\n"
|
||||
".balign 16\n" \
|
||||
func ":"
|
||||
|
||||
+#if defined(__NetBSD__) && defined(MAPI_MODE_GLAPI)
|
||||
+extern const mapi_func table_noop_array[];
|
||||
#define STUB_ASM_CODE(slot) \
|
||||
"call x86_current_tls\n\t" \
|
||||
"movl %gs:(%eax), %eax\n\t" \
|
||||
+ "testl %eax, %eax\n\t" \
|
||||
+ "je 1f\n\t" \
|
||||
+ "jmp *(4 * " slot ")(%eax)\n\t" \
|
||||
+ "1:\n\t" \
|
||||
+ "call 2f\n" \
|
||||
+ "2:\n\t" \
|
||||
+ "popl %eax\n\t" \
|
||||
+ "addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax\n\t" \
|
||||
+ "movl table_noop_array@GOT(%eax), %eax\n\t" \
|
||||
"jmp *(4 * " slot ")(%eax)"
|
||||
+#else
|
||||
+#define STUB_ASM_CODE(slot) \
|
||||
+ "call x86_current_tls\n\t" \
|
||||
+ "movl %gs:(%eax), %eax\n\t" \
|
||||
+ "jmp *(4 * " slot ")(%eax)"
|
||||
+#endif
|
||||
|
||||
#define MAPI_TMP_STUB_ASM_GCC
|
||||
#include "mapi_tmp.h"
|
|
@ -0,0 +1,15 @@
|
|||
$NetBSD: patch-src_mapi_glapi_gen_gl__gentable.py,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
FreeBSD support.
|
||||
|
||||
--- src/mapi/glapi/gen/gl_gentable.py.orig 2017-02-13 11:55:49.000000000 +0000
|
||||
+++ src/mapi/glapi/gen/gl_gentable.py
|
||||
@@ -44,7 +44,7 @@ header = """/* GLXEXT is the define used
|
||||
#endif
|
||||
|
||||
#if (defined(GLXEXT) && defined(HAVE_BACKTRACE)) \\
|
||||
- || (!defined(GLXEXT) && defined(DEBUG) && !defined(__CYGWIN__) && !defined(__MINGW32__) && !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__DragonFly__))
|
||||
+ || (!defined(GLXEXT) && defined(DEBUG) && !defined(__CYGWIN__) && !defined(__MINGW32__) && !defined(__OpenBSD__) && !defined(__NetBSD__) && !defined(__FreeBSD__) && !defined(__DragonFly__))
|
||||
#define USE_BACKTRACE
|
||||
#endif
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
$NetBSD: patch-src_mapi_u__current.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
NetBSD only supports zero-initialized initial-exec tls variables in conjuction
|
||||
with dlopen(3) at the moment.
|
||||
|
||||
--- src/mapi/u_current.c.orig 2015-09-02 17:06:23.000000000 +0000
|
||||
+++ src/mapi/u_current.c
|
||||
@@ -101,7 +101,11 @@ extern void (*__glapi_noop_table[])(void
|
||||
|
||||
__thread struct _glapi_table *u_current_table
|
||||
__attribute__((tls_model("initial-exec")))
|
||||
+#if defined(__NetBSD__)
|
||||
+ = NULL; /* non-zero initializers not supported with dlopen */
|
||||
+#else
|
||||
= (struct _glapi_table *) table_noop_array;
|
||||
+#endif
|
||||
|
||||
__thread void *u_current_context
|
||||
__attribute__((tls_model("initial-exec")));
|
||||
@@ -283,7 +287,11 @@ struct _glapi_table *
|
||||
u_current_get_table_internal(void)
|
||||
{
|
||||
#if defined(GLX_USE_TLS)
|
||||
+# if defined(__NetBSD__)
|
||||
+ return (likely(u_current_table) ? u_current_table : (struct _glapi_table *) table_noop_array);
|
||||
+# else
|
||||
return u_current_table;
|
||||
+# endif
|
||||
#else
|
||||
if (ThreadSafe)
|
||||
return (struct _glapi_table *) tss_get(u_current_table_tsd);
|
|
@ -0,0 +1,16 @@
|
|||
$NetBSD: patch-src_mapi_u__current.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
NetBSD only supports zero-initialized initial-exec tls variables in conjuction
|
||||
with dlopen(3) at the moment.
|
||||
|
||||
--- src/mapi/u_current.h.orig 2015-09-02 17:06:23.000000000 +0000
|
||||
+++ src/mapi/u_current.h
|
||||
@@ -68,7 +68,7 @@ u_current_get_context_internal(void);
|
||||
static inline const struct _glapi_table *
|
||||
u_current_get_table(void)
|
||||
{
|
||||
-#ifdef GLX_USE_TLS
|
||||
+#if defined(GLX_USE_TLS) && !defined(__NetBSD__)
|
||||
return u_current_table;
|
||||
#else
|
||||
return (likely(u_current_table) ?
|
|
@ -0,0 +1,44 @@
|
|||
$NetBSD: patch-src_mesa_drivers_dri_i915_intel__screen.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
Move sys/sysctl.h include because on NetBSD, sysctl.h includes sys/param.h,
|
||||
and sys/param.h defines a one argument ALIGN. Allows mesa to redefine
|
||||
to a two argument ALIGN.
|
||||
|
||||
Fix build on older NetBSD w/o _SC_PHYS_PAGES.
|
||||
|
||||
--- src/mesa/drivers/dri/i915/intel_screen.c.orig 2017-11-10 23:18:56.000000000 +0000
|
||||
+++ src/mesa/drivers/dri/i915/intel_screen.c
|
||||
@@ -28,6 +28,11 @@
|
||||
#include <errno.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
+
|
||||
+#if defined(HAVE_SYS_SYSCTL_H) && defined(__NetBSD__)
|
||||
+# include <sys/sysctl.h>
|
||||
+#endif
|
||||
+
|
||||
#include "main/glheader.h"
|
||||
#include "main/context.h"
|
||||
#include "main/framebuffer.h"
|
||||
@@ -739,6 +744,13 @@ i915_query_renderer_integer(__DRIscreen
|
||||
const unsigned gpu_mappable_megabytes =
|
||||
(aper_size / (1024 * 1024)) * 3 / 4;
|
||||
|
||||
+#if defined(HW_PHYSMEM64) && defined(__NetBSD__)
|
||||
+ int mib[2] = { CTL_HW, HW_PHYSMEM64 };
|
||||
+ uint64_t system_memory_bytes;
|
||||
+ size_t len = sizeof(system_memory_bytes);
|
||||
+ if (sysctl(mib, 2, &system_memory_bytes, &len, NULL, 0) != 0)
|
||||
+ return -1;
|
||||
+#else
|
||||
const long system_memory_pages = sysconf(_SC_PHYS_PAGES);
|
||||
const long system_page_size = sysconf(_SC_PAGE_SIZE);
|
||||
|
||||
@@ -747,6 +759,7 @@ i915_query_renderer_integer(__DRIscreen
|
||||
|
||||
const uint64_t system_memory_bytes = (uint64_t) system_memory_pages
|
||||
* (uint64_t) system_page_size;
|
||||
+#endif
|
||||
|
||||
const unsigned system_memory_megabytes =
|
||||
(unsigned) (system_memory_bytes / (1024 * 1024));
|
|
@ -0,0 +1,72 @@
|
|||
$NetBSD: patch-src_mesa_drivers_dri_i965_brw__performance__query.c,v 1.2 2018/10/16 15:21:20 jperkin Exp $
|
||||
|
||||
Prevents libdrm i915_drm.h header from being used.
|
||||
libdrm 2.4.88 does not have certain symbols defined in its i915_drm.h.
|
||||
|
||||
--- src/mesa/drivers/dri/i965/brw_performance_query.c.orig 2018-09-07 21:18:07.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"
|
||||
@@ -1796,6 +1796,9 @@ enumerate_sysfs_metrics(struct brw_conte
|
||||
DIR *metricsdir = NULL;
|
||||
struct dirent *metric_entry;
|
||||
int len;
|
||||
+#ifdef __sun
|
||||
+ struct stat s;
|
||||
+#endif
|
||||
|
||||
len = snprintf(buf, sizeof(buf), "%s/metrics", brw->perfquery.sysfs_dev_dir);
|
||||
if (len < 0 || len >= sizeof(buf)) {
|
||||
@@ -1812,10 +1815,18 @@ enumerate_sysfs_metrics(struct brw_conte
|
||||
while ((metric_entry = readdir(metricsdir))) {
|
||||
struct hash_entry *entry;
|
||||
|
||||
+#if defined(__sun)
|
||||
+ stat(metric_entry->d_name, &s);
|
||||
+ if ((s.st_mode != S_IFDIR &&
|
||||
+ s.st_mode != S_IFLNK) ||
|
||||
+ metric_entry->d_name[0] == '.')
|
||||
+ continue;
|
||||
+#else
|
||||
if ((metric_entry->d_type != DT_DIR &&
|
||||
metric_entry->d_type != DT_LNK) ||
|
||||
metric_entry->d_name[0] == '.')
|
||||
continue;
|
||||
+#endif
|
||||
|
||||
DBG("metric set: %s\n", metric_entry->d_name);
|
||||
entry = _mesa_hash_table_search(brw->perfquery.oa_metrics_table,
|
||||
@@ -2057,6 +2068,9 @@ get_sysfs_dev_dir(struct brw_context *br
|
||||
DIR *drmdir;
|
||||
struct dirent *drm_entry;
|
||||
int len;
|
||||
+#ifdef __sun
|
||||
+ struct stat s;
|
||||
+#endif
|
||||
|
||||
brw->perfquery.sysfs_dev_dir[0] = '\0';
|
||||
|
||||
@@ -2088,9 +2102,16 @@ get_sysfs_dev_dir(struct brw_context *br
|
||||
}
|
||||
|
||||
while ((drm_entry = readdir(drmdir))) {
|
||||
+#if defined(__sun)
|
||||
+ stat(drm_entry->d_name, &s);
|
||||
+ if ((s.st_mode == S_IFDIR ||
|
||||
+ s.st_mode == S_IFLNK) &&
|
||||
+ strncmp(drm_entry->d_name, "card", 4) == 0)
|
||||
+#else
|
||||
if ((drm_entry->d_type == DT_DIR ||
|
||||
drm_entry->d_type == DT_LNK) &&
|
||||
strncmp(drm_entry->d_name, "card", 4) == 0)
|
||||
+#endif
|
||||
{
|
||||
len = snprintf(brw->perfquery.sysfs_dev_dir,
|
||||
sizeof(brw->perfquery.sysfs_dev_dir),
|
|
@ -0,0 +1,81 @@
|
|||
$NetBSD: patch-src_mesa_drivers_dri_i965_intel__screen.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
Move sys/sysctl.h include because on NetBSD, sysctl.h includes sys/param.h,
|
||||
and sys/param.h defines a one argument ALIGN. Allows mesa to redefine
|
||||
to a two argument ALIGN.
|
||||
|
||||
Fix build on older NetBSD w/o _SC_PHYS_PAGES.
|
||||
|
||||
From FreeBSD ports graphics/mesa-dri 18.1.4
|
||||
|
||||
# Partial revert of the following commit because the feature check fails on 10.x
|
||||
# which disables HW accel on gen4+ (the new check occurs for gen6+ as well)
|
||||
|
||||
From 088449487ebcb72561d73ffb91c96302583445a8 Mon Sep 17 00:00:00 2001
|
||||
Date: Wed, 22 Mar 2017 15:20:51 -0700
|
||||
Subject: i965: Require Kernel 3.6 for Gen4-5 platforms.
|
||||
|
||||
We've already required Kernel 3.6 on Gen6+ since Mesa 9.2 (May 2013,
|
||||
commit 92d2f5acfadea672417b6785710c9e8b7f605e41). It seems reasonable
|
||||
to require it for Gen4-5 as well, bumping the requirement from 2.6.39.
|
||||
|
||||
This is necessary for glClientWaitSync with a timeout to work, which
|
||||
is a feature we expose on Gen4-5. Without it, we would fall back to an
|
||||
infinite wait, which is pretty bad.
|
||||
|
||||
See kernel commit 172cf15d18889313bf2c3bfb81fcea08369274ef in 3.6+.
|
||||
|
||||
--- src/mesa/drivers/dri/i965/intel_screen.c.orig 2017-11-10 23:18:56.000000000 +0000
|
||||
+++ src/mesa/drivers/dri/i965/intel_screen.c
|
||||
@@ -27,6 +27,11 @@
|
||||
#include <errno.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
+
|
||||
+#if defined(HAVE_SYS_SYSCTL_H) && defined(__NetBSD__)
|
||||
+# include <sys/sysctl.h>
|
||||
+#endif
|
||||
+
|
||||
#include "main/context.h"
|
||||
#include "main/framebuffer.h"
|
||||
#include "main/renderbuffer.h"
|
||||
@@ -1470,6 +1475,13 @@ brw_query_renderer_integer(__DRIscreen *
|
||||
const unsigned gpu_mappable_megabytes =
|
||||
screen->aperture_threshold / (1024 * 1024);
|
||||
|
||||
+#if defined(HW_PHYSMEM64) && defined(__NetBSD__)
|
||||
+ int mib[2] = { CTL_HW, HW_PHYSMEM64 };
|
||||
+ const uint64_t system_memory_bytes;
|
||||
+ size_t len = sizeof(system_memory_bytes);
|
||||
+ if (sysctl(mib, 2, &system_memory_bytes, &len, NULL, 0) != 0)
|
||||
+ return -1;
|
||||
+#else
|
||||
const long system_memory_pages = sysconf(_SC_PHYS_PAGES);
|
||||
const long system_page_size = sysconf(_SC_PAGE_SIZE);
|
||||
|
||||
@@ -1478,6 +1490,7 @@ brw_query_renderer_integer(__DRIscreen *
|
||||
|
||||
const uint64_t system_memory_bytes = (uint64_t) system_memory_pages
|
||||
* (uint64_t) system_page_size;
|
||||
+#endif
|
||||
|
||||
const unsigned system_memory_megabytes =
|
||||
(unsigned) (system_memory_bytes / (1024 * 1024));
|
||||
@@ -1840,10 +1853,17 @@ intel_init_bufmgr(struct intel_screen *s
|
||||
return false;
|
||||
}
|
||||
|
||||
+#if defined(__FreeBSD__)
|
||||
+ if (!intel_get_boolean(screen, I915_PARAM_HAS_RELAXED_DELTA)) {
|
||||
+ fprintf(stderr, "[%s: %u] Kernel 2.6.39 required.\n", __func__, __LINE__);
|
||||
+ return false;
|
||||
+ }
|
||||
+#else
|
||||
if (!intel_get_boolean(screen, I915_PARAM_HAS_EXEC_NO_RELOC)) {
|
||||
fprintf(stderr, "[%s: %u] Kernel 3.9 required.\n", __func__, __LINE__);
|
||||
return false;
|
||||
}
|
||||
+#endif
|
||||
|
||||
return true;
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
$NetBSD: patch-src_mesa_drivers_dri_swrast_swrast.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
Fix build on older NetBSD w/o _SC_PHYS_PAGES.
|
||||
|
||||
--- src/mesa/drivers/dri/swrast/swrast.c.orig 2017-10-19 12:23:53.000000000 +0000
|
||||
+++ src/mesa/drivers/dri/swrast/swrast.c
|
||||
@@ -151,6 +151,12 @@ swrast_query_renderer_integer(__DRIscree
|
||||
size_t len = sizeof(system_memory_bytes);
|
||||
if (sysctl(mib, 2, &system_memory_bytes, &len, NULL, 0) != 0)
|
||||
return -1;
|
||||
+#elif defined(HW_PHYSMEM64) && defined(__NetBSD__)
|
||||
+ int mib[2] = { CTL_HW, HW_PHYSMEM64 };
|
||||
+ uint64_t system_memory_bytes;
|
||||
+ size_t len = sizeof(system_memory_bytes);
|
||||
+ if (sysctl(mib, 2, &system_memory_bytes, &len, NULL, 0) != 0)
|
||||
+ return -1;
|
||||
#elif defined(_SC_PHYS_PAGES) && defined(_SC_PAGE_SIZE)
|
||||
/* XXX: Do we want to return the full amount of system memory ? */
|
||||
const long system_memory_pages = sysconf(_SC_PHYS_PAGES);
|
|
@ -0,0 +1,15 @@
|
|||
$NetBSD: patch-src_mesa_drivers_x11_Makefile.am,v 1.1 2019/01/19 21:54:03 tnn Exp $
|
||||
|
||||
We don't need libmesautil.la here. Those symbols seem to already be
|
||||
included in libmesa.la.
|
||||
|
||||
--- src/mesa/drivers/x11/Makefile.am.orig 2019-01-17 11:26:23.000000000 +0000
|
||||
+++ src/mesa/drivers/x11/Makefile.am
|
||||
@@ -68,7 +68,6 @@ GL_PATCH = 0
|
||||
lib@GL_LIB@_la_LIBADD = \
|
||||
$(top_builddir)/src/mesa/libmesa.la \
|
||||
$(top_builddir)/src/mapi/glapi/libglapi.la \
|
||||
- $(top_builddir)/src/util/libmesautil.la \
|
||||
$(SHARED_GLAPI_LIB) \
|
||||
$(GL_LIB_DEPS)
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
$NetBSD: patch-src_mesa_main_context.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
* Fix exit time segfault of qt5 application with modular xorg
|
||||
|
||||
Bug 82246 (atexit) - Libraries should not call atexit()
|
||||
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=82246
|
||||
|
||||
FreeBSD reported atexit bug for 10.6:
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=91869
|
||||
|
||||
--- src/mesa/main/context.c.orig 2017-11-20 14:25:47.000000000 +0000
|
||||
+++ src/mesa/main/context.c
|
||||
@@ -354,11 +354,23 @@ mtx_t OneTimeLock = _MTX_INITIALIZER_NP;
|
||||
* Calls all the various one-time-fini functions in Mesa
|
||||
*/
|
||||
|
||||
+#if defined(HAVE_NOATEXIT)
|
||||
+static GLbitfield api_init_mask = 0x0;
|
||||
+static void __attribute__((__destructor__))
|
||||
+#else
|
||||
static void
|
||||
+#endif
|
||||
one_time_fini(void)
|
||||
{
|
||||
+#if defined(HAVE_NOATEXIT)
|
||||
+ if (api_init_mask) {
|
||||
+ _mesa_destroy_shader_compiler();
|
||||
+ _mesa_locale_fini();
|
||||
+ }
|
||||
+#else
|
||||
_mesa_destroy_shader_compiler();
|
||||
_mesa_locale_fini();
|
||||
+#endif
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -373,7 +385,9 @@ one_time_fini(void)
|
||||
static void
|
||||
one_time_init( struct gl_context *ctx )
|
||||
{
|
||||
+#if !defined(HAVE_NOATEXIT)
|
||||
static GLbitfield api_init_mask = 0x0;
|
||||
+#endif
|
||||
|
||||
mtx_lock(&OneTimeLock);
|
||||
|
||||
@@ -398,7 +412,9 @@ one_time_init( struct gl_context *ctx )
|
||||
_mesa_ubyte_to_float_color_tab[i] = (float) i / 255.0F;
|
||||
}
|
||||
|
||||
+#if !defined(HAVE_NOATEXIT)
|
||||
atexit(one_time_fini);
|
||||
+#endif
|
||||
|
||||
#if defined(DEBUG)
|
||||
if (MESA_VERBOSE != 0) {
|
|
@ -0,0 +1,31 @@
|
|||
$NetBSD: patch-src_mesa_main_extensions.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
atexit() is not a good idea in shared libraries.
|
||||
|
||||
FreeBSD reported atexit bug for 10.6:
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=91869
|
||||
|
||||
--- src/mesa/main/extensions.c.orig 2018-02-09 02:17:59.000000000 +0000
|
||||
+++ src/mesa/main/extensions.c
|
||||
@@ -203,7 +203,11 @@ set_extension(struct gl_extensions *ext,
|
||||
* This string is allocated early during the first context creation by
|
||||
* _mesa_one_time_init_extension_overrides.
|
||||
*/
|
||||
+#if defined(HAVE_NOATEXIT)
|
||||
+static void __attribute__((__destructor__))
|
||||
+#else
|
||||
static void
|
||||
+#endif
|
||||
free_unknown_extensions_strings(void)
|
||||
{
|
||||
free(unrecognized_extensions);
|
||||
@@ -293,7 +297,9 @@ _mesa_one_time_init_extension_overrides(
|
||||
free(env);
|
||||
} else {
|
||||
unrecognized_extensions = env;
|
||||
+#if !defined(HAVE_NOATEXIT)
|
||||
atexit(free_unknown_extensions_strings);
|
||||
+#endif
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
$NetBSD: patch-src_mesa_main_macros.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
ALIGN is also defined in sys/param.h on NetBSD.
|
||||
|
||||
Extend undefining ALIGN to all other OSes.
|
||||
|
||||
--- src/mesa/main/macros.h.orig 2017-11-10 23:18:56.000000000 +0000
|
||||
+++ src/mesa/main/macros.h
|
||||
@@ -677,6 +677,9 @@ minify(unsigned value, unsigned levels)
|
||||
*
|
||||
* \sa ROUND_DOWN_TO()
|
||||
*/
|
||||
+#ifdef ALIGN
|
||||
+#undef ALIGN
|
||||
+#endif
|
||||
static inline uintptr_t
|
||||
ALIGN(uintptr_t value, int32_t alignment)
|
||||
{
|
|
@ -0,0 +1,58 @@
|
|||
$NetBSD: patch-src_mesa_main_shader__query.cpp,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=66346
|
||||
|
||||
From c4a1fec68d2508ff0c4fc2831465aca8c4ca783a Mon Sep 17 00:00:00 2001
|
||||
From: Julien Isorce <j.isorce@samsung.com>
|
||||
Date: Wed, 22 Apr 2015 23:04:42 +0100
|
||||
Subject: [PATCH 1/2] shader_query: convert GLhandleARB to uintptr_t before
|
||||
troncating to GLuint
|
||||
|
||||
Fixes compiler error on OSX as GLhandleARB is defined as void* if __APPLE__.
|
||||
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=66346
|
||||
---
|
||||
src/mesa/main/shader_query.cpp | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
--- src/mesa/main/shader_query.cpp.orig 2016-11-10 22:05:17.000000000 +0000
|
||||
+++ src/mesa/main/shader_query.cpp
|
||||
@@ -70,7 +70,12 @@ _mesa_BindAttribLocation(GLuint program,
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
|
||||
struct gl_shader_program *const shProg =
|
||||
+#if defined(__APPLE__)
|
||||
+ _mesa_lookup_shader_program_err(ctx, (GLuint)(uintptr_t)program, "glBindAttribLocation");
|
||||
+#else
|
||||
_mesa_lookup_shader_program_err(ctx, program, "glBindAttribLocation");
|
||||
+#endif
|
||||
+
|
||||
if (!shProg)
|
||||
return;
|
||||
|
||||
@@ -114,7 +119,12 @@ _mesa_GetActiveAttrib(GLuint program, GL
|
||||
return;
|
||||
}
|
||||
|
||||
+#if defined(__APPLE__)
|
||||
+ shProg = _mesa_lookup_shader_program_err(ctx, (GLuint)(uintptr_t)program, "glGetActiveAttrib");
|
||||
+#else
|
||||
shProg = _mesa_lookup_shader_program_err(ctx, program, "glGetActiveAttrib");
|
||||
+#endif
|
||||
+
|
||||
if (!shProg)
|
||||
return;
|
||||
|
||||
@@ -159,7 +169,12 @@ _mesa_GetAttribLocation(GLuint program,
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
struct gl_shader_program *const shProg =
|
||||
+
|
||||
+#if defined(__APPLE__)
|
||||
+ _mesa_lookup_shader_program_err(ctx, (GLuint)(uintptr_t)program, "glGetAttribLocation");
|
||||
+#else
|
||||
_mesa_lookup_shader_program_err(ctx, program, "glGetAttribLocation");
|
||||
+#endif
|
||||
|
||||
if (!shProg) {
|
||||
return -1;
|
|
@ -0,0 +1,24 @@
|
|||
$NetBSD: patch-src_mesa_x86_common__x86.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
DragonFly support.
|
||||
|
||||
--- src/mesa/x86/common_x86.c.orig 2017-05-10 14:13:58.000000000 +0000
|
||||
+++ src/mesa/x86/common_x86.c
|
||||
@@ -35,7 +35,7 @@
|
||||
*/
|
||||
|
||||
/* XXX these includes should probably go into imports.h or glheader.h */
|
||||
-#if defined(USE_SSE_ASM) && defined(__FreeBSD__)
|
||||
+#if defined(USE_SSE_ASM) && (defined(__FreeBSD__) || defined(__DragonFly__))
|
||||
#include <sys/types.h>
|
||||
#include <sys/sysctl.h>
|
||||
#endif
|
||||
@@ -125,7 +125,7 @@ static LONG WINAPI ExceptionFilter(LPEXC
|
||||
*/
|
||||
void _mesa_check_os_sse_support( void )
|
||||
{
|
||||
-#if defined(__FreeBSD__)
|
||||
+#if defined(__FreeBSD__) || defined(__DragonFly__)
|
||||
{
|
||||
int ret, enabled;
|
||||
unsigned int len;
|
|
@ -0,0 +1,15 @@
|
|||
$NetBSD: patch-src_util_Makefile.am,v 1.1 2019/01/10 22:30:11 tnn Exp $
|
||||
|
||||
handled with CONF_FILES
|
||||
|
||||
--- src/util/Makefile.am.orig 2018-12-11 21:13:57.000000000 +0000
|
||||
+++ src/util/Makefile.am
|
||||
@@ -75,7 +75,7 @@ libxmlconfig_la_CFLAGS = \
|
||||
libxmlconfig_la_LIBADD = $(EXPAT_LIBS) -lm
|
||||
|
||||
drircdir = $(datadir)/drirc.d
|
||||
-drirc_DATA = 00-mesa-defaults.conf
|
||||
+drirc_DATA = # 00-mesa-defaults.conf
|
||||
|
||||
u_atomic_test_LDADD = libmesautil.la
|
||||
roundeven_test_LDADD = -lm
|
|
@ -0,0 +1,26 @@
|
|||
$NetBSD: patch-src_util_build__id.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
Patch combining DragonFly dports and FreeBSD ports graphics/mesa-dri 18.2.0
|
||||
|
||||
--- src/util/build_id.c.orig 2018-09-07 21:18:07.000000000 +0000
|
||||
+++ src/util/build_id.c
|
||||
@@ -35,7 +35,19 @@
|
||||
#endif
|
||||
|
||||
#ifndef ElfW
|
||||
+#if defined(__DragonFly__)
|
||||
+#ifdef __LP64__
|
||||
+#define ElfW(type) Elf64_##type
|
||||
+#else
|
||||
+#define ElfW(type) Elf32_##type
|
||||
+#endif /* __LP64__ */
|
||||
+#else
|
||||
#define ElfW(type) Elf_##type
|
||||
+#endif /* __DragonFly__ */
|
||||
+#endif
|
||||
+
|
||||
+#if defined(__FreeBSD__) && __FreeBSD__ < 12
|
||||
+typedef Elf_Note Elf_Nhdr;
|
||||
#endif
|
||||
|
||||
struct build_id_note {
|
|
@ -0,0 +1,29 @@
|
|||
$NetBSD: patch-src_util_disk__cache.c,v 1.1 2018/10/16 15:21:20 jperkin Exp $
|
||||
|
||||
Use fcntl() on SunOS.
|
||||
|
||||
--- src/util/disk_cache.c.orig 2018-09-07 21:18:07.000000000 +0000
|
||||
+++ src/util/disk_cache.c
|
||||
@@ -857,6 +857,9 @@ cache_put(void *job, int thread_index)
|
||||
unsigned i = 0;
|
||||
char *filename = NULL, *filename_tmp = NULL;
|
||||
struct disk_cache_put_job *dc_job = (struct disk_cache_put_job *) job;
|
||||
+#ifdef __sun
|
||||
+ struct flock lock = {0};
|
||||
+#endif
|
||||
|
||||
filename = get_cache_file(dc_job->cache, dc_job->key);
|
||||
if (filename == NULL)
|
||||
@@ -895,7 +898,12 @@ cache_put(void *job, int thread_index)
|
||||
* open with the flock held. So just let that file be responsible
|
||||
* for writing the file.
|
||||
*/
|
||||
+#ifdef __sun
|
||||
+ lock.l_type = F_WRLCK;
|
||||
+ err = fcntl(fd, F_SETLK, &lock);
|
||||
+#else
|
||||
err = flock(fd, LOCK_EX | LOCK_NB);
|
||||
+#endif
|
||||
if (err == -1)
|
||||
goto done;
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
$NetBSD: patch-src_util_futex.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
Implement futex_wake() and futex_wait() via _umtx_op()
|
||||
|
||||
FreeBSD Bugzilla - Bug 225415: graphics/mesa-dri: update to 18.0.0
|
||||
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225415
|
||||
|
||||
--- src/util/futex.h.orig 2018-02-09 02:18:00.000000000 +0000
|
||||
+++ src/util/futex.h
|
||||
@@ -29,10 +29,35 @@
|
||||
#include <limits.h>
|
||||
#include <stdint.h>
|
||||
#include <unistd.h>
|
||||
+#if defined(__FreeBSD__)
|
||||
+#include <errno.h>
|
||||
+# if __FreeBSD__ < 11
|
||||
+# include <machine/atomic.h>
|
||||
+# endif
|
||||
+#include <sys/umtx.h>
|
||||
+#else
|
||||
#include <linux/futex.h>
|
||||
#include <sys/syscall.h>
|
||||
+#endif
|
||||
#include <sys/time.h>
|
||||
|
||||
+#if defined(__FreeBSD__)
|
||||
+static inline int futex_wake(uint32_t *addr, int count)
|
||||
+{
|
||||
+ return _umtx_op(addr, UMTX_OP_WAKE, (uint32_t)count, NULL, NULL) == -1 ? errno : 0;
|
||||
+}
|
||||
+
|
||||
+static inline int futex_wait(uint32_t *addr, int32_t value, struct timespec *timeout)
|
||||
+{
|
||||
+ void *uaddr = NULL, *uaddr2 = NULL;
|
||||
+ if (timeout != NULL) {
|
||||
+ const struct _umtx_time tmo = { ._timeout = *timeout, ._flags = UMTX_ABSTIME, ._clockid = CLOCK_MONOTONIC };
|
||||
+ uaddr = (void *)(uintptr_t)sizeof(tmo);
|
||||
+ uaddr2 = (void *)&tmo;
|
||||
+ }
|
||||
+ return _umtx_op(addr, UMTX_OP_WAIT_UINT, (uint32_t)value, uaddr, uaddr2) == -1 ? errno : 0;
|
||||
+}
|
||||
+#else
|
||||
static inline long sys_futex(void *addr1, int op, int val1, const struct timespec *timeout, void *addr2, int val3)
|
||||
{
|
||||
return syscall(SYS_futex, addr1, op, val1, timeout, addr2, val3);
|
||||
@@ -50,6 +75,7 @@ static inline int futex_wait(uint32_t *a
|
||||
return sys_futex(addr, FUTEX_WAIT_BITSET, value, timeout, NULL,
|
||||
FUTEX_BITSET_MATCH_ANY);
|
||||
}
|
||||
+#endif
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
$NetBSD$
|
||||
|
||||
- Use monotonic clock for timeouts
|
||||
|
||||
FreeBSD Bugzilla - Bug 225415 graphics/mesa-dri: update to 18.0.0
|
||||
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225415
|
||||
|
||||
--- src/util/os_time.c.orig 2018-05-11 23:27:04.000000000 +0000
|
||||
+++ src/util/os_time.c
|
||||
@@ -95,7 +95,7 @@ os_time_get_nano(void)
|
||||
void
|
||||
os_time_sleep(int64_t usecs)
|
||||
{
|
||||
-#if defined(PIPE_OS_LINUX)
|
||||
+#if (defined(HAVE_CLOCK_NANOSLEEP) && (defined(__FreeBSD__) || defined(__DragonFly__))) || defined(PIPE_OS_LINUX)
|
||||
struct timespec time;
|
||||
time.tv_sec = usecs / 1000000;
|
||||
time.tv_nsec = (usecs % 1000000) * 1000;
|
|
@ -0,0 +1,25 @@
|
|||
$NetBSD: patch-src_util_ralloc.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
FreeBSD reported atexit bug for 10.6:
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=91869
|
||||
|
||||
* Fix exit time segfault of qt5 application with modular xorg
|
||||
* Provide compat strnlen for older Darwin.
|
||||
|
||||
--- src/util/ralloc.c.orig 2017-05-10 14:13:58.000000000 +0000
|
||||
+++ src/util/ralloc.c
|
||||
@@ -368,7 +368,14 @@ ralloc_strndup(const void *ctx, const ch
|
||||
if (unlikely(str == NULL))
|
||||
return NULL;
|
||||
|
||||
+#if (defined(__APPLE__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__-0 < 1070)
|
||||
+ for (n = 0; n < max; n++, str++) {
|
||||
+ if (!*str)
|
||||
+ break;
|
||||
+ }
|
||||
+#else
|
||||
n = strnlen(str, max);
|
||||
+#endif
|
||||
ptr = ralloc_array(ctx, char, n + 1);
|
||||
memcpy(ptr, str, n);
|
||||
ptr[n] = '\0';
|
|
@ -0,0 +1,15 @@
|
|||
$NetBSD: patch-src_util_strndup.h,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
Provide compat strndup for older Darwin.
|
||||
|
||||
--- src/util/strndup.h.orig 2017-05-10 14:13:58.000000000 +0000
|
||||
+++ src/util/strndup.h
|
||||
@@ -24,7 +24,7 @@
|
||||
#ifndef STRNDUP_H
|
||||
#define STRNDUP_H
|
||||
|
||||
-#if defined(_WIN32)
|
||||
+#if defined(_WIN32) || (defined(__APPLE__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__-0 < 1070)
|
||||
|
||||
#include <stdlib.h> // size_t
|
||||
#include <string.h>
|
|
@ -0,0 +1,15 @@
|
|||
$NetBSD: patch-src_util_u__atomic.h,v 1.2 2018/10/16 15:21:20 jperkin Exp $
|
||||
|
||||
Fix SunOS atomic macros.
|
||||
|
||||
--- src/util/u_atomic.h.orig 2018-09-07 21:18:07.000000000 +0000
|
||||
+++ src/util/u_atomic.h
|
||||
@@ -20,7 +20,7 @@
|
||||
* locally coded assembly, compiler intrinsic or ultimately a
|
||||
* mutex-based implementation.
|
||||
*/
|
||||
-#if defined(__sun)
|
||||
+#if defined(__sun) && !defined(__GNUC__)
|
||||
#define PIPE_ATOMIC_OS_SOLARIS
|
||||
#elif defined(_MSC_VER)
|
||||
#define PIPE_ATOMIC_MSVC_INTRINSIC
|
|
@ -0,0 +1,70 @@
|
|||
$NetBSD: patch-src_util_u__queue.c,v 1.2 2019/01/10 22:30:11 tnn Exp $
|
||||
|
||||
atexit() is not a good idea in shared libraries.
|
||||
|
||||
FreeBSD reported atexit bug for 10.6:
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=91869
|
||||
|
||||
--- src/util/u_queue.c.orig 2018-12-11 21:13:57.000000000 +0000
|
||||
+++ src/util/u_queue.c
|
||||
@@ -46,11 +46,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) {
|
||||
@@ -63,7 +74,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
|
||||
@@ -244,12 +259,25 @@ util_queue_thread_func(void *input)
|
||||
/* Don't inherit the thread affinity from the parent thread.
|
||||
* Set the full mask.
|
||||
*/
|
||||
+#if defined(__NetBSD__)
|
||||
+ cpuset_t *cpuset;
|
||||
+ cpuset = cpuset_create();
|
||||
+ if (cpuset != NULL) {
|
||||
+ cpuset_zero(cpuset);
|
||||
+ for (unsigned i = 0; i < cpuset_size(cpuset); i++)
|
||||
+ cpuset_set(i, cpuset);
|
||||
+
|
||||
+ pthread_setaffinity_np(pthread_self(), cpuset_size(cpuset), cpuset);
|
||||
+ cpuset_destroy(cpuset);
|
||||
+ }
|
||||
+#else
|
||||
cpu_set_t cpuset;
|
||||
CPU_ZERO(&cpuset);
|
||||
for (unsigned i = 0; i < CPU_SETSIZE; i++)
|
||||
CPU_SET(i, &cpuset);
|
||||
|
||||
pthread_setaffinity_np(pthread_self(), sizeof(cpuset), &cpuset);
|
||||
+#endif
|
||||
}
|
||||
#endif
|
||||
|
|
@ -0,0 +1,115 @@
|
|||
$NetBSD: patch-src_util_u__thread.h,v 1.2 2019/01/20 09:50:28 tnn Exp $
|
||||
|
||||
handle NetBSD-style pthread_setaffinity_np(3)
|
||||
|
||||
From FreeBSD ports / DragonFly dports
|
||||
|
||||
- Implement setting thread name
|
||||
- Use monotonic clock for timeouts
|
||||
|
||||
https://reviews.freebsd.org/D17872
|
||||
|
||||
--- src/util/u_thread.h.orig 2018-12-11 21:13:57.000000000 +0000
|
||||
+++ src/util/u_thread.h
|
||||
@@ -34,6 +34,13 @@
|
||||
|
||||
#ifdef HAVE_PTHREAD
|
||||
#include <signal.h>
|
||||
+#if defined(__DragonFly__) || defined(__FreeBSD__)
|
||||
+#include <pthread_np.h>
|
||||
+# if !defined(__DragonFly__)
|
||||
+# define cpu_set_t cpuset_t
|
||||
+# endif
|
||||
+#undef ALIGN /* Avoid conflict on FreeBSD in main/macros.h */
|
||||
+#endif
|
||||
#endif
|
||||
|
||||
static inline thrd_t u_thread_create(int (*routine)(void *), void *param)
|
||||
@@ -64,6 +71,8 @@ static inline void u_thread_setname( con
|
||||
(__GLIBC__ >= 3 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 12)) && \
|
||||
defined(__linux__)
|
||||
pthread_setname_np(pthread_self(), name);
|
||||
+# elif defined(__DragonFly__) || defined(__FreeBSD__)
|
||||
+ pthread_set_name_np(pthread_self(), name);
|
||||
# endif
|
||||
#endif
|
||||
(void)name;
|
||||
@@ -83,6 +92,17 @@ static inline void
|
||||
util_pin_thread_to_L3(thrd_t thread, unsigned L3_index, unsigned cores_per_L3)
|
||||
{
|
||||
#if defined(HAVE_PTHREAD_SETAFFINITY)
|
||||
+#if defined(__NetBSD__)
|
||||
+ cpuset_t *cpuset;
|
||||
+ cpuset = cpuset_create();
|
||||
+ if (cpuset == NULL)
|
||||
+ return;
|
||||
+ cpuset_zero(cpuset);
|
||||
+ for (unsigned i = 0; i < cores_per_L3; i++)
|
||||
+ cpuset_set(L3_index * cores_per_L3 + i, cpuset);
|
||||
+ pthread_setaffinity_np(thread, cpuset_size(cpuset), cpuset);
|
||||
+ cpuset_destroy(cpuset);
|
||||
+#else
|
||||
cpu_set_t cpuset;
|
||||
|
||||
CPU_ZERO(&cpuset);
|
||||
@@ -90,6 +110,7 @@ util_pin_thread_to_L3(thrd_t thread, uns
|
||||
CPU_SET(L3_index * cores_per_L3 + i, &cpuset);
|
||||
pthread_setaffinity_np(thread, sizeof(cpuset), &cpuset);
|
||||
#endif
|
||||
+#endif
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -103,6 +124,35 @@ static inline int
|
||||
util_get_L3_for_pinned_thread(thrd_t thread, unsigned cores_per_L3)
|
||||
{
|
||||
#if defined(HAVE_PTHREAD_SETAFFINITY)
|
||||
+#if defined(__NetBSD__)
|
||||
+ cpuset_t *cpuset;
|
||||
+
|
||||
+ cpuset = cpuset_create();
|
||||
+ if (cpuset == NULL)
|
||||
+ return -1;
|
||||
+
|
||||
+ if (pthread_getaffinity_np(thread, cpuset_size(cpuset), cpuset) == 0) {
|
||||
+ int L3_index = -1;
|
||||
+
|
||||
+ for (unsigned i = 0; i < cpuset_size(cpuset); i++) {
|
||||
+ if (cpuset_isset(i, cpuset)) {
|
||||
+ int x = i / cores_per_L3;
|
||||
+
|
||||
+ if (L3_index != x) {
|
||||
+ if (L3_index == -1)
|
||||
+ L3_index = x;
|
||||
+ else {
|
||||
+ cpuset_destroy(cpuset);
|
||||
+ return -1; /* multiple L3s are set */
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ cpuset_destroy(cpuset);
|
||||
+ return L3_index;
|
||||
+ }
|
||||
+ cpuset_destroy(cpuset);
|
||||
+#else
|
||||
cpu_set_t cpuset;
|
||||
|
||||
if (pthread_getaffinity_np(thread, sizeof(cpuset), &cpuset) == 0) {
|
||||
@@ -123,6 +173,7 @@ util_get_L3_for_pinned_thread(thrd_t thr
|
||||
return L3_index;
|
||||
}
|
||||
#endif
|
||||
+#endif
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -134,7 +185,7 @@ util_get_L3_for_pinned_thread(thrd_t thr
|
||||
static inline int64_t
|
||||
u_thread_get_time_nano(thrd_t thread)
|
||||
{
|
||||
-#if defined(__linux__) && defined(HAVE_PTHREAD)
|
||||
+#if (defined(__linux__) || defined(__DragonFly__) || defined(__FreeBSD__)) && defined(HAVE_PTHREAD)
|
||||
struct timespec ts;
|
||||
clockid_t cid;
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
$NetBSD: patch-src_util_xmlconfig.c,v 1.1 2018/10/07 23:49:31 ryoon Exp $
|
||||
|
||||
PR pkg/50202.
|
||||
Provide compat strndup for older Darwin.
|
||||
|
||||
--- src/util/xmlconfig.c.orig 2018-09-07 21:18:07.000000000 +0000
|
||||
+++ src/util/xmlconfig.c
|
||||
@@ -39,6 +39,23 @@
|
||||
#include "xmlconfig.h"
|
||||
#include "u_process.h"
|
||||
|
||||
+#if (defined(__APPLE__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__-0 < 1070)
|
||||
+static char *
|
||||
+strndup(const char *str, size_t n)
|
||||
+{
|
||||
+ size_t len;
|
||||
+ char *copy;
|
||||
+
|
||||
+ for (len = 0; len < n && str[len]; len++)
|
||||
+ continue;
|
||||
+
|
||||
+ if ((copy = (char *)malloc(len + 1)) == NULL)
|
||||
+ return (NULL);
|
||||
+ memcpy(copy, str, len);
|
||||
+ copy[len] = '\0';
|
||||
+ return (copy);
|
||||
+}
|
||||
+#endif
|
||||
|
||||
/** \brief Find an option in an option cache with the name as key */
|
||||
static uint32_t
|
Loading…
Reference in New Issue