mesa: add mesa 3D libraries
authorDaniel Golle <daniel@makrotopia.org>
Sun, 22 Aug 2021 20:07:24 +0000 (21:07 +0100)
committerDaniel Golle <daniel@makrotopia.org>
Wed, 6 Oct 2021 23:09:16 +0000 (00:09 +0100)
Package libGL, libEGL, libGLES, ... from mesa as well as DRI drivers.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
libs/mesa/Makefile [new file with mode: 0644]
libs/mesa/patches/001-fix-wayland-scanner-detect.patch [new file with mode: 0644]

diff --git a/libs/mesa/Makefile b/libs/mesa/Makefile
new file mode 100644 (file)
index 0000000..c61f558
--- /dev/null
@@ -0,0 +1,317 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=mesa
+PKG_VERSION:=21.1.7
+PKG_RELEASE:=$(AUTORELEASE)
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=https://archive.mesa3d.org/
+PKG_HASH:=e9e67c10654f2e4bf15b944bb048007a614292aa4792b1b7512eb700b7b3a7bb
+
+PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
+PKG_LICENSE:=BSD-3-Clause
+
+PKG_INSTALL:=1
+PKG_BUILD_DEPENDS:=Mako/host
+
+PKG_CONFIG_DEPENDS:= \
+       CONFIG_LIBDRM_INTEL \
+       CONFIG_LIBDRM_NOUVEAU \
+       CONFIG_LIBDRM_RADEON
+
+TARGET_CPPFLAGS+=-Wno-format -Wno-format-security
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/meson.mk
+
+DRI_PLUGINS := \
+       armada-drm:@(aarch64||arm) \
+       etnaviv:@(aarch64||arm) \
+       exynos:@(aarch64||arm) \
+       hx8357d \
+       i915:@LIBDRM_INTEL \
+       i965:@LIBDRM_INTEL \
+       ili9225 \
+       ili9341 \
+       imx-dcss:@(aarch64||arm) \
+       imx-drm:@(aarch64||arm) \
+       ingenic-drm:@(aarch64||arm||mipsel) \
+       kgsl:@(aarch64||arm) \
+       kms_swrast \
+       lima:@(aarch64||arm) \
+       mcde:@arm \
+       mediatek:@(aarch64||arm) \
+       meson:@(aarch64||arm) \
+       mi0283qt \
+       msm:@(aarch64||arm) \
+       mxsfb-drm:@(aarch64||arm) \
+       nouveau:@LIBDRM_NOUVEAU \
+       nouveau_vieux:@LIBDRM_NOUVEAU \
+       panfrost:@(aarch64||arm) \
+       pl111:@(aarch64||arm) \
+       r200:@LIBDRM_RADEON \
+       r300:@LIBDRM_RADEON \
+       radeon:@LIBDRM_RADEON \
+       repaper \
+       rockchip:@(aarch64||arm) \
+       st7586 \
+       st7735r \
+       stm:@(aarch64||arm) \
+       sun4i-drm:@(aarch64||arm) \
+       swrast \
+       tegra:@((aarch64||arm)&&LIBDRM_NOUVEAU) \
+       vmwgfx:@(i386||i686||x86_64) \
+       virtio_gpu
+
+
+define Package/libxatracker
+  SECTION:=libs
+  CATEGORY:=Libraries
+  SUBMENU:=Video
+  TITLE:=Mesa3D libxatracker
+  URL:=https://www.mesa3d.org
+  DEPENDS:=+libstdcpp +zlib +libdrm +libexpat
+endef
+
+define Package/libxatracker/description
+endef
+
+define Package/libglapi
+  SECTION:=libs
+  CATEGORY:=Libraries
+  SUBMENU:=Video
+  TITLE:=Mesa3D libglapi
+  URL:=https://www.mesa3d.org
+  DEPENDS:=+libpthread +libatomic
+endef
+
+define Package/libglapi/description
+endef
+
+define Package/libmesa
+  SECTION:=libs
+  CATEGORY:=Libraries
+  SUBMENU:=Video
+  DEPENDS:=+libglapi +libstdcpp +zlib +libdrm +libwayland +wayland-protocols
+  TITLE:=Mesa3D OpenGL and friends
+  URL:=https://www.mesa3d.org
+endef
+
+define Package/libmesa/description
+endef
+
+define Package/libosmesa
+  SECTION:=libs
+  CATEGORY:=Libraries
+  SUBMENU:=Video
+  DEPENDS:=+libglapi +libstdcpp +zlib +libwayland +wayland-protocols
+  TITLE:=off-screen Mesa library
+  URL:=https://www.mesa3d.org
+endef
+
+define Package/libosmesa/description
+endef
+
+define Package/libvulkan-broadcom
+  SECTION:=libs
+  CATEGORY:=Libraries
+  SUBMENU:=Video
+  DEPENDS:=libmesa @(arm||aarch64)
+  TITLE:=Broadcom Vulkan driver
+  URL:=https://www.mesa3d.org
+endef
+
+define Package/libvulkan-broadcom/description
+endef
+
+define Package/libvulkan-freedreno
+  SECTION:=libs
+  CATEGORY:=Libraries
+  SUBMENU:=Video
+  DEPENDS:=libmesa @(arm||aarch64)
+  TITLE:=Freedreno Vulkan driver
+  URL:=https://www.mesa3d.org
+endef
+
+define Package/libvulkan-freedreno/description
+endef
+
+define Package/libvulkan-intel
+  SECTION:=libs
+  CATEGORY:=Libraries
+  SUBMENU:=Video
+  DEPENDS:=libmesa @(i386||i686||x86_64)
+  TITLE:=Intel Vulkan driver
+  URL:=https://www.mesa3d.org
+endef
+
+define Package/libvulkan-intel/description
+endef
+
+define PluginGen
+define Package/libmesadri-$(subst _,-,$(firstword $(subst :, ,$(1))))
+  SECTION:=libs
+  CATEGORY:=Libraries
+  SUBMENU:=Video
+  TITLE:=Mesa3D DRI $(firstword $(subst :, ,$(1))) plugin
+  URL:=https://www.mesa3d.org
+  DEPENDS:=libmesa $(wordlist 2,$(words $(subst :, ,$(1))),$(subst :, ,$(1)))
+endef
+endef
+
+$(foreach file,$(DRI_PLUGINS),$(eval $(call PluginGen,$(file))))
+
+DRI_DRIVERS:=
+GALLIUM_DRIVERS:=kmsro swrast vc4 virgl
+
+# requires LLVM:
+# VULKAN_DRIVERS:=swrast
+
+ifneq ($(CONFIG_LIBDRM_INTEL),)
+  DRI_DRIVERS+=i965
+  VULKAN_DRIVERS+=intel
+  GALLIUM_DRIVERS+=i915
+endif
+
+ifneq ($(CONFIG_LIBDRM_NOUVEAU),)
+  DRI_DRIVERS+=nouveau
+  GALLIUM_DRIVERS+=nouveau
+endif
+
+ifneq ($(CONFIG_LIBDRM_RADEON),)
+  DRI_DRIVERS+=r100 r200
+  GALLIUM_DRIVERS+=r300
+# r600 and radeonsi require LLVM
+endif
+
+ifeq ($(ARCH),x86_64)
+  GALLIUM_DRIVERS+=svga
+endif
+
+ifeq ($(ARCH),i386)
+  GALLIUM_DRIVERS+=svga
+endif
+
+ifeq ($(ARCH),i686)
+  GALLIUM_DRIVERS+=svga
+endif
+
+ifeq ($(ARCH),aarch64)
+  GALLIUM_DRIVERS+=freedreno etnaviv panfrost lima
+  VULKAN_DRIVERS+=broadcom freedreno
+ifneq ($(CONFIG_LIBDRM_NOUVEAU),)
+  GALLIUM_DRIVERS+=tegra
+endif
+endif
+
+ifeq ($(ARCH),arm)
+  GALLIUM_DRIVERS+=freedreno etnaviv panfrost lima
+  VULKAN_DRIVERS+=broadcom freedreno
+ifneq ($(CONFIG_LIBDRM_NOUVEAU),)
+  GALLIUM_DRIVERS+=tegra
+endif
+endif
+
+ifeq ($(ARCH),mips)
+  GALLIUM_DRIVERS+=etnaviv
+endif
+
+ifeq ($(ARCH),mipsel)
+  GALLIUM_DRIVERS+=etnaviv
+endif
+
+
+MESON_ARGS += \
+       -Dplatforms=wayland \
+       -Dglx=disabled \
+       -Ddri3=enabled \
+       -Degl=enabled \
+       -Dgbm=enabled \
+       -Dgles1=enabled \
+       -Dgles2=enabled \
+       -Dglvnd=false \
+       -Dopengl=true \
+       -Dandroid-stub=false \
+       -Ddri-drivers=$(subst $(space),$(comma),$(strip $(DRI_DRIVERS))) \
+       -Dgallium-drivers=$(subst $(space),$(comma),$(strip $(GALLIUM_DRIVERS))) \
+       -Dvulkan-drivers=$(subst $(space),$(comma),$(strip $(VULKAN_DRIVERS))) \
+       -Dosmesa=true \
+       -Dtools= \
+       -Dllvm=disabled \
+       -Dshared-glapi=enabled \
+       -Ddraw-use-llvm=false \
+       -Dscanner_bin="$(STAGING_DIR_HOSTPKG)/bin/wayland-scanner"
+
+define Build/InstallDev
+       $(INSTALL_DIR) $(1)/usr/include
+       $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.so* $(1)/usr/lib/
+       $(INSTALL_DIR) $(1)/usr/lib/dri
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/dri/* $(1)/usr/lib/dri/
+       $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc $(1)/usr/lib/pkgconfig
+endef
+
+define Package/libglapi/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libglapi.so* $(1)/usr/lib/
+endef
+
+define Package/libxatracker/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libxatracker.so* $(1)/usr/lib/
+endef
+
+define Package/libmesa/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*GL*.so* $(1)/usr/lib/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgbm.so* $(1)/usr/lib/
+       $(INSTALL_DIR) $(1)/usr/share/drirc.d
+       $(CP) $(PKG_INSTALL_DIR)/usr/share/drirc.d/* $(1)/usr/share/drirc.d/
+endef
+
+define Package/libosmesa/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libOSMesa.so* $(1)/usr/lib/
+endef
+
+define Package/libvulkan-broadcom/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libvulkan_broadcom.so $(1)/usr/lib/
+       $(INSTALL_DIR) $(1)/usr/share/vulkan/icd.d
+       $(CP) $(PKG_INSTALL_DIR)/usr/share/vulkan/icd.d/broadcom_icd.generic.json $(1)/usr/share/vulkan/icd.d/
+endef
+
+define Package/libvulkan-freedreno/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libvulkan_freedreno.so $(1)/usr/lib/
+       $(INSTALL_DIR) $(1)/usr/share/vulkan/icd.d
+       $(CP) $(PKG_INSTALL_DIR)/usr/share/vulkan/icd.d/freedreno_icd.generic.json $(1)/usr/share/vulkan/icd.d/
+endef
+
+define Package/libvulkan-intel/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libvulkan_intel.so $(1)/usr/lib/
+       $(INSTALL_DIR) $(1)/usr/share/vulkan/icd.d
+       $(CP) $(PKG_INSTALL_DIR)/usr/share/vulkan/icd.d/intel_icd.generic.json $(1)/usr/share/vulkan/icd.d/
+endef
+
+define PluginInstall
+define Package/libmesadri-$(subst _,-,$(firstword $(subst :, ,$(1))))/install
+       $(INSTALL_DIR) $$(1)/usr/lib/dri
+       $(INSTALL_BIN) \
+               $(PKG_INSTALL_DIR)/usr/lib/dri/$(firstword $(subst :, ,$(1)))_dri.so \
+               $$(1)/usr/lib/dri
+endef
+endef
+
+$(foreach file,$(DRI_PLUGINS),$(eval $(call PluginInstall,$(file))))
+$(foreach file,$(DRI_PLUGINS),$(eval $(call BuildPackage,libmesadri-$(subst _,-,$(firstword $(subst :, ,$(file)))))))
+$(eval $(call BuildPackage,libxatracker))
+$(eval $(call BuildPackage,libglapi))
+$(eval $(call BuildPackage,libmesa))
+$(eval $(call BuildPackage,libosmesa))
+$(eval $(call BuildPackage,libvulkan-intel))
+$(eval $(call BuildPackage,libvulkan-broadcom))
+$(eval $(call BuildPackage,libvulkan-freedreno))
diff --git a/libs/mesa/patches/001-fix-wayland-scanner-detect.patch b/libs/mesa/patches/001-fix-wayland-scanner-detect.patch
new file mode 100644 (file)
index 0000000..482c6bc
--- /dev/null
@@ -0,0 +1,39 @@
+--- a/meson.build
++++ b/meson.build
+@@ -1830,12 +1830,17 @@ endif
+ # TODO: symbol mangling
+ if with_platform_wayland
+-  dep_wl_scanner = dependency('wayland-scanner', native: true)
+-  prog_wl_scanner = find_program(dep_wl_scanner.get_pkgconfig_variable('wayland_scanner'))
+-  if dep_wl_scanner.version().version_compare('>= 1.15')
+-    wl_scanner_arg = 'private-code'
++  if (get_option('scanner_bin') == '')
++    dep_wl_scanner = dependency('wayland-scanner', native: true)
++    prog_wl_scanner = find_program(dep_wl_scanner.get_pkgconfig_variable('wayland_scanner'))
++    if dep_wl_scanner.version().version_compare('>= 1.15')
++      wl_scanner_arg = 'private-code'
++    else
++      wl_scanner_arg = 'code'
++    endif
+   else
+-    wl_scanner_arg = 'code'
++    prog_wl_scanner = get_option('scanner_bin')
++    wl_scanner_arg = 'private-code'
+   endif
+   dep_wl_protocols = dependency('wayland-protocols', version : '>= 1.8')
+   dep_wayland_client = dependency('wayland-client', version : '>=1.18')
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -456,6 +456,11 @@ option(
+   value : 25,
+   description : 'Android Platform SDK version. Default: Nougat version.'
+ )
++option('scanner_bin',
++  description: 'Path to wayland-scanner binary',
++  type: 'string',
++  value: ''
++)
+ option(
+   'zstd',
+   type : 'combo',