This commit is contained in:
Ward from fusion-voyager-3 2023-11-22 19:22:20 +03:00
parent 854c3b1ff8
commit 39daf5aa26
10 changed files with 273 additions and 43 deletions

19
debian/control vendored
View File

@ -22,7 +22,6 @@ Build-Depends:
libva-dev (>= 1.6.0) [linux-any kfreebsd-any] <!pkg.mesa.nolibva>,
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},

3
debian/control.in vendored
View File

@ -22,7 +22,6 @@ Build-Depends:
libva-dev (>= 1.6.0) [linux-any kfreebsd-any] <!pkg.mesa.nolibva>,
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],

View File

@ -0,0 +1,35 @@
From a4f14e7239780b02af8d74669c5458d4b0957d4d Mon Sep 17 00:00:00 2001
From: Roland Stigge <stigge@antcom.de>
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

39
debian/patches/path_max.diff vendored Normal file
View File

@ -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) = {

153
debian/patches/revert-af1ee8e01044.diff vendored Normal file
View File

@ -0,0 +1,153 @@
From 0c3587a2f8e1b6cfadf9a4bbb6ae4b2c3e14a651 Mon Sep 17 00:00:00 2001
From: Leandro Ribeiro <leandro.ribeiro@collabora.com>
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 <leandro.ribeiro@collabora.com>
---
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,
&registry_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

3
debian/patches/series vendored Normal file
View File

@ -0,0 +1,3 @@
#07_gallium-fix-build-failure-on-powerpcspe.diff
#path_max.diff
#src_glx_dri_common.h.diff

View File

@ -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);

43
debian/rules vendored
View File

@ -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 = \
@ -52,13 +49,10 @@ 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
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 := ,

View File

@ -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 <hotrod.master@hotmail.com> 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 <hotrod.master@hotmail.com> Sat, 01 Oct 2022 14:50:00 +0200" > debian/changelog
# Get build deps
apt-get build-dep ./ -y

View File

@ -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 <hotrod.master@hotmail.com> 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 <hotrod.master@hotmail.com> Sat, 01 Oct 2022 14:50:00 +0200" > debian/changelog
# Get build deps
apt-get build-dep ./ -y