From 39daf5aa26c4736f55b8683f63c8cabf3d4ac2b8 Mon Sep 17 00:00:00 2001 From: Ward from fusion-voyager-3 Date: Wed, 22 Nov 2023 19:22:20 +0300 Subject: [PATCH] 24.0 --- debian/control | 19 +-- debian/control.in | 3 - ...llium-fix-build-failure-on-powerpcspe.diff | 35 ++++ debian/patches/path_max.diff | 39 +++++ debian/patches/revert-af1ee8e01044.diff | 153 ++++++++++++++++++ debian/patches/series | 3 + debian/patches/src_glx_dri_common.h.diff | 13 ++ debian/rules | 47 +++--- main.sh | 2 +- main32.sh | 2 +- 10 files changed, 273 insertions(+), 43 deletions(-) create mode 100644 debian/patches/07_gallium-fix-build-failure-on-powerpcspe.diff create mode 100644 debian/patches/path_max.diff create mode 100644 debian/patches/revert-af1ee8e01044.diff create mode 100644 debian/patches/series create mode 100644 debian/patches/src_glx_dri_common.h.diff diff --git a/debian/control b/debian/control index 2d470ea..9b24da6 100644 --- a/debian/control +++ b/debian/control @@ -22,7 +22,6 @@ Build-Depends: libva-dev (>= 1.6.0) [linux-any kfreebsd-any] , libvdpau-dev (>= 1.1.1) [linux-any kfreebsd-any], libvulkan-dev [amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc64 x32], - vulkan-headers [amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc64 x32], x11proto-dev, linux-libc-dev (>= 2.6.31) [linux-any], libx11-xcb-dev, @@ -42,25 +41,23 @@ Build-Depends: python3-ply, python3-setuptools, flex, - spirv-tools, - rustfmt, bison, libelf-dev [amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc64 x32], libwayland-dev (>= 1.15.0) [linux-any], libwayland-egl-backend-dev (>= 1.15.0) [linux-any], - llvm-17-dev [amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc64 x32], - libclang-17-dev [amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc64 x32], - libclang-cpp17-dev [amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc64 x32], - libclc-17-dev [amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc64 x32], + llvm-15-dev [amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc64 x32], + libclang-15-dev [amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc64 x32], + libclang-cpp15-dev [amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc64 x32], + libclc-15-dev [amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc64 x32], wayland-protocols (>= 1.24), zlib1g-dev, libglvnd-core-dev (>= 1.3.2), valgrind [amd64 arm64 armhf i386 mips64el mipsel powerpc ppc64 ppc64el s390x], rustc [amd64 arm64 armel armhf mips64el mipsel ppc64el s390x], bindgen [amd64 arm64 armel armhf mips64el mipsel ppc64el s390x], - llvm-spirv-17 [amd64 arm64 armel armhf mips64el mipsel ppc64el s390x], - libclc-17 [amd64 arm64 armel armhf mips64el mipsel ppc64el s390x], - libllvmspirvlib-17-dev, + llvm-spirv-15 [amd64 arm64 armel armhf mips64el mipsel ppc64el s390x], + libclc-15 [amd64 arm64 armel armhf mips64el mipsel ppc64el s390x], + libllvmspirvlib-15-dev, Rules-Requires-Root: no Vcs: https://salsa.debian.org/xorg-team/lib/mesa.git Vcs-Browser: https://salsa.debian.org/xorg-team/lib/mesa @@ -566,7 +563,7 @@ Section: libs Architecture: amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc64 x32 Pre-Depends: ${misc:Pre-Depends} Depends: libmesa-git, - libclc-17, + libclc-15, ocl-icd-libopencl1 | libopencl1, ${shlibs:Depends}, ${misc:Depends}, diff --git a/debian/control.in b/debian/control.in index de14cf8..2ba8753 100644 --- a/debian/control.in +++ b/debian/control.in @@ -22,7 +22,6 @@ Build-Depends: libva-dev (>= 1.6.0) [linux-any kfreebsd-any] , libvdpau-dev (>= 1.1.1) [linux-any kfreebsd-any], libvulkan-dev [@LLVM_ARCHS@], - vulkan-headers [@LLVM_ARCHS@], x11proto-dev, linux-libc-dev (>= 2.6.31) [linux-any], libx11-xcb-dev, @@ -41,9 +40,7 @@ Build-Depends: python3-mako, python3-ply, python3-setuptools, - rustfmt, flex, - spirv-tools, bison, libelf-dev [@LLVM_ARCHS@], libwayland-dev (>= 1.15.0) [linux-any], diff --git a/debian/patches/07_gallium-fix-build-failure-on-powerpcspe.diff b/debian/patches/07_gallium-fix-build-failure-on-powerpcspe.diff new file mode 100644 index 0000000..029bd22 --- /dev/null +++ b/debian/patches/07_gallium-fix-build-failure-on-powerpcspe.diff @@ -0,0 +1,35 @@ +From a4f14e7239780b02af8d74669c5458d4b0957d4d Mon Sep 17 00:00:00 2001 +From: Roland Stigge +Date: Sun, 2 Mar 2014 19:52:56 +0100 +Subject: [PATCH] gallium: fix build failure on powerpcspe + +In the case of powerpc, mesa activates some altivec instructions +that are unknown on the powerpcspe architecture (see +https://wiki.debian.org/PowerPCSPEPort), causing a build failure as the +'vand' opcode is not recognized by the assembler. + +This patch fixes this by preventing the PPC-specialcasing in case of +powerpcspe (__NO_FPRS__ is only defined there). + +https://bugs.debian.org/695746 +--- + src/gallium/include/pipe/p_config.h | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/src/util/detect_arch.h ++++ b/src/util/detect_arch.h +@@ -70,12 +70,14 @@ + #endif + #endif + ++#ifndef __NO_FPRS__ + #if defined(__ppc__) || defined(__ppc64__) || defined(__PPC__) || defined(__PPC64__) + #define DETECT_ARCH_PPC 1 + #if defined(__ppc64__) || defined(__PPC64__) + #define DETECT_ARCH_PPC_64 1 + #endif + #endif ++#endif + + #if defined(__s390x__) + #define DETECT_ARCH_S390 1 diff --git a/debian/patches/path_max.diff b/debian/patches/path_max.diff new file mode 100644 index 0000000..9832c73 --- /dev/null +++ b/debian/patches/path_max.diff @@ -0,0 +1,39 @@ +--- a/src/util/tests/cache_test.cpp ++++ b/src/util/tests/cache_test.cpp +@@ -82,8 +82,8 @@ check_directories_created(void *mem_ctx, + { + bool sub_dirs_created = false; + +- char buf[PATH_MAX]; +- if (getcwd(buf, PATH_MAX)) { ++ char *buf = getcwd(NULL, 0); ++ if (buf) { + char *full_path = ralloc_asprintf(mem_ctx, "%s%s", buf, ++cache_dir); + struct stat sb; + if (stat(full_path, &sb) != -1 && S_ISDIR(sb.st_mode)) +--- a/src/util/tests/process_test.c ++++ b/src/util/tests/process_test.c +@@ -36,6 +36,10 @@ + #define PATH_MAX MAX_PATH + #endif + ++#if !defined(PATH_MAX) && defined(__GNU__) ++#define PATH_MAX (4096) ++#endif ++ + static bool error = false; + + static void +--- a/src/gallium/auxiliary/pipe-loader/pipe_loader.c ++++ b/src/gallium/auxiliary/pipe-loader/pipe_loader.c +@@ -42,6 +42,10 @@ + #define PATH_MAX _MAX_PATH + #endif + ++#if !defined(PATH_MAX) && defined(__GNU__) ++#define PATH_MAX (4096) ++#endif ++ + #define MODULE_PREFIX "pipe_" + + static int (*backends[])(struct pipe_loader_device **, int) = { diff --git a/debian/patches/revert-af1ee8e01044.diff b/debian/patches/revert-af1ee8e01044.diff new file mode 100644 index 0000000..6fd03d7 --- /dev/null +++ b/debian/patches/revert-af1ee8e01044.diff @@ -0,0 +1,153 @@ +From 0c3587a2f8e1b6cfadf9a4bbb6ae4b2c3e14a651 Mon Sep 17 00:00:00 2001 +From: Leandro Ribeiro +Date: Sun, 10 Apr 2022 22:54:36 -0300 +Subject: [PATCH] Revert "egl/wayland: deprecate drm_handle_format() and + drm_handle_capabilities()" + +Commit af1ee8e010441f8f2ed8c77065b159652a4ac9fe dropped support to +wl_drm, as we thought that most compositors from active projects were +already supporting zwp_linux_dmabuf_v1. + +But that's not true, so revert this commit in order to give these +projects a longer transition period. + +Note that we didn't add back the support to GEM name API, and that was +on purpose. + +Signed-off-by: Leandro Ribeiro +--- + src/egl/drivers/dri2/egl_dri2.h | 1 + + src/egl/drivers/dri2/platform_wayland.c | 59 +++++++++++++++++++------ + 2 files changed, 47 insertions(+), 13 deletions(-) + +diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h +index 89158993efdd..1c840a966b3c 100644 +--- a/src/egl/drivers/dri2/egl_dri2.h ++++ b/src/egl/drivers/dri2/egl_dri2.h +@@ -284,6 +284,7 @@ struct dri2_egl_display + struct zwp_linux_dmabuf_feedback_v1 *wl_dmabuf_feedback; + struct dmabuf_feedback_format_table format_table; + bool authenticated; ++ uint32_t capabilities; + char *device_name; + #endif + +diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c +index e9ecf6d1e716..19fad8bfa08e 100644 +--- a/src/egl/drivers/dri2/platform_wayland.c ++++ b/src/egl/drivers/dri2/platform_wayland.c +@@ -1344,7 +1344,7 @@ create_wl_buffer(struct dri2_egl_display *dri2_dpy, + struct dri2_egl_surface *dri2_surf, + __DRIimage *image) + { +- struct wl_buffer *ret; ++ struct wl_buffer *ret = NULL; + EGLBoolean query; + int width, height, fourcc, num_planes; + uint64_t modifier = DRM_FORMAT_MOD_INVALID; +@@ -1448,11 +1448,28 @@ create_wl_buffer(struct dri2_egl_display *dri2_dpy, + ret = zwp_linux_buffer_params_v1_create_immed(params, width, height, + fourcc, 0); + zwp_linux_buffer_params_v1_destroy(params); ++ } else { ++ struct wl_drm *wl_drm = ++ dri2_surf ? dri2_surf->wl_drm_wrapper : dri2_dpy->wl_drm; ++ int fd, stride; ++ ++ if (num_planes > 1) ++ return NULL; ++ ++ query = dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_FD, &fd); ++ query &= dri2_dpy->image->queryImage(image, __DRI_IMAGE_ATTRIB_STRIDE, &stride); ++ if (!query) { ++ if (fd >= 0) ++ close(fd); ++ return NULL; ++ } + +- return ret; ++ ret = wl_drm_create_prime_buffer(wl_drm, fd, width, height, fourcc, 0, ++ stride, 0, 0, 0, 0); ++ close(fd); + } + +- return NULL; ++ return ret; + } + + static EGLBoolean +@@ -1699,16 +1716,21 @@ drm_handle_device(void *data, struct wl_drm *drm, const char *device) + static void + drm_handle_format(void *data, struct wl_drm *drm, uint32_t format) + { +- /* deprecated, as compositors already support the dma-buf protocol extension +- * and so we can rely on dmabuf_handle_modifier() to receive formats and +- * modifiers */ ++ struct dri2_egl_display *dri2_dpy = data; ++ int visual_idx = dri2_wl_visual_idx_from_fourcc(format); ++ ++ if (visual_idx == -1) ++ return; ++ ++ BITSET_SET(dri2_dpy->formats.formats_bitmap, visual_idx); + } + + static void + drm_handle_capabilities(void *data, struct wl_drm *drm, uint32_t value) + { +- /* deprecated, as compositors already support the dma-buf protocol extension +- * and so we can rely on it to create wl_buffer's */ ++ struct dri2_egl_display *dri2_dpy = data; ++ ++ dri2_dpy->capabilities = value; + } + + static void +@@ -2077,13 +2099,12 @@ dri2_initialize_wayland_drm(_EGLDisplay *disp) + wl_registry_add_listener(dri2_dpy->wl_registry, + ®istry_listener_drm, dri2_dpy); + +- /* The compositor must expose the dma-buf interface. */ +- if (roundtrip(dri2_dpy) < 0 || dri2_dpy->wl_dmabuf == NULL) ++ if (roundtrip(dri2_dpy) < 0) + goto cleanup; + + /* Get default dma-buf feedback */ +- if (zwp_linux_dmabuf_v1_get_version(dri2_dpy->wl_dmabuf) >= +- ZWP_LINUX_DMABUF_V1_GET_DEFAULT_FEEDBACK_SINCE_VERSION) { ++ if (dri2_dpy->wl_dmabuf && zwp_linux_dmabuf_v1_get_version(dri2_dpy->wl_dmabuf) >= ++ ZWP_LINUX_DMABUF_V1_GET_DEFAULT_FEEDBACK_SINCE_VERSION) { + dmabuf_feedback_format_table_init(&dri2_dpy->format_table); + dri2_dpy->wl_dmabuf_feedback = + zwp_linux_dmabuf_v1_get_default_feedback(dri2_dpy->wl_dmabuf); +@@ -2091,7 +2112,6 @@ dri2_initialize_wayland_drm(_EGLDisplay *disp) + &dmabuf_feedback_listener, dri2_dpy); + } + +- /* Receive events from the interfaces */ + if (roundtrip(dri2_dpy) < 0) + goto cleanup; + +@@ -2178,6 +2198,19 @@ dri2_initialize_wayland_drm(_EGLDisplay *disp) + + dri2_wl_setup_swap_interval(disp); + ++ if (dri2_dpy->wl_drm) { ++ /* To use Prime, we must have _DRI_IMAGE v7 at least. createImageFromFds ++ * support indicates that Prime export/import is supported by the driver. ++ * We deprecated the support to GEM names API, so we bail out if the ++ * driver does not suport Prime. */ ++ if (!(dri2_dpy->capabilities & WL_DRM_CAPABILITY_PRIME) || ++ (dri2_dpy->image->base.version < 7) || ++ (dri2_dpy->image->createImageFromFds == NULL)) { ++ _eglLog(_EGL_WARNING, "wayland-egl: display does not support prime"); ++ goto cleanup; ++ } ++ } ++ + if (dri2_dpy->is_different_gpu && + (dri2_dpy->image->base.version < 9 || + dri2_dpy->image->blitImage == NULL)) { +-- +GitLab + diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..7cf17f8 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1,3 @@ +#07_gallium-fix-build-failure-on-powerpcspe.diff +#path_max.diff +#src_glx_dri_common.h.diff diff --git a/debian/patches/src_glx_dri_common.h.diff b/debian/patches/src_glx_dri_common.h.diff new file mode 100644 index 0000000..7524922 --- /dev/null +++ b/debian/patches/src_glx_dri_common.h.diff @@ -0,0 +1,13 @@ +--- a/src/glx/dri_common.h ++++ b/src/glx/dri_common.h +@@ -57,6 +57,10 @@ extern struct glx_config *driConvertConf + + extern void driDestroyConfigs(const __DRIconfig **configs); + ++#ifndef __GLXDRIdrawable ++typedef struct __GLXDRIdrawableRec __GLXDRIdrawable; ++#endif ++ + extern __GLXDRIdrawable * + driFetchDrawable(struct glx_context *gc, GLXDrawable glxDrawable); + diff --git a/debian/rules b/debian/rules index 22538c6..f107569 100755 --- a/debian/rules +++ b/debian/rules @@ -15,11 +15,8 @@ DEB_HOST_ARCH_CPU ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU) # for finding the correct llvm-config when meson doesn't know about it yet LLVM_VERSION = 17 export PATH:=/usr/lib/llvm-$(LLVM_VERSION)/bin/:$(PATH) -export LIBCLANG_PATH=/usr/lib/llvm-$(LLVM_VERSION)/lib export DEB_BUILD_MAINT_OPTIONS=optimize=-lto -# enable LTO everywhere: -#confflags += -Db_lto=true ifeq (,$(filter $(DEB_HOST_ARCH), armhf ppc64el sh3 sh4)) buildflags = \ @@ -48,17 +45,14 @@ VULKAN_DRIVERS = VULKAN_LAYERS = confflags_DRI3 = -Ddri3=disabled -confflags_OSMESA = -Dosmesa=true +confflags_OSMESA = -Dosmesa=true confflags_SSE2 = -Dsse2=true LLVM_ARCHS = amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc64 x32 -#RUSTICL_ARCHS = amd64 arm64 armel armhf mips64el mipsel ppc64el s390x -RUSTICL_ARCHS = s390x -#ifeq ($(DEB_DISTRIBUTION), jammy) -# RUSTICL_ARCHS = arm64 -#endif +RUSTICL_ARCHS = amd64 arm64 armel armhf mips64el mipsel ppc64el s390x VALGRIND_ARCHS = amd64 arm64 armhf i386 mips64el mipsel powerpc ppc64 ppc64el s390x WINE_ARCHS = amd64 arm64 armel armhf i386 powerpc +WSL_ARCHS = amd64 arm64 # hurd doesn't do direct rendering ifeq ($(DEB_HOST_ARCH_OS), hurd) @@ -76,7 +70,12 @@ else # radv/lavapipe needs LLVM and the Vulkan loader, so only build on the subset of # arches where we have LLVM enabled and where the Vulkan loader is built. ifneq (,$(filter $(DEB_HOST_ARCH), amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el s390x sparc64)) - VULKAN_DRIVERS += amd swrast virtio nouveau-experimental + VULKAN_DRIVERS += amd swrast virtio +# ifeq ($(DEB_DISTRIBUTION), noble) +# ifeq (,$(filter $(DEB_HOST_ARCH), i386)) +# VULKAN_DRIVERS += nouveau-experimental +# endif +# endif endif # Only enable amd on riscv64, swrast needs CPU JIT support which doesn't work properly yet @@ -112,12 +111,9 @@ else confflags_GALLIUM += -Dgallium-xa=enabled VULKAN_DRIVERS += intel intel_hasvk endif -# ifneq (,$(filter $(DEB_HOST_ARCH), amd64)) -# confflags_GALLIUM += -Dintel-clc=enabled -# endif - - - confflags_GALLIUM += -Dintel-clc=disabled -Dmicrosoft-clc=disabled + ifneq (,$(filter $(DEB_HOST_ARCH), amd64)) + confflags_GALLIUM += -Dintel-clc=enabled + endif # Non-Linux ports lack epoll, so wayland isn't ready yet: # https://gitlab.freedesktop.org/wayland/wayland/-/issues/72 @@ -129,9 +125,9 @@ else endif # WSL supports only amd64 and arm64 - ifneq (,$(filter amd64 arm64,$(DEB_HOST_ARCH))) + ifneq (,$(filter $(DEB_HOST_ARCH), $(WSL_ARCHS))) GALLIUM_DRIVERS += d3d12 -# VULKAN_DRIVERS += microsoft-experimental + VULKAN_DRIVERS += microsoft-experimental endif endif @@ -159,9 +155,11 @@ else # Build rusticl for archs where rustc is available ifneq (,$(filter $(DEB_HOST_ARCH), $(RUSTICL_ARCHS))) - confflags_GALLIUM += -Dgallium-rusticl=true - else - confflags_GALLIUM += -Dgallium-rusticl=false + ifeq ($(DEB_DISTRIBUTION), jammy) + confflags_GALLIUM += -Dgallium-rusticl=false + else + confflags_GALLIUM += -Dgallium-rusticl=true + endif endif # nine makes sense only on archs that build wine @@ -174,15 +172,10 @@ else ifeq (,$(filter pkg.mesa.nolibva,$(DEB_BUILD_PROFILES))) confflags_GALLIUM += -Dgallium-va=enabled - confflags_GALLIUM += -Dvideo-codecs="vc1dec, h264dec, h264enc, h265dec, h265enc" + confflags_GALLIUM += -Dvideo-codecs="vc1dec, h264dec, h264enc, h265dec, h265enc, vp9dec, av1dec, av1enc" endif endif -# bug #9762 -#ifeq ($(DEB_HOST_ARCH), i386) -# confflags_SSE2 = -Dsse2=false -#endif - empty:= space := $(empty) $(empty) comma := , diff --git a/main.sh b/main.sh index db219de..7ffe8b4 100755 --- a/main.sh +++ b/main.sh @@ -8,7 +8,7 @@ cd ./mesa-git git submodule update --init sed -i ' 1 s/.*/& - PikaOS YellowBirb Mesa Git /' ./VERSION touch debian/changelog -echo -e "mesa-git (23.3-100pika"$(date '+%Y%m%d')".git.1."$(git rev-parse --short HEAD)") lunar; urgency=medium\n\n * New GIT Release\n\n -- Ward Nakchbandi Sat, 01 Oct 2022 14:50:00 +0200" > debian/changelog +echo -e "mesa-git (24.0-100pika"$(date '+%Y%m%d')".git.1."$(git rev-parse --short HEAD)") lunar; urgency=medium\n\n * New GIT Release\n\n -- Ward Nakchbandi Sat, 01 Oct 2022 14:50:00 +0200" > debian/changelog # Get build deps apt-get build-dep ./ -y diff --git a/main32.sh b/main32.sh index db219de..16773b3 100755 --- a/main32.sh +++ b/main32.sh @@ -8,7 +8,7 @@ cd ./mesa-git git submodule update --init sed -i ' 1 s/.*/& - PikaOS YellowBirb Mesa Git /' ./VERSION touch debian/changelog -echo -e "mesa-git (23.3-100pika"$(date '+%Y%m%d')".git.1."$(git rev-parse --short HEAD)") lunar; urgency=medium\n\n * New GIT Release\n\n -- Ward Nakchbandi Sat, 01 Oct 2022 14:50:00 +0200" > debian/changelog +echo -e "mesa-git (24.0-99pika"$(date '+%Y%m%d')".git.1."$(git rev-parse --short HEAD)") lunar; urgency=medium\n\n * New GIT Release\n\n -- Ward Nakchbandi Sat, 01 Oct 2022 14:50:00 +0200" > debian/changelog # Get build deps apt-get build-dep ./ -y