From b9efdfc4377cbbe8817d441a4912bb8f497bc071 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Sun, 22 Aug 2021 21:07:24 +0100 Subject: [PATCH] mesa: add mesa 3D libraries Package libGL, libEGL, libGLES, ... from mesa as well as DRI drivers. Signed-off-by: Daniel Golle --- libs/mesa/Makefile | 317 ++++++++++++++++++ .../001-fix-wayland-scanner-detect.patch | 39 +++ 2 files changed, 356 insertions(+) create mode 100644 libs/mesa/Makefile create mode 100644 libs/mesa/patches/001-fix-wayland-scanner-detect.patch diff --git a/libs/mesa/Makefile b/libs/mesa/Makefile new file mode 100644 index 0000000..c61f558 --- /dev/null +++ b/libs/mesa/Makefile @@ -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 +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 index 0000000..482c6bc --- /dev/null +++ b/libs/mesa/patches/001-fix-wayland-scanner-detect.patch @@ -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', -- 2.30.2