first commit

This commit is contained in:
Ward Nakchbandi (Cosmic Fusion) 2023-08-08 19:36:56 +03:00
commit 9f859ab40d
71 changed files with 10788 additions and 0 deletions

46
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,46 @@
name: PikaOS Package Release
on:
workflow_dispatch
jobs:
build:
runs-on: self-hosted
container:
image: ghcr.io/pikaos-linux/pika-package-container:latest
volumes:
- /proc:/proc
options: --privileged -it
steps:
- uses: actions/checkout@v3
- name: Import GPG key
id: import_gpg
uses: crazy-max/ghaction-import-gpg@v5
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.PASSPHRASE }}
- name: Install SSH key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.SSH_KEY }}
name: id_rsa
known_hosts: ${{ secrets.KNOWN_HOSTS }}
if_key_exists: replace
- name: Build Package
run: ./main.sh
- name: Release Package
run: ./release.sh
- name: Purge cache
uses: jakejarvis/cloudflare-purge-action@master
env:
# Zone is required by both authentication methods
CLOUDFLARE_ZONE: ${{ secrets.CLOUDFLARE_ZONE }}
CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }}
PURGE_URLS: '["https://ppa.pika-os.com/dists/lunar/InRelease", "https://ppa.pika-os.com/dists/lunar/main/binary-i386/Packages.gz", "https://ppa.pika-os.com/dists/lunar/main/binary-amd64/Packages.gz", "https://ppa.pikaos.com/dists/lunar/pika-sources.deb", "https://ppa.pika-os.com/dists/kinetic/main/source/Sources.gz" ]'

46
.github/workflows/release_i386.yml vendored Normal file
View File

@ -0,0 +1,46 @@
name: PikaOS Package Release (i386)
on:
workflow_dispatch
jobs:
build:
runs-on: self-hosted
container:
image: ghcr.io/pikaos-linux/pika-i386-package-container:latest
volumes:
- /proc:/proc
options: --privileged -it
steps:
- uses: actions/checkout@v3
- name: Import GPG key
id: import_gpg
uses: crazy-max/ghaction-import-gpg@v5
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.PASSPHRASE }}
- name: Install SSH key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.SSH_KEY }}
name: id_rsa
known_hosts: ${{ secrets.KNOWN_HOSTS }}
if_key_exists: replace
- name: Build Package
run: ./main32.sh
- name: Release Package
run: ./release.sh
- name: Purge cache
uses: jakejarvis/cloudflare-purge-action@master
env:
# Zone is required by both authentication methods
CLOUDFLARE_ZONE: ${{ secrets.CLOUDFLARE_ZONE }}
CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_TOKEN }}
PURGE_URLS: '["https://ppa.pika-os.com/dists/lunar/InRelease", "https://ppa.pika-os.com/dists/lunar/main/binary-i386/Packages.gz", "https://ppa.pika-os.com/dists/lunar/main/binary-amd64/Packages.gz", "https://ppa.pikaos.com/dists/lunar/pika-sources.deb", "https://ppa.pika-os.com/dists/lunar/main/source/Sources.gz" ]'

18
debian/README.Debian vendored Normal file
View File

@ -0,0 +1,18 @@
Documentation for the libegl1-x11, libgles1, and libgles2 virtual
packages.
Although there are is no standardised linux ABI for GL|ES, there is
a “strongly encouraged” set of standard headers, type and linkage definitions
supplied by the Khronos group[1]. The mesa implementation provides this ABI.
Any non-mesa implementation that wants to provide these packages should
conform to the Khronos group's de-facto ABI.
The case of EGL is similar; Khronos again supplies a de-facto linux ABI.
The EGL ABI is necessarily tied to the native windowing system by the
eglNativeDisplayType, eglNativeWindowType, and eglNativePixmapType typedefs.
The EGL virtual package therefore includes the name of the x11 windowing
system to leave room should further windowing ABIs be standardised.
[1]: http://www.khronos.org/registry/implementers_guide.html#uncontrolled
-- Cyril Brulebois <kibi@debian.org>, Sat, 22 Jan 2011 06:03:46 +0100

47
debian/README.source vendored Normal file
View File

@ -0,0 +1,47 @@
------------------------------------------------------
Quick Guide To Patching This Package For The Impatient
------------------------------------------------------
1. Make sure you have quilt installed
2. Unpack the package as usual with "dpkg-source -x"
3. Run the "patch" target in debian/rules
4. Create a new patch with "quilt new" (see quilt(1))
5. Edit all the files you want to include in the patch with "quilt edit"
(see quilt(1)).
6. Write the patch with "quilt refresh" (see quilt(1))
7. Run the "clean" target in debian/rules
Alternatively, instead of using quilt directly, you can drop the patch in to
debian/patches and add the name of the patch to debian/patches/series.
The X Strike Force team maintains X packages in git repositories on
git.debian.org in the pkg-xorg subdirectory. Most upstream packages
are actually maintained in git repositories as well, so they often
just need to be pulled into git.debian.org in a "upstream-*" branch.
The .orig.tar.gz is upstream's mesa tarball.
While building from git, dpkg-source can complain about symlinks vs.
normal files mismatches. To work around this issue, before uploading,
and without committing:
find -type l | while read dest; do src=$(readlink -f $dest); rm $dest; cp $src $dest; done
The Debian packaging is added by creating the "debian-*" git branch
which contains the aforementioned "upstream-*" branch plus the debian/
repository files.
When a patch has to be applied to the Debian package, two solutions
are involved:
* If the patch is available in one of the upstream branches, it
may be git'cherry-picked into the Debian repository. In this
case, it appears directly in the .diff.gz.
* Otherwise, the patch is added to debian/patches/ which is managed
with quilt as documented in /usr/share/doc/quilt/README.source.
Thus, the patching system requires a build dependency on quilt.
Updating debian/upstream/signing-key.asc with new keys requires the following steps:
* fetch the key:
gpg [--keyserver $server] --recv-keys $keyid
* export it to the file:
gpg --export-options export-minimal --export -a $keyid >> debian/upstream/signing-key.asc

5494
debian/changelog vendored Normal file

File diff suppressed because it is too large Load Diff

451
debian/control vendored Normal file
View File

@ -0,0 +1,451 @@
Source: mesa
Section: graphics
Priority: optional
Maintainer: Ki'Sak <kisak.ppa@gmail.com>
XSBC-Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
Uploaders: Ki'Sak <kisak.ppa@gmail.com>
Standards-Version: 4.1.4
Build-Depends:
debhelper-compat (= 12),
directx-headers-dev (>= 1.602.0) [linux-amd64 linux-arm64],
glslang-tools [amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc64 x32],
meson (>= 0.45),
quilt (>= 0.63-8.2~),
pkg-config,
libdrm-dev (>= 2.4.110),
libx11-dev,
libxxf86vm-dev,
libexpat1-dev,
libsensors4-dev [!hurd-any],
libxfixes-dev,
libxext-dev,
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],
x11proto-dev,
linux-libc-dev (>= 2.6.31) [linux-any],
libx11-xcb-dev,
libxcb-dri2-0-dev (>= 1.8),
libxcb-glx0-dev (>= 1.8.1),
libxcb-xfixes0-dev,
libxcb-dri3-dev,
libxcb-present-dev,
libxcb-randr0-dev,
libxcb-shm0-dev,
libxcb-sync-dev,
libxrandr-dev,
libxshmfence-dev (>= 1.1),
libzstd-dev,
python3,
python3-mako,
python3-ply,
python3-setuptools,
flex,
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-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-15 [amd64 arm64 armel armhf mips64el mipsel ppc64el s390x],
libclc-15 [amd64 arm64 armel armhf mips64el mipsel ppc64el s390x],
libllvmspirvlib-15-dev [amd64 arm64 armel armhf mips64el mipsel ppc64el s390x],
Rules-Requires-Root: no
Vcs-Git: https://salsa.debian.org/xorg-team/lib/mesa.git
Vcs-Browser: https://salsa.debian.org/xorg-team/lib/mesa
Homepage: https://mesa3d.org/
Package: libxatracker2
Section: libs
Architecture: amd64 i386 x32
Depends:
${shlibs:Depends},
${misc:Depends},
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: same
Description: X acceleration library -- runtime
This package contains the XA (X acceleration) library. It is used exclusively
by the X server to do render, copy and video acceleration.
.
XA is intended to be used by the vmware driver for virtualized X acceleration.
Package: libxatracker-dev
Section: libdevel
Architecture: amd64 i386 x32
Depends:
libxatracker2 (= ${binary:Version}),
${misc:Depends},
Multi-Arch: same
Description: X acceleration library -- development files
This package contains the XA (X acceleration) library. It is used exclusively
by the X server to do render, copy and video acceleration.
.
XA is intended to be used by the vmware driver for virtualized X acceleration.
.
This package provides the development environment for compiling programs
against the xatracker library.
Package: libd3dadapter9-mesa
Section: libs
Architecture: amd64 arm64 armel armhf i386 powerpc
Depends:
${shlibs:Depends},
${misc:Depends},
libudev1 [linux-any],
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: same
Description: state-tracker for Direct3D9
This package contains a Gallium3D state tracker that implements the Direct3D9
API. Combined with the gallium-nine branch of Wine, programs using D3D9 can
achieve native (or better) graphics performance.
Package: libd3dadapter9-mesa-dev
Section: libdevel
Architecture: amd64 arm64 armel armhf i386 powerpc
Depends:
libd3dadapter9-mesa (= ${binary:Version}),
libudev1 [linux-any],
${misc:Depends},
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: same
Description: state-tracker for Direct3D9 -- development files
This package contains a Gallium3D state tracker that implements the Direct3D9
API. Combined with the gallium-nine branch of Wine, programs using D3D9 can
achieve native (or better) graphics performance.
.
Development files
Package: libgbm1
Section: libs
Architecture: linux-any kfreebsd-any
Depends:
${shlibs:Depends},
${misc:Depends},
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: same
Description: generic buffer management API -- runtime
This package contains the GBM buffer management library. It provides a
mechanism for allocating buffers for graphics rendering tied to Mesa.
.
GBM is intended to be used as a native platform for EGL on drm or openwfd.
Package: libgbm-dev
Section: libdevel
Architecture: linux-any kfreebsd-any
Depends:
libgbm1 (= ${binary:Version}),
${misc:Depends},
Multi-Arch: same
Description: generic buffer management API -- development files
This package contains the GBM buffer management library. It provides a
mechanism for allocating buffers for graphics rendering tied to Mesa.
.
GBM is intended to be used as a native platform for EGL on drm or openwfd.
.
This package provides the development environment for compiling programs
against the GBM library.
Package: libegl-mesa0
Section: libs
Architecture: any
Depends:
${shlibs:Depends},
${misc:Depends},
libgbm1 (= ${binary:Version}) [!hurd-any],
Provides: libegl-vendor
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: same
Description: free implementation of the EGL API -- Mesa vendor library
This package contains the EGL native platform graphics interface library.
EGL provides a platform-agnostic mechanism for creating rendering surfaces
for use with other graphics libraries, such as OpenGL|ES.
.
This package contains the Mesa vendor library for EGL.
Package: libegl1-mesa
Section: oldlibs
Architecture: any
Depends:
libegl1,
${misc:Depends},
Multi-Arch: same
Description: transitional dummy package
This is a transitional dummy package, it can be safely removed.
Package: libegl1-mesa-dev
Section: libdevel
Architecture: any
Depends:
libegl-dev,
libglvnd-dev,
${misc:Depends},
Multi-Arch: same
Description: free implementation of the EGL API -- development files
This package contains the development environment required for compiling
programs against EGL native platform graphics interface library.
EGL provides a platform-agnostic mechanism for creating rendering surfaces
for use with other graphics libraries, such as OpenGL|ES.
.
This package provides the development environment for compiling programs
against the EGL library.
Package: libwayland-egl1-mesa
Section: oldlibs
Architecture: linux-any
Depends:
${misc:Depends},
libegl1,
libwayland-egl1,
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: same
Description: transitional dummy package
This is a transitional dummy package, it can be safely removed.
Package: libgles2-mesa
Section: oldlibs
Architecture: any
Depends:
libgles2,
${misc:Depends},
Multi-Arch: same
Description: transitional dummy package
This is a transitional dummy package, it can be safely removed.
Package: libgles2-mesa-dev
Section: oldlibs
Architecture: any
Depends:
libgles-dev,
libglvnd-dev,
${misc:Depends},
Multi-Arch: same
Description: transitional dummy package
This is a transitional dummy package, it can be safely removed.
Package: libglapi-mesa
Section: libs
Architecture: any
Depends:
${shlibs:Depends},
${misc:Depends},
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: same
Description: free implementation of the GL API -- shared library
The Mesa GL API module is responsible for dispatching all the gl*
functions. It is intended to be mainly used by both the libgles1-mesa
and libgles2-mesa packages.
Package: libglx-mesa0
Section: libs
Architecture: any
Depends:
${shlibs:Depends},
${misc:Depends},
libgl1-mesa-dri,
Provides: libglx-vendor
Breaks:
libopengl-perl (<< 0.6704+dfsg-2),
glx-diversions (<< 0.8.4~),
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: same
Description: free implementation of the OpenGL API -- GLX vendor library
Mesa 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 authors make no claim that Mesa
is in any way a compatible replacement for OpenGL or associated with
Silicon Graphics, Inc.
.
This version of Mesa provides GLX and DRI capabilities: it is capable of
both direct and indirect rendering. For direct rendering, it can use DRI
modules from the libgl1-mesa-dri package to accelerate drawing.
.
This package does not include the modules themselves: these can be found
in the libgl1-mesa-dri package.
Package: libgl1-mesa-glx
Section: oldlibs
Architecture: any
Depends:
libgl1,
libglx-mesa0,
${misc:Depends},
Multi-Arch: same
Description: transitional dummy package
This is a transitional dummy package, it can be safely removed.
Package: libgl1-mesa-dri
Section: libs
Architecture: any
Pre-Depends: ${misc:Pre-Depends}
Depends:
${shlibs:Depends},
${misc:Depends}
Multi-Arch: same
Description: free implementation of the OpenGL API -- DRI modules
This version of Mesa provides GLX and DRI capabilities: it is capable of
both direct and indirect rendering. For direct rendering, it can use DRI
modules from the libgl1-mesa-dri package to accelerate drawing.
.
This package does not include the OpenGL library itself, only the DRI
modules for accelerating direct rendering.
.
For a complete description of Mesa, please look at the
libglx-mesa0 package.
Package: libgl1-mesa-dev
Section: oldlibs
Architecture: any
Depends:
libgl-dev,
libglvnd-dev,
${misc:Depends},
Multi-Arch: same
Description: transitional dummy package
This is a transitional dummy package, it can be safely removed.
Package: mesa-common-dev
Section: libdevel
Architecture: any
Depends:
libgl-dev,
libglx-dev,
libx11-dev,
libdrm-dev (>= 2.4.95) [!hurd-any],
${misc:Depends},
Breaks: libegl1-mesa-dev (<< 18.2.5-2)
Replaces: libegl1-mesa-dev (<< 18.2.5-2)
Multi-Arch: same
Description: Developer documentation for Mesa
This package includes the specifications for the Mesa-specific OpenGL
extensions, the complete set of release notes and the development header
files common to all Mesa packages.
Package: libosmesa6
Section: libs
Architecture: any
Depends:
${shlibs:Depends},
${misc:Depends},
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: same
Description: Mesa Off-screen rendering extension
OSmesa is a Mesa extension that allows programs to render to an
off-screen buffer using the OpenGL API without having to create a
rendering context on an X Server. It uses a pure software renderer.
.
This package provides both 16-bit and 32-bit versions of the off-screen
renderer which do not require external libraries to work.
Package: libosmesa6-dev
Section: libdevel
Architecture: any
Depends:
libosmesa6 (= ${binary:Version}),
mesa-common-dev (= ${binary:Version}) | libgl-dev,
${misc:Depends},
Conflicts: libosmesa-dev
Replaces: libosmesa-dev
Provides: libosmesa-dev
Multi-Arch: same
Description: Mesa Off-screen rendering extension -- development files
This package provides the required environment for developing programs
that use the off-screen rendering extension of Mesa.
.
For more information on OSmesa see the libosmesa6 package.
Package: mesa-va-drivers
Section: libs
Architecture: linux-any kfreebsd-any
Build-Profiles: <!pkg.mesa.nolibva>
Depends:
${shlibs:Depends},
${misc:Depends},
Enhances:
libva2,
Provides:
va-driver,
Breaks: vdpau-va-driver (<< 0.7.4-5)
Replaces: vdpau-va-driver (<< 0.7.4-5)
Multi-Arch: same
Pre-Depends: ${misc:Pre-Depends}
Description: Mesa VA-API video acceleration drivers
These libraries provide the Video Acceleration API (VA-API) for Unix.
They provide accelerated video playback (incl. H.264) and video
post-processing for the supported graphics cards.
.
This package enables support for VA-API for some gallium drivers.
Package: mesa-vdpau-drivers
Section: libs
Architecture: linux-any kfreebsd-any
Depends:
libvdpau1,
${shlibs:Depends},
${misc:Depends},
Enhances:
libvdpau1,
Provides:
vdpau-driver,
Multi-Arch: same
Pre-Depends: ${misc:Pre-Depends}
Description: Mesa VDPAU video acceleration drivers
These libraries provide the Video Decode and Presentation API for Unix.
They provide accelerated video playback (incl. H.264) and video
post-processing for the supported graphics cards.
.
This package enables support for VDPAU for some gallium drivers.
Package: mesa-vulkan-drivers
Section: libs
Architecture: amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc64 x32
Pre-Depends: ${misc:Pre-Depends}
Depends:
libvulkan1,
python3:any | python3-minimal:any,
${shlibs:Depends},
${misc:Depends}
Provides: vulkan-icd
Multi-Arch: same
Description: Mesa Vulkan graphics drivers
Vulkan is a low-overhead 3D graphics and compute API. This package
includes Vulkan drivers provided by the Mesa project.
Package: mesa-opencl-icd
Section: libs
Architecture: amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc64 x32
Pre-Depends: ${misc:Pre-Depends}
Depends:
libclc-15,
ocl-icd-libopencl1 | libopencl1,
${shlibs:Depends},
${misc:Depends},
Provides: opencl-icd
Multi-Arch: same
Description: free implementation of the OpenCL API -- ICD runtime
This package contains the mesa implementation of the OpenCL (Open Compute
Language) library, which is intended for use with an ICD loader. OpenCL
provides a standardized interface for computational analysis on graphical
processing units.
Package: mesa-drm-shim
Section: libs
Architecture: amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el s390x sparc64
Pre-Depends: ${misc:Pre-Depends}
Depends:
${shlibs:Depends},
${misc:Depends},
Multi-Arch: same
Description: DRM shim libraries
This package provides drm-shim libraries which can be used for testing DRM drivers when
none exists on the host
# vim: tw=0

451
debian/control.in vendored Normal file
View File

@ -0,0 +1,451 @@
Source: mesa
Section: graphics
Priority: optional
Maintainer: Ki'Sak <kisak.ppa@gmail.com>
XSBC-Original-Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
Uploaders: Ki'Sak <kisak.ppa@gmail.com>
Standards-Version: 4.1.4
Build-Depends:
debhelper-compat (= 12),
directx-headers-dev (>= 1.602.0) [linux-amd64 linux-arm64],
glslang-tools [@LLVM_ARCHS@],
meson (>= 0.45),
quilt (>= 0.63-8.2~),
pkg-config,
libdrm-dev (>= 2.4.110),
libx11-dev,
libxxf86vm-dev,
libexpat1-dev,
libsensors4-dev [!hurd-any],
libxfixes-dev,
libxext-dev,
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@],
x11proto-dev,
linux-libc-dev (>= 2.6.31) [linux-any],
libx11-xcb-dev,
libxcb-dri2-0-dev (>= 1.8),
libxcb-glx0-dev (>= 1.8.1),
libxcb-xfixes0-dev,
libxcb-dri3-dev,
libxcb-present-dev,
libxcb-randr0-dev,
libxcb-shm0-dev,
libxcb-sync-dev,
libxrandr-dev,
libxshmfence-dev (>= 1.1),
libzstd-dev,
python3,
python3-mako,
python3-ply,
python3-setuptools,
flex,
bison,
libelf-dev [@LLVM_ARCHS@],
libwayland-dev (>= 1.15.0) [linux-any],
libwayland-egl-backend-dev (>= 1.15.0) [linux-any],
llvm-@LLVM_VERSION@-dev [@LLVM_ARCHS@],
libclang-@LLVM_VERSION@-dev [@LLVM_ARCHS@],
libclang-cpp@LLVM_VERSION@-dev [@LLVM_ARCHS@],
libclc-@LLVM_VERSION@-dev [@LLVM_ARCHS@],
wayland-protocols (>= 1.24),
zlib1g-dev,
libglvnd-core-dev (>= 1.3.2),
valgrind [@VALGRIND_ARCHS@],
rustc [@RUSTICL_ARCHS@],
bindgen [@RUSTICL_ARCHS@],
llvm-spirv-@LLVM_VERSION@ [@RUSTICL_ARCHS@],
libclc-@LLVM_VERSION@ [@RUSTICL_ARCHS@],
libllvmspirvlib-@LLVM_VERSION@-dev [@RUSTICL_ARCHS@],
Rules-Requires-Root: no
Vcs-Git: https://salsa.debian.org/xorg-team/lib/mesa.git
Vcs-Browser: https://salsa.debian.org/xorg-team/lib/mesa
Homepage: https://mesa3d.org/
Package: libxatracker2
Section: libs
Architecture: amd64 i386 x32
Depends:
${shlibs:Depends},
${misc:Depends},
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: same
Description: X acceleration library -- runtime
This package contains the XA (X acceleration) library. It is used exclusively
by the X server to do render, copy and video acceleration.
.
XA is intended to be used by the vmware driver for virtualized X acceleration.
Package: libxatracker-dev
Section: libdevel
Architecture: amd64 i386 x32
Depends:
libxatracker2 (= ${binary:Version}),
${misc:Depends},
Multi-Arch: same
Description: X acceleration library -- development files
This package contains the XA (X acceleration) library. It is used exclusively
by the X server to do render, copy and video acceleration.
.
XA is intended to be used by the vmware driver for virtualized X acceleration.
.
This package provides the development environment for compiling programs
against the xatracker library.
Package: libd3dadapter9-mesa
Section: libs
Architecture: @WINE_ARCHS@
Depends:
${shlibs:Depends},
${misc:Depends},
libudev1 [linux-any],
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: same
Description: state-tracker for Direct3D9
This package contains a Gallium3D state tracker that implements the Direct3D9
API. Combined with the gallium-nine branch of Wine, programs using D3D9 can
achieve native (or better) graphics performance.
Package: libd3dadapter9-mesa-dev
Section: libdevel
Architecture: @WINE_ARCHS@
Depends:
libd3dadapter9-mesa (= ${binary:Version}),
libudev1 [linux-any],
${misc:Depends},
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: same
Description: state-tracker for Direct3D9 -- development files
This package contains a Gallium3D state tracker that implements the Direct3D9
API. Combined with the gallium-nine branch of Wine, programs using D3D9 can
achieve native (or better) graphics performance.
.
Development files
Package: libgbm1
Section: libs
Architecture: linux-any kfreebsd-any
Depends:
${shlibs:Depends},
${misc:Depends},
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: same
Description: generic buffer management API -- runtime
This package contains the GBM buffer management library. It provides a
mechanism for allocating buffers for graphics rendering tied to Mesa.
.
GBM is intended to be used as a native platform for EGL on drm or openwfd.
Package: libgbm-dev
Section: libdevel
Architecture: linux-any kfreebsd-any
Depends:
libgbm1 (= ${binary:Version}),
${misc:Depends},
Multi-Arch: same
Description: generic buffer management API -- development files
This package contains the GBM buffer management library. It provides a
mechanism for allocating buffers for graphics rendering tied to Mesa.
.
GBM is intended to be used as a native platform for EGL on drm or openwfd.
.
This package provides the development environment for compiling programs
against the GBM library.
Package: libegl-mesa0
Section: libs
Architecture: any
Depends:
${shlibs:Depends},
${misc:Depends},
libgbm1 (= ${binary:Version}) [!hurd-any],
Provides: libegl-vendor
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: same
Description: free implementation of the EGL API -- Mesa vendor library
This package contains the EGL native platform graphics interface library.
EGL provides a platform-agnostic mechanism for creating rendering surfaces
for use with other graphics libraries, such as OpenGL|ES.
.
This package contains the Mesa vendor library for EGL.
Package: libegl1-mesa
Section: oldlibs
Architecture: any
Depends:
libegl1,
${misc:Depends},
Multi-Arch: same
Description: transitional dummy package
This is a transitional dummy package, it can be safely removed.
Package: libegl1-mesa-dev
Section: libdevel
Architecture: any
Depends:
libegl-dev,
libglvnd-dev,
${misc:Depends},
Multi-Arch: same
Description: free implementation of the EGL API -- development files
This package contains the development environment required for compiling
programs against EGL native platform graphics interface library.
EGL provides a platform-agnostic mechanism for creating rendering surfaces
for use with other graphics libraries, such as OpenGL|ES.
.
This package provides the development environment for compiling programs
against the EGL library.
Package: libwayland-egl1-mesa
Section: oldlibs
Architecture: linux-any
Depends:
${misc:Depends},
libegl1,
libwayland-egl1,
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: same
Description: transitional dummy package
This is a transitional dummy package, it can be safely removed.
Package: libgles2-mesa
Section: oldlibs
Architecture: any
Depends:
libgles2,
${misc:Depends},
Multi-Arch: same
Description: transitional dummy package
This is a transitional dummy package, it can be safely removed.
Package: libgles2-mesa-dev
Section: oldlibs
Architecture: any
Depends:
libgles-dev,
libglvnd-dev,
${misc:Depends},
Multi-Arch: same
Description: transitional dummy package
This is a transitional dummy package, it can be safely removed.
Package: libglapi-mesa
Section: libs
Architecture: any
Depends:
${shlibs:Depends},
${misc:Depends},
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: same
Description: free implementation of the GL API -- shared library
The Mesa GL API module is responsible for dispatching all the gl*
functions. It is intended to be mainly used by both the libgles1-mesa
and libgles2-mesa packages.
Package: libglx-mesa0
Section: libs
Architecture: any
Depends:
${shlibs:Depends},
${misc:Depends},
libgl1-mesa-dri,
Provides: libglx-vendor
Breaks:
libopengl-perl (<< 0.6704+dfsg-2),
glx-diversions (<< 0.8.4~),
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: same
Description: free implementation of the OpenGL API -- GLX vendor library
Mesa 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 authors make no claim that Mesa
is in any way a compatible replacement for OpenGL or associated with
Silicon Graphics, Inc.
.
This version of Mesa provides GLX and DRI capabilities: it is capable of
both direct and indirect rendering. For direct rendering, it can use DRI
modules from the libgl1-mesa-dri package to accelerate drawing.
.
This package does not include the modules themselves: these can be found
in the libgl1-mesa-dri package.
Package: libgl1-mesa-glx
Section: oldlibs
Architecture: any
Depends:
libgl1,
libglx-mesa0,
${misc:Depends},
Multi-Arch: same
Description: transitional dummy package
This is a transitional dummy package, it can be safely removed.
Package: libgl1-mesa-dri
Section: libs
Architecture: any
Pre-Depends: ${misc:Pre-Depends}
Depends:
${shlibs:Depends},
${misc:Depends}
Multi-Arch: same
Description: free implementation of the OpenGL API -- DRI modules
This version of Mesa provides GLX and DRI capabilities: it is capable of
both direct and indirect rendering. For direct rendering, it can use DRI
modules from the libgl1-mesa-dri package to accelerate drawing.
.
This package does not include the OpenGL library itself, only the DRI
modules for accelerating direct rendering.
.
For a complete description of Mesa, please look at the
libglx-mesa0 package.
Package: libgl1-mesa-dev
Section: oldlibs
Architecture: any
Depends:
libgl-dev,
libglvnd-dev,
${misc:Depends},
Multi-Arch: same
Description: transitional dummy package
This is a transitional dummy package, it can be safely removed.
Package: mesa-common-dev
Section: libdevel
Architecture: any
Depends:
libgl-dev,
libglx-dev,
libx11-dev,
libdrm-dev (>= 2.4.95) [!hurd-any],
${misc:Depends},
Breaks: libegl1-mesa-dev (<< 18.2.5-2)
Replaces: libegl1-mesa-dev (<< 18.2.5-2)
Multi-Arch: same
Description: Developer documentation for Mesa
This package includes the specifications for the Mesa-specific OpenGL
extensions, the complete set of release notes and the development header
files common to all Mesa packages.
Package: libosmesa6
Section: libs
Architecture: any
Depends:
${shlibs:Depends},
${misc:Depends},
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: same
Description: Mesa Off-screen rendering extension
OSmesa is a Mesa extension that allows programs to render to an
off-screen buffer using the OpenGL API without having to create a
rendering context on an X Server. It uses a pure software renderer.
.
This package provides both 16-bit and 32-bit versions of the off-screen
renderer which do not require external libraries to work.
Package: libosmesa6-dev
Section: libdevel
Architecture: any
Depends:
libosmesa6 (= ${binary:Version}),
mesa-common-dev (= ${binary:Version}) | libgl-dev,
${misc:Depends},
Conflicts: libosmesa-dev
Replaces: libosmesa-dev
Provides: libosmesa-dev
Multi-Arch: same
Description: Mesa Off-screen rendering extension -- development files
This package provides the required environment for developing programs
that use the off-screen rendering extension of Mesa.
.
For more information on OSmesa see the libosmesa6 package.
Package: mesa-va-drivers
Section: libs
Architecture: linux-any kfreebsd-any
Build-Profiles: <!pkg.mesa.nolibva>
Depends:
${shlibs:Depends},
${misc:Depends},
Enhances:
libva2,
Provides:
va-driver,
Breaks: vdpau-va-driver (<< 0.7.4-5)
Replaces: vdpau-va-driver (<< 0.7.4-5)
Multi-Arch: same
Pre-Depends: ${misc:Pre-Depends}
Description: Mesa VA-API video acceleration drivers
These libraries provide the Video Acceleration API (VA-API) for Unix.
They provide accelerated video playback (incl. H.264) and video
post-processing for the supported graphics cards.
.
This package enables support for VA-API for some gallium drivers.
Package: mesa-vdpau-drivers
Section: libs
Architecture: linux-any kfreebsd-any
Depends:
libvdpau1,
${shlibs:Depends},
${misc:Depends},
Enhances:
libvdpau1,
Provides:
vdpau-driver,
Multi-Arch: same
Pre-Depends: ${misc:Pre-Depends}
Description: Mesa VDPAU video acceleration drivers
These libraries provide the Video Decode and Presentation API for Unix.
They provide accelerated video playback (incl. H.264) and video
post-processing for the supported graphics cards.
.
This package enables support for VDPAU for some gallium drivers.
Package: mesa-vulkan-drivers
Section: libs
Architecture: @LLVM_ARCHS@
Pre-Depends: ${misc:Pre-Depends}
Depends:
libvulkan1,
python3:any | python3-minimal:any,
${shlibs:Depends},
${misc:Depends}
Provides: vulkan-icd
Multi-Arch: same
Description: Mesa Vulkan graphics drivers
Vulkan is a low-overhead 3D graphics and compute API. This package
includes Vulkan drivers provided by the Mesa project.
Package: mesa-opencl-icd
Section: libs
Architecture: @LLVM_ARCHS@
Pre-Depends: ${misc:Pre-Depends}
Depends:
libclc-@LLVM_VERSION@,
ocl-icd-libopencl1 | libopencl1,
${shlibs:Depends},
${misc:Depends},
Provides: opencl-icd
Multi-Arch: same
Description: free implementation of the OpenCL API -- ICD runtime
This package contains the mesa implementation of the OpenCL (Open Compute
Language) library, which is intended for use with an ICD loader. OpenCL
provides a standardized interface for computational analysis on graphical
processing units.
Package: mesa-drm-shim
Section: libs
Architecture: amd64 arm64 armel armhf i386 mips64el mipsel powerpc ppc64 ppc64el s390x sparc64
Pre-Depends: ${misc:Pre-Depends}
Depends:
${shlibs:Depends},
${misc:Depends},
Multi-Arch: same
Description: DRM shim libraries
This package provides drm-shim libraries which can be used for testing DRM drivers when
none exists on the host
# vim: tw=0

365
debian/copyright vendored Normal file
View File

@ -0,0 +1,365 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: mesa
Source: https://mesa.freedesktop.org/archive/
Files: *
Copyright:
2005 Aapo Tahkola
2011 Adam Rak <adam.rak@streamnovation.com>
2014 Adrián Arroyo Calle <adrian.arroyocalle@gmail.com>
2010-2018 Advanced Micro Devices, Inc.
2002-2012 Apple Inc.
2009 Artur Wyszynski <harakash@gmail.com>
2000-2001 ATI Technologies Inc.
2015-2016 Axel Davy <axel.davy@ens.fr>
1988-2004 Bart Massey
2016 Bas Nieuwenhuizen
2011 Benjamin Franzke
2005-2008 Ben Skeggs
2015 Boyan Ding
1999-2016 Brian Paul
2014-2018 Broadcom
2011 Bryan Cain
2007 Carl Worth
2009-2011 Chia-I Wu <olvaffe@gmail.com>
2016 Christian Gmeiner <christian.gmeiner@gmail.com>
2010-2014 Christian König
2010-2012 Christoph Bumiller
2014-2017 Connor Abbott
2008-2010 Corbin Simpson
1999-2016 Dave Airlie
2008 Dennis Smit
2012-2017 Etnaviv Project
2003 Felix Kuehling
2009-2016 Francisco Jerez
2008-2010 George Sapountzis <gsapountzis@gmail.com>
2017 Gert Wollny
2013-2017 Google, Inc.
2017 Grazvydas Ignotas
2013 Gregory Hainaut <gregory.hainaut@gmail.com>
2002 Greg Parker
2013 Grigori Goronzy <greg@chown.ath.cx>
2008-2013 Haiku, Inc.
2002-2006 IBM Corporation
2011-2017 Ilia Mirkin
2006-2018 Intel Corporation
2007-2012 Jakob Bornecrantz
2017 Jason Ekstrand
2008-2010 Jerome Glisse <glisse@freedesktop.org>
2009-2013 Joakim Sindholt <opensource@zhasha.com>
2007 Joe Perches <joe@perches.com>
2006 John Maddock
2014-2017 Jon Turney
2008-2009 Jose Fonseca
1988-2017 Keith Packard
1997 Keith Whitwell
2011 Lauri Kasanen
2010 Luca Barbieri
2010-2013 LunarG, Inc.
2011-2013 Maarten Lankhorst
2008-2010 Maciej Cencora <m.cencora@gmail.com>
2010-2014 Marek Olšák <maraeo@gmail.com>
2011 Morgan Armand <morgan.devel@gmail.com>
2016 Nayan Deshmukh
2004-2009 Nicolai Haehnle <nhaehnle@gmail.com>
2007-2013 Nouveau Project
2012-2018 NVIDIA Corporation
2010 Orasanu Lucian
2015-2016 Patrick Rudolph <siro@das-labor.org>
2009 Pauli Nieminen
2006-2008 Philippe Houdoin
2015 Philip Taylor <philip@zaynar.co.uk>
1998-1999 Precision Insight, Inc.
2007-2018 Red Hat, Inc.
2018 Rhys Perry
2012-2018 Rob Clark <robclark@freedesktop.org>
2004 Roland Scheidegger
2015 Samuel Pitoiset
1991-2000 Silicon Graphics, Inc.
2018 Stefan Schake <stschake@gmail.com>
2003-2005 Stefan Gustavson
2008 Steven G. Johnson
2016 Steven Toth <stoth@kernellabs.com>
2011-2014 The Chromium OS authors
2007-2013 The Nouveau Project
2001-2004 The SCons Foundation
2002 The Weather Channel, Inc.
2006 Thierry Reding <thierry@gilfi.de>
2010 Thomas Balling Sörensen
2015-2017 Thomas Helland
1995 Thorsten Ohl
2013-2018 Timothy Arceri
2002 Todd C. Miller <Todd.Miller@courtesan.com>
2010-2014 Tom Stellard <tstellar@gmail.com>
2004 Torrey T. Lyons
2003-2008 Tungsten Graphics, Inc.
2012-2013 Vadim Girlin <vadimgirlin@gmail.com>
2000 VA Linux Systems Inc.
2015-2018 Valve Corporation
1998-2017 VMware, Inc.
1992 Vrije Universiteit, The Netherlands
1999 Wittawat Yamwong
2005 Zack Rusin
2015 Zoltan Gilian
2018-2021 Igalia S.L.
2017 Dylan Baker
License: MIT
Files: include/drm-uapi/etnaviv_drm.h
Copyright: 2015 Etnaviv Project
License: GPL-2
Files: include/drm-uapi/lima_drm.h
Copyright: 2017-2018 Qiang Yu <yuq825@gmail.com>
License: GPL-2 or MIT
Files: include/drm-uapi/sync_file.h
Copyright: 2012 Google, Inc.
License: GPL-1+
Files: include/EGL/eglextchromium.h
Copyright: 2013 The Chromium Authors
License: BSD-3-google
Files: include/GL/glcorearb.h
include/GL/glext.h
include/GL/glxext.h
Copyright: 2013-2017 The Khronos Group Inc.
License: Khronos
Files: include/GLES/egl.h
include/GLES/glplatform.h
include/GLES2/gl2platform.h
include/GLES3/gl3platform.h
include/vulkan/*
Copyright: 2015-2018 The Khronos Group Inc.
2015 The Android Open Source Project
2015-2016 Valve Corporation
License: Apache-2.0
Files: include/c11/*
Copyright: 2012 yohhoy
License: BSL
Files: src/gallium/auxiliary/postprocess/pp_mlaa*
Copyright: 2010 Jorge Jimenez (jorge@iryoku.com)
2010 Belen Masia (bmasia@unizar.es)
2010 Jose I. Echevarria (joseignacioechevarria@gmail.com)
2010 Fernando Navarro (fernandn@microsoft.com)
2010 Diego Gutierrez (diegog@unizar.es)
2011 Lauri Kasanen (cand@gmx.com)
License: MLAA
Files: src/glx/clientattrib.c
src/glx/compsize.c
src/glx/eval.c
src/glx/glxclient.h
src/glx/glxcmds.c
src/glx/glxcurrent.c
src/glx/glxext.c
src/glx/packrender.h
src/glx/packsingle.h
src/glx/pixel.c
src/glx/pixelstore.c
src/glx/render2.c
src/glx/renderpix.c
src/glx/single2.c
src/glx/singlepix.c
src/glx/vertarr.c
Copyright: 1991-2000 Silicon Graphics, Inc.
License: SGI
Files: src/getopt/*
Copyright: 2000 The NetBSD Foundation, Inc.
License: BSD-2-clause
Files: src/gtest/include/* src/gtest/src/*
Copyright: 2008-2015 Google, Inc.
License: BSD-3-google
Files: debian/*
Copyright: 2006, Thierry Reding <thierry@gilfi.de>
License: GPL
License: MIT
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
.
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
License: Khronos
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the following conditions:
.
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Materials.
.
THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
License: SGI
SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
.
The above copyright notice including the dates of first publication and
either this permission notice or a reference to
http://oss.sgi.com/projects/FreeB/
shall be included in all copies or substantial portions of the Software.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
.
Except as contained in this notice, the name of Silicon Graphics, Inc.
shall not be used in advertising or otherwise to promote the sale, use or
other dealings in this Software without prior written authorization from
Silicon Graphics, Inc.
License: Apache-2.0
On Debian systems, the full text of the Apache-2.0 license
can be found in the file '/usr/share/common-licenses/Apache-2.0'.
License: GPL-1+
On Debian systems, the full text of the GPL-1 license
can be found in the file '/usr/share/common-licenses/GPL-1'.
License: GPL-2
On Debian systems, the full text of the GPL-2 license
can be found in the file '/usr/share/common-licenses/GPL-2'.
License: BSL
Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare [[derivative work]]s of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:
.
The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
License: MLAA
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
.
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
.
2. Redistributions in binary form must reproduce the following statement:
.
"Uses Jimenez's MLAA. Copyright (C) 2010 by Jorge Jimenez, Belen Masia,
Jose I. Echevarria, Fernando Navarro and Diego Gutierrez."
.
Only for use in the Mesa project, this point 2 is filled by naming the
technique Jimenez's MLAA in the Mesa config options.
.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
License: GPL
On Debian systems, the full text of the GPL license
can be found in the file '/usr/share/common-licenses/GPL'.
License: BSD-3-google
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
.
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
License: BSD-2-clause
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
.
THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

4
debian/gbp.conf vendored Normal file
View File

@ -0,0 +1,4 @@
[DEFAULT]
debian-branch=debian-unstable
upstream-branch=upstream-unstable
upstream-tag=mesa-%(version)s

View File

@ -0,0 +1,5 @@
usr/lib/*/pkgconfig/d3d.pc
usr/include/d3dadapter/d3dadapter9.h
usr/include/d3dadapter/drm.h
usr/include/d3dadapter/present.h

1
debian/libd3dadapter9-mesa.install vendored Normal file
View File

@ -0,0 +1 @@
usr/lib/*/d3d/d3dadapter9.so*

2
debian/libegl-mesa0.install vendored Normal file
View File

@ -0,0 +1,2 @@
usr/lib/*/libEGL_mesa.so.0*
usr/share/glvnd/egl_vendor.d/50_mesa.json

2
debian/libegl-mesa0.symbols vendored Normal file
View File

@ -0,0 +1,2 @@
libEGL_mesa.so.0 libegl-mesa0 #MINVER#
__egl_Main@Base 17.0.0~

2
debian/libegl1-mesa-dev.install vendored Normal file
View File

@ -0,0 +1,2 @@
usr/include/EGL/eglmesaext.h
usr/include/EGL/eglext_angle.h

3
debian/libgbm-dev.install vendored Normal file
View File

@ -0,0 +1,3 @@
usr/lib/*/libgbm.so
usr/lib/*/pkgconfig/gbm.pc
usr/include/gbm.h

1
debian/libgbm1.install vendored Normal file
View File

@ -0,0 +1 @@
usr/lib/*/libgbm.so.1*

1
debian/libgbm1.lintian-overrides vendored Normal file
View File

@ -0,0 +1 @@
symbols-declares-dependency-on-other-package libgbm1-private

40
debian/libgbm1.symbols vendored Normal file
View File

@ -0,0 +1,40 @@
libgbm.so.1 libgbm1 #MINVER#
| libgbm1-private
gbm_bo_create@Base 7.11~1
gbm_bo_create_with_modifiers2@Base 21.3.0~rc1
gbm_bo_create_with_modifiers@Base 17.1.0~rc2
gbm_bo_destroy@Base 7.11~1
gbm_bo_get_bpp@Base 17.3.0~rc1
gbm_bo_get_device@Base 8.1~0
gbm_bo_get_fd@Base 10.2~0
gbm_bo_get_fd_for_plane@Base 21.1.0
gbm_bo_get_format@Base 8.1~0
gbm_bo_get_handle@Base 7.11~1
gbm_bo_get_handle_for_plane@Base 17.1.0~rc2
gbm_bo_get_height@Base 7.11~1
gbm_bo_get_modifier@Base 17.1.0~rc2
gbm_bo_get_offset@Base 17.1.0~rc2
gbm_bo_get_plane_count@Base 17.1.0~rc2
gbm_bo_get_stride@Base 8.1~0
gbm_bo_get_stride_for_plane@Base 17.1.0~rc2
gbm_bo_get_user_data@Base 8.1~0
gbm_bo_get_width@Base 7.11~1
gbm_bo_import@Base 8.1~0
gbm_bo_map@Base 12.0.0~0
gbm_bo_set_user_data@Base 8.1~0
gbm_bo_unmap@Base 12.0.0~0
gbm_bo_write@Base 8.1~0
gbm_create_device@Base 7.11~1
gbm_device_destroy@Base 7.11~1
gbm_device_get_backend_name@Base 7.11~1
gbm_device_get_fd@Base 7.11~1
gbm_device_get_format_modifier_plane_count@Base 17.3.0~rc1
gbm_device_is_format_supported@Base 8.1~0
gbm_format_get_name@Base 19.0.0~rc5
gbm_surface_create@Base 8.1~0
gbm_surface_create_with_modifiers2@Base 21.3.0~rc1
gbm_surface_create_with_modifiers@Base 17.1.0~rc2
gbm_surface_destroy@Base 8.1~0
gbm_surface_has_free_buffers@Base 8.1~0
gbm_surface_lock_front_buffer@Base 8.1~0
gbm_surface_release_buffer@Base 8.1~0

1
debian/libgl1-mesa-dri.install vendored Normal file
View File

@ -0,0 +1 @@
usr/share/drirc.d/00-mesa-defaults.conf

1
debian/libgl1-mesa-dri.maintscript vendored Normal file
View File

@ -0,0 +1 @@
rm_conffile /etc/drirc 19.0.3-1~

1
debian/libglapi-mesa.install vendored Normal file
View File

@ -0,0 +1 @@
usr/lib/*/libglapi.so.0*

View File

@ -0,0 +1 @@
package-name-doesnt-match-sonames libglapi0

1
debian/libglx-mesa0.install vendored Normal file
View File

@ -0,0 +1 @@
usr/lib/*/libGLX_mesa.so.*

1
debian/libglx-mesa0.links.in vendored Normal file
View File

@ -0,0 +1 @@
usr/lib/${DEB_HOST_MULTIARCH}/libGLX_mesa.so.0 usr/lib/${DEB_HOST_MULTIARCH}/libGLX_indirect.so.0

1300
debian/libglx-mesa0.symbols vendored Normal file

File diff suppressed because it is too large Load Diff

6
debian/libglx-mesa0.symbols.hurd vendored Normal file
View File

@ -0,0 +1,6 @@
libGLX_mesa.so.0 libglx-mesa0
__glx_Main@Base 17.0.0~
glAreTexturesResidentEXT@Base 0
glDeleteTexturesEXT@Base 0
glGenTexturesEXT@Base 0
glIsTextureEXT@Base 0

3
debian/libosmesa6-dev.install vendored Normal file
View File

@ -0,0 +1,3 @@
usr/include/GL/osmesa.h
usr/lib/*/libOSMesa.so
usr/lib/*/pkgconfig/osmesa.pc

1
debian/libosmesa6.install vendored Normal file
View File

@ -0,0 +1 @@
usr/lib/*/libOSMesa.so.*

1
debian/libosmesa6.links.in vendored Normal file
View File

@ -0,0 +1 @@
usr/lib/${DEB_HOST_MULTIARCH}/libOSMesa.so.8 usr/lib/${DEB_HOST_MULTIARCH}/libOSMesa.so.6

1
debian/libosmesa6.lintian-overrides vendored Normal file
View File

@ -0,0 +1 @@
package-name-doesnt-match-sonames libOSMesa8

1
debian/libosmesa6.shlibs vendored Normal file
View File

@ -0,0 +1 @@
libOSMesa 8 libosmesa6 (>= 10.2~)

5
debian/libxatracker-dev.install vendored Normal file
View File

@ -0,0 +1,5 @@
usr/lib/*/libxatracker.so
usr/lib/*/pkgconfig/xatracker.pc
usr/include/xa_composite.h
usr/include/xa_context.h
usr/include/xa_tracker.h

1
debian/libxatracker2.install vendored Normal file
View File

@ -0,0 +1 @@
usr/lib/*/libxatracker.so.2*

35
debian/libxatracker2.symbols vendored Normal file
View File

@ -0,0 +1,35 @@
libxatracker.so.2 libxatracker2 #MINVER#
xa_composite_allocation@Base 0
xa_composite_check_accelerated@Base 0
xa_composite_done@Base 0
xa_composite_prepare@Base 0
xa_composite_rect@Base 0
xa_context_create@Base 0
xa_context_default@Base 0
xa_context_destroy@Base 0
xa_context_flush@Base 0
xa_copy@Base 0
xa_copy_done@Base 0
xa_copy_prepare@Base 0
xa_fence_destroy@Base 0
xa_fence_get@Base 0
xa_fence_wait@Base 0
xa_format_check_supported@Base 0
xa_solid@Base 0
xa_solid_done@Base 0
xa_solid_prepare@Base 0
xa_surface_create@Base 0
xa_surface_dma@Base 0
xa_surface_format@Base 0
xa_surface_from_handle2@Base 11.1.0~
xa_surface_from_handle@Base 0
xa_surface_handle@Base 0
xa_surface_map@Base 0
xa_surface_redefine@Base 0
xa_surface_ref@Base 0
xa_surface_unmap@Base 0
xa_surface_unref@Base 0
xa_tracker_create@Base 0
xa_tracker_destroy@Base 0
xa_tracker_version@Base 0
xa_yuv_planar_blit@Base 0

1
debian/local/control vendored Normal file
View File

@ -0,0 +1 @@
report-with: xserver-xorg xserver-xorg-core

26
debian/local/script vendored Normal file
View File

@ -0,0 +1,26 @@
#!/bin/sh
SERVER_BUG_SCRIPT=/usr/share/bug/xserver-xorg-core/script
exec >&3
echo "glxinfo:"
echo "--------"
if [ -z "$DISPLAY" ]; then
echo "DISPLAY is not set."
else
if which glxinfo >/dev/null 2>&1; then
glxinfo
else
echo "glxinfo is not available (missing mesa-utils package)."
fi
fi
echo
if [ -x "$SERVER_BUG_SCRIPT" ]; then
$SERVER_BUG_SCRIPT 3>&1
else
echo "$SERVER_BUG_SCRIPT not available"
fi

4
debian/mesa-common-dev.docs vendored Normal file
View File

@ -0,0 +1,4 @@
docs/*.rst
docs/relnotes/*
docs/_extra/specs/*.spec
docs/_extra/specs/OLD/*.spec

2
debian/mesa-common-dev.install vendored Normal file
View File

@ -0,0 +1,2 @@
usr/include/GL/internal/dri_interface.h
usr/lib/*/pkgconfig/dri.pc

1
debian/mesa-drm-shim.install vendored Normal file
View File

@ -0,0 +1 @@
usr/lib/*/lib*_drm_shim.so

3
debian/mesa-opencl-icd.install vendored Normal file
View File

@ -0,0 +1,3 @@
etc/OpenCL/vendors/mesa.icd
usr/lib/*/gallium-pipe/*.so
usr/lib/*/libMesaOpenCL*

View File

@ -0,0 +1,2 @@
package-name-doesnt-match-sonames libMesaOpenCL1
package-name-doesnt-match-sonames libRusticlOpenCL

9
debian/mesa-vulkan-drivers.install vendored Normal file
View File

@ -0,0 +1,9 @@
usr/bin/mesa-overlay-control.py
#dozen usr/bin/spirv2dxil
usr/share/drirc.d/00-radv-defaults.conf
usr/share/vulkan/explicit_layer.d/*.json
usr/share/vulkan/icd.d/*.json
usr/share/vulkan/implicit_layer.d/*.json
usr/lib/*/libvulkan_*.so
usr/lib/*/libVkLayer_*.so
#dozen usr/lib/*/libspirv_to_dxil.*

View File

@ -0,0 +1,3 @@
package-name-doesnt-match-sonames libvulkan-intel libvulkan-radeon
shlib-without-versioned-soname usr/lib/*/libvulkan_intel.so libvulkan_intel.so
shlib-without-versioned-soname usr/lib/*/libvulkan_radeon.so libvulkan_radeon.so

1
debian/mesa-vulkan-drivers.triggers vendored Normal file
View File

@ -0,0 +1 @@
activate-noawait ldconfig

View File

@ -0,0 +1,42 @@
From add3b34c171821804049084cf9d252a72cc54e2b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timur=20Krist=C3=B3f?= <timur.kristof@gmail.com>
Date: Tue, 11 Apr 2023 13:59:49 +0200
Subject: radv/amdgpu: Remove unnecessary assertions from chaining.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
These used to guard against chaining on GFX6 and on HW IP types
that don't support chaining, but these things are now guarded
elsewhere and these assertions are no longer necessary.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22406>
---
src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
index 7107fc0b896..1b8f9b86c34 100644
--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
+++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
@@ -482,7 +482,6 @@ radv_amdgpu_cs_unchain(struct radeon_cmdbuf *cs)
return;
assert(cs->cdw <= cs->max_dw + 4);
- assert(get_nop_packet(acs) == PKT3_NOP_PAD); /* Other shouldn't chain. */
acs->chained_to = NULL;
cs->buf[cs->cdw - 4] = PKT3_NOP_PAD;
@@ -511,7 +510,6 @@ radv_amdgpu_cs_chain(struct radeon_cmdbuf *cs, struct radeon_cmdbuf *next_cs, bo
return false;
assert(cs->cdw <= cs->max_dw + 4);
- assert(get_nop_packet(acs) == PKT3_NOP_PAD); /* Other shouldn't chain. */
acs->chained_to = next_acs;
--
cgit v1.2.1

View File

@ -0,0 +1,33 @@
From 0e7244ce1848978022cb6f24683eb2cfdfd7fbbb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timur=20Krist=C3=B3f?= <timur.kristof@gmail.com>
Date: Tue, 11 Apr 2023 02:29:38 +0200
Subject: radv: Disallow IB2 on GFX6 when using draw_indirect_multi.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
GFX6 has the same problem as GFX7 here.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22406>
---
src/amd/vulkan/radv_cmd_buffer.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index 8eae45769ab..cb031b95173 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -7498,7 +7498,7 @@ radv_CmdExecuteCommands(VkCommandBuffer commandBuffer, uint32_t commandBufferCou
RADV_FROM_HANDLE(radv_cmd_buffer, secondary, pCmdBuffers[i]);
bool allow_ib2 = true;
- if (secondary->device->physical_device->rad_info.gfx_level == GFX7 &&
+ if (secondary->device->physical_device->rad_info.gfx_level <= GFX7 &&
secondary->state.uses_draw_indirect_multi) {
/* Do not launch an IB2 for secondary command buffers that contain
* DRAW_{INDEX}_INDIRECT_MULTI on GFX7 because it's illegal and hang the GPU.
--
cgit v1.2.1

View File

@ -0,0 +1,36 @@
From d6518fd3571e315a7a7e62af5e1abbfdb3a3b97b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timur=20Krist=C3=B3f?= <timur.kristof@gmail.com>
Date: Tue, 11 Apr 2023 02:30:10 +0200
Subject: radv: Use IB BOs (chaining) by default on GFX6.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
GFX6 supports IB chaining since the PFP firmware version 20.
Note that the very first amdgpu firmware for GFX6 already had
version 29, so we can assume that all GPUs supported by RADV
have this feature.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22406>
---
src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c
index ec85e7249c4..c944d2d422e 100644
--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c
+++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c
@@ -62,7 +62,7 @@ do_winsys_init(struct radv_amdgpu_winsys *ws, int fd)
ws->info.ip[AMD_IP_SDMA].num_queues = MIN2(ws->info.ip[AMD_IP_SDMA].num_queues, MAX_RINGS_PER_TYPE);
ws->info.ip[AMD_IP_COMPUTE].num_queues = MIN2(ws->info.ip[AMD_IP_COMPUTE].num_queues, MAX_RINGS_PER_TYPE);
- ws->use_ib_bos = ws->info.gfx_level >= GFX7;
+ ws->use_ib_bos = true;
return true;
}
--
cgit v1.2.1

View File

@ -0,0 +1,46 @@
From 7ddac41f3f5919be748143d8a570cc3b1f4ed27c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timur=20Krist=C3=B3f?= <timur.kristof@gmail.com>
Date: Tue, 11 Apr 2023 02:31:28 +0200
Subject: radv: Chain command buffers on GFX6 in radv_queue.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Also don't check whether chaining is enabled in radv_queue, the
winsys will take care of that anyway.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22406>
---
src/amd/vulkan/radv_queue.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/src/amd/vulkan/radv_queue.c b/src/amd/vulkan/radv_queue.c
index 0823e545a19..e00d448ed18 100644
--- a/src/amd/vulkan/radv_queue.c
+++ b/src/amd/vulkan/radv_queue.c
@@ -1693,9 +1693,6 @@ radv_queue_submit_normal(struct radv_queue *queue, struct vk_queue_submit *submi
.uses_shadow_regs = queue->state.uses_shadow_regs,
};
- const bool chaining_en = !(queue->device->instance->debug_flags & RADV_DEBUG_NO_IBS) &&
- queue->device->physical_device->rad_info.gfx_level >= GFX7;
-
for (uint32_t j = 0, advance; j < cmd_buffer_count; j += advance) {
advance = MIN2(max_cs_submission, cmd_buffer_count - j);
const bool last_submit = j + advance == cmd_buffer_count;
@@ -1714,8 +1711,8 @@ radv_queue_submit_normal(struct radv_queue *queue, struct vk_queue_submit *submi
struct radv_cmd_buffer *cmd_buffer =
(struct radv_cmd_buffer *)submission->command_buffers[j + c];
assert(cmd_buffer->vk.level == VK_COMMAND_BUFFER_LEVEL_PRIMARY);
- const bool can_chain_next = chaining_en && !(cmd_buffer->usage_flags &
- VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT);
+ const bool can_chain_next =
+ !(cmd_buffer->usage_flags & VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT);
/* ACE needs to be first because the last CS must match the queue's IP type. */
if (radv_cmd_buffer_needs_ace(cmd_buffer)) {
--
cgit v1.2.1

View File

@ -0,0 +1,153 @@
From 948a122f300b3df036fea1a8e14301295062e360 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timur=20Krist=C3=B3f?= <timur.kristof@gmail.com>
Date: Thu, 13 Apr 2023 17:23:40 +0200
Subject: amd: Rename INDIRECT_BUFFER_CIK to just INDIRECT_BUFFER.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This packet is supported on GFX6 too, its name should relect that.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22406>
---
src/amd/common/ac_debug.c | 2 +-
src/amd/common/sid.h | 2 +-
src/amd/vulkan/radv_cmd_buffer.c | 6 +++---
src/amd/vulkan/radv_cp_reg_shadowing.c | 2 +-
src/amd/vulkan/radv_queue.c | 2 +-
src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c | 6 +++---
src/gallium/winsys/amdgpu/drm/amdgpu_cs.c | 2 +-
7 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/src/amd/common/ac_debug.c b/src/amd/common/ac_debug.c
index 9c0d9436f48..3503ff23f5c 100644
--- a/src/amd/common/ac_debug.c
+++ b/src/amd/common/ac_debug.c
@@ -449,7 +449,7 @@ static void ac_parse_packet3(FILE *f, uint32_t header, struct ac_ib_parser *ib,
break;
case PKT3_INDIRECT_BUFFER_SI:
case PKT3_INDIRECT_BUFFER_CONST:
- case PKT3_INDIRECT_BUFFER_CIK: {
+ case PKT3_INDIRECT_BUFFER: {
uint32_t base_lo_dw = ac_ib_get(ib);
ac_dump_reg(f, ib->gfx_level, ib->family, R_3F0_IB_BASE_LO, base_lo_dw, ~0);
uint32_t base_hi_dw = ac_ib_get(ib);
diff --git a/src/amd/common/sid.h b/src/amd/common/sid.h
index 5bc60316c82..0c860c1acbd 100644
--- a/src/amd/common/sid.h
+++ b/src/amd/common/sid.h
@@ -132,7 +132,7 @@
#define WAIT_REG_MEM_MEM_SPACE(x) (((unsigned)(x)&0x3) << 4)
#define WAIT_REG_MEM_PFP (1 << 8)
#define PKT3_MEM_WRITE 0x3D /* GFX6 only */
-#define PKT3_INDIRECT_BUFFER_CIK 0x3F /* GFX7+ */
+#define PKT3_INDIRECT_BUFFER 0x3F /* GFX6+ */
#define PKT3_COPY_DATA 0x40
#define COPY_DATA_SRC_SEL(x) ((x)&0xf)
#define COPY_DATA_REG 0
diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index cb031b95173..343cd6ca9f8 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -9509,7 +9509,7 @@ radv_CmdExecuteGeneratedCommandsNV(VkCommandBuffer commandBuffer, VkBool32 isPre
return;
/* Secondary command buffers are needed for the full extension but can't use
- * PKT3_INDIRECT_BUFFER_CIK.
+ * PKT3_INDIRECT_BUFFER.
*/
assert(cmd_buffer->vk.level == VK_COMMAND_BUFFER_LEVEL_PRIMARY);
@@ -9539,7 +9539,7 @@ radv_CmdExecuteGeneratedCommandsNV(VkCommandBuffer commandBuffer, VkBool32 isPre
radeon_emit(cmd_buffer->cs, 0);
if (!view_mask) {
- radeon_emit(cmd_buffer->cs, PKT3(PKT3_INDIRECT_BUFFER_CIK, 2, 0));
+ radeon_emit(cmd_buffer->cs, PKT3(PKT3_INDIRECT_BUFFER, 2, 0));
radeon_emit(cmd_buffer->cs, va);
radeon_emit(cmd_buffer->cs, va >> 32);
radeon_emit(cmd_buffer->cs, cmdbuf_size >> 2);
@@ -9547,7 +9547,7 @@ radv_CmdExecuteGeneratedCommandsNV(VkCommandBuffer commandBuffer, VkBool32 isPre
u_foreach_bit (view, view_mask) {
radv_emit_view_index(cmd_buffer, view);
- radeon_emit(cmd_buffer->cs, PKT3(PKT3_INDIRECT_BUFFER_CIK, 2, 0));
+ radeon_emit(cmd_buffer->cs, PKT3(PKT3_INDIRECT_BUFFER, 2, 0));
radeon_emit(cmd_buffer->cs, va);
radeon_emit(cmd_buffer->cs, va >> 32);
radeon_emit(cmd_buffer->cs, cmdbuf_size >> 2);
diff --git a/src/amd/vulkan/radv_cp_reg_shadowing.c b/src/amd/vulkan/radv_cp_reg_shadowing.c
index 3f46b7c1619..dac9411c03b 100644
--- a/src/amd/vulkan/radv_cp_reg_shadowing.c
+++ b/src/amd/vulkan/radv_cp_reg_shadowing.c
@@ -112,7 +112,7 @@ radv_emit_shadow_regs_preamble(struct radeon_cmdbuf *cs, const struct radv_devic
struct radv_queue_state *queue_state)
{
uint64_t va = radv_buffer_get_va(queue_state->shadow_regs_ib);
- radeon_emit(cs, PKT3(PKT3_INDIRECT_BUFFER_CIK, 2, 0));
+ radeon_emit(cs, PKT3(PKT3_INDIRECT_BUFFER, 2, 0));
radeon_emit(cs, va);
radeon_emit(cs, va >> 32);
radeon_emit(cs, queue_state->shadow_regs_ib_size_dw & 0xffff);
diff --git a/src/amd/vulkan/radv_queue.c b/src/amd/vulkan/radv_queue.c
index e00d448ed18..b28797547be 100644
--- a/src/amd/vulkan/radv_queue.c
+++ b/src/amd/vulkan/radv_queue.c
@@ -828,7 +828,7 @@ radv_init_graphics_state(struct radeon_cmdbuf *cs, struct radv_device *device)
if (device->gfx_init) {
uint64_t va = radv_buffer_get_va(device->gfx_init);
- radeon_emit(cs, PKT3(PKT3_INDIRECT_BUFFER_CIK, 2, 0));
+ radeon_emit(cs, PKT3(PKT3_INDIRECT_BUFFER, 2, 0));
radeon_emit(cs, va);
radeon_emit(cs, va >> 32);
radeon_emit(cs, device->gfx_init_size_dw & 0xffff);
diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
index 1b8f9b86c34..1caa359ebe6 100644
--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
+++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
@@ -372,7 +372,7 @@ radv_amdgpu_cs_grow(struct radeon_cmdbuf *_cs, size_t min_size)
cs->ws->base.cs_add_buffer(&cs->base, cs->ib_buffer);
if (cs->use_ib) {
- radeon_emit(&cs->base, PKT3(PKT3_INDIRECT_BUFFER_CIK, 2, 0));
+ radeon_emit(&cs->base, PKT3(PKT3_INDIRECT_BUFFER, 2, 0));
radeon_emit(&cs->base, radv_amdgpu_winsys_bo(cs->ib_buffer)->base.va);
radeon_emit(&cs->base, radv_amdgpu_winsys_bo(cs->ib_buffer)->base.va >> 32);
radeon_emit(&cs->base, S_3F2_CHAIN(1) | S_3F2_VALID(1));
@@ -513,7 +513,7 @@ radv_amdgpu_cs_chain(struct radeon_cmdbuf *cs, struct radeon_cmdbuf *next_cs, bo
acs->chained_to = next_acs;
- cs->buf[cs->cdw - 4] = PKT3(PKT3_INDIRECT_BUFFER_CIK, 2, 0);
+ cs->buf[cs->cdw - 4] = PKT3(PKT3_INDIRECT_BUFFER, 2, 0);
cs->buf[cs->cdw - 3] = next_acs->ib.ib_mc_address;
cs->buf[cs->cdw - 2] = next_acs->ib.ib_mc_address >> 32;
cs->buf[cs->cdw - 1] =
@@ -667,7 +667,7 @@ radv_amdgpu_cs_execute_secondary(struct radeon_cmdbuf *_parent, struct radeon_cm
radv_amdgpu_cs_grow(&parent->base, 4);
/* Not setting the CHAIN bit will launch an IB2. */
- radeon_emit(&parent->base, PKT3(PKT3_INDIRECT_BUFFER_CIK, 2, 0));
+ radeon_emit(&parent->base, PKT3(PKT3_INDIRECT_BUFFER, 2, 0));
radeon_emit(&parent->base, child->ib.ib_mc_address);
radeon_emit(&parent->base, child->ib.ib_mc_address >> 32);
radeon_emit(&parent->base, child->ib.size);
diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c
index 8ecd79df109..8916002cad4 100644
--- a/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c
+++ b/src/gallium/winsys/amdgpu/drm/amdgpu_cs.c
@@ -1148,7 +1148,7 @@ static bool amdgpu_cs_check_space(struct radeon_cmdbuf *rcs, unsigned dw)
while ((rcs->current.cdw & ib_pad_dw_mask) != ib_pad_dw_mask - 3)
radeon_emit(rcs, PKT3_NOP_PAD);
- radeon_emit(rcs, PKT3(PKT3_INDIRECT_BUFFER_CIK, 2, 0));
+ radeon_emit(rcs, PKT3(PKT3_INDIRECT_BUFFER, 2, 0));
radeon_emit(rcs, va);
radeon_emit(rcs, va >> 32);
uint32_t *new_ptr_ib_size = &rcs->current.buf[rcs->current.cdw++];
--
cgit v1.2.1

View File

@ -0,0 +1,69 @@
From d16d9ef34550da313bbb45e5782136d6bb3b5964 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timur=20Krist=C3=B3f?= <timur.kristof@gmail.com>
Date: Mon, 17 Apr 2023 16:13:16 +0200
Subject: radv: Simplify IB2 workaround.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Move compute IB2 check to the winsys, because IB2 only works on
GFX queues and not any other queue types.
Then, simplify the workaround condition in the cmd buffer.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Tatsuyuki Ishi <ishitatsuyuki@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22533>
---
src/amd/vulkan/radv_cmd_buffer.c | 19 ++++++-------------
src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c | 2 +-
2 files changed, 7 insertions(+), 14 deletions(-)
diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index 5cc066e7e65..6de52df3ef7 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -7503,20 +7503,13 @@ radv_CmdExecuteCommands(VkCommandBuffer commandBuffer, uint32_t commandBufferCou
for (uint32_t i = 0; i < commandBufferCount; i++) {
RADV_FROM_HANDLE(radv_cmd_buffer, secondary, pCmdBuffers[i]);
- bool allow_ib2 = true;
- if (secondary->device->physical_device->rad_info.gfx_level <= GFX7 &&
- secondary->state.uses_draw_indirect_multi) {
- /* Do not launch an IB2 for secondary command buffers that contain
- * DRAW_{INDEX}_INDIRECT_MULTI on GFX7 because it's illegal and hang the GPU.
- */
- allow_ib2 = false;
- }
-
- if (secondary->qf == RADV_QUEUE_COMPUTE) {
- /* IB2 packets are not supported on compute queues according to PAL. */
- allow_ib2 = false;
- }
+ /* Do not launch an IB2 for secondary command buffers that contain
+ * DRAW_{INDEX}_INDIRECT_MULTI on GFX7 because it's illegal and hang the GPU.
+ */
+ const bool allow_ib2 =
+ !secondary->state.uses_draw_indirect_multi ||
+ secondary->device->physical_device->rad_info.gfx_level >= GFX8;
primary->scratch_size_per_wave_needed =
MAX2(primary->scratch_size_per_wave_needed, secondary->scratch_size_per_wave_needed);
diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
index 1b007557571..ee2108bc4a4 100644
--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
+++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
@@ -648,7 +648,7 @@ radv_amdgpu_cs_execute_secondary(struct radeon_cmdbuf *_parent, struct radeon_cm
struct radv_amdgpu_cs *parent = radv_amdgpu_cs(_parent);
struct radv_amdgpu_cs *child = radv_amdgpu_cs(_child);
struct radv_amdgpu_winsys *ws = parent->ws;
- bool use_ib2 = parent->use_ib && allow_ib2;
+ const bool use_ib2 = parent->use_ib && allow_ib2 && parent->hw_ip == AMD_IP_GFX;
if (parent->status != VK_SUCCESS || child->status != VK_SUCCESS)
return;
--
cgit v1.2.1

View File

@ -0,0 +1,34 @@
From 46a14390d8bcb7e91620f94f9d7bde2dc449190d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timur=20Krist=C3=B3f?= <timur.kristof@gmail.com>
Date: Tue, 18 Apr 2023 12:56:04 +0200
Subject: radv: Remove IB2 workaround from mesh shader draws.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The GPUs which need the workaround do not support mesh shaders.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Tatsuyuki Ishi <ishitatsuyuki@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22533>
---
src/amd/vulkan/radv_cmd_buffer.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index 6de52df3ef7..e85e1fd9544 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -8115,8 +8115,6 @@ radv_cs_emit_indirect_mesh_draw_packet(struct radv_cmd_buffer *cmd_buffer, uint3
radeon_emit(cs, count_va >> 32);
radeon_emit(cs, stride);
radeon_emit(cs, V_0287F0_DI_SRC_SEL_AUTO_INDEX);
-
- cmd_buffer->state.uses_draw_indirect_multi = true;
}
ALWAYS_INLINE static void
--
cgit v1.2.1

View File

@ -0,0 +1,67 @@
From acce5c3fe1fa2930adb6cdc152f3c371b1d24290 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timur=20Krist=C3=B3f?= <timur.kristof@gmail.com>
Date: Tue, 18 Apr 2023 12:59:33 +0200
Subject: radv: Enable IB2 workaround on all indirect draws.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
IB2 packets hang GFX6 when they contain any indirect draws,
not just the MULTI versions.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Tatsuyuki Ishi <ishitatsuyuki@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22533>
---
src/amd/vulkan/radv_cmd_buffer.c | 8 ++++----
src/amd/vulkan/radv_private.h | 4 ++--
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index e85e1fd9544..541454c8f2d 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -7505,10 +7505,10 @@ radv_CmdExecuteCommands(VkCommandBuffer commandBuffer, uint32_t commandBufferCou
RADV_FROM_HANDLE(radv_cmd_buffer, secondary, pCmdBuffers[i]);
/* Do not launch an IB2 for secondary command buffers that contain
- * DRAW_{INDEX}_INDIRECT_MULTI on GFX7 because it's illegal and hang the GPU.
+ * DRAW_{INDEX}_INDIRECT_{MULTI} on GFX6-7 because it's illegal and hangs the GPU.
*/
const bool allow_ib2 =
- !secondary->state.uses_draw_indirect_multi ||
+ !secondary->state.uses_draw_indirect ||
secondary->device->physical_device->rad_info.gfx_level >= GFX8;
primary->scratch_size_per_wave_needed =
@@ -8073,9 +8073,9 @@ radv_cs_emit_indirect_draw_packet(struct radv_cmd_buffer *cmd_buffer, bool index
radeon_emit(cs, count_va >> 32);
radeon_emit(cs, stride); /* stride */
radeon_emit(cs, di_src_sel);
-
- cmd_buffer->state.uses_draw_indirect_multi = true;
}
+
+ cmd_buffer->state.uses_draw_indirect = true;
}
ALWAYS_INLINE static void
diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h
index f0fea917c91..981d6694254 100644
--- a/src/amd/vulkan/radv_private.h
+++ b/src/amd/vulkan/radv_private.h
@@ -1657,8 +1657,8 @@ struct radv_cmd_state {
uint8_t cb_mip[MAX_RTS];
- /* Whether DRAW_{INDEX}_INDIRECT_MULTI is emitted. */
- bool uses_draw_indirect_multi;
+ /* Whether DRAW_{INDEX}_INDIRECT_{MULTI} is emitted. */
+ bool uses_draw_indirect;
uint32_t rt_stack_size;
--
cgit v1.2.1

View File

@ -0,0 +1,94 @@
From 5731ebac404a142fb1c1d1f0755d22beed40528a Mon Sep 17 00:00:00 2001
From: Felix DeGrood <felix.j.degrood@intel.com>
Date: Mon, 15 May 2023 22:44:45 +0000
Subject: anv: override vendorID for Cyberpunk 2077
A recent update to Cyberpunk 2077 enables XeSS code for Intel GPUs
which is causing the game to crash in the XeSS libraries. As a
temporary work around, stop identifying as Intel for Cyberpunk so
XeSS falls back to the cross-vendor path.
References: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8860
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23271>
---
src/intel/vulkan/anv_device.c | 5 +++++
src/intel/vulkan/anv_private.h | 1 +
src/util/00-mesa-defaults.conf | 3 +++
src/util/driconf.h | 3 +++
4 files changed, 12 insertions(+)
diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
index 44a591531c0..da9e05b9ced 100644
--- a/src/intel/vulkan/anv_device.c
+++ b/src/intel/vulkan/anv_device.c
@@ -85,6 +85,7 @@ static const driOptionDescription anv_dri_options[] = {
DRI_CONF_VK_WSI_FORCE_BGRA8_UNORM_FIRST(false)
DRI_CONF_LIMIT_TRIG_INPUT_RANGE(false)
DRI_CONF_ANV_MESH_CONV_PRIM_ATTRS_TO_VERT_ATTRS(-2)
+ DRI_CONF_FORCE_VK_VENDOR(0)
DRI_CONF_SECTION_END
DRI_CONF_SECTION_QUALITY
@@ -1500,6 +1501,8 @@ anv_init_dri_options(struct anv_instance *instance)
driQueryOptioni(&instance->dri_options, "generated_indirect_threshold");
instance->query_clear_with_blorp_threshold =
driQueryOptioni(&instance->dri_options, "query_clear_with_blorp_threshold");
+ instance->force_vk_vendor =
+ driQueryOptioni(&instance->dri_options, "force_vk_vendor");
}
VkResult anv_CreateInstance(
@@ -1749,6 +1752,8 @@ void anv_GetPhysicalDeviceProperties(
.sparseProperties = {0}, /* Broadwell doesn't do sparse. */
};
+ if (unlikely(pdevice->instance->force_vk_vendor))
+ pProperties->vendorID = pdevice->instance->force_vk_vendor;
snprintf(pProperties->deviceName, sizeof(pProperties->deviceName),
"%s", pdevice->info.name);
memcpy(pProperties->pipelineCacheUUID,
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
index 8c4099e3b7b..b6401c44782 100644
--- a/src/intel/vulkan/anv_private.h
+++ b/src/intel/vulkan/anv_private.h
@@ -1037,6 +1037,7 @@ struct anv_instance {
float lower_depth_range_rate;
unsigned generated_indirect_threshold;
unsigned query_clear_with_blorp_threshold;
+ unsigned force_vk_vendor;
/* HW workarounds */
bool no_16bit;
diff --git a/src/util/00-mesa-defaults.conf b/src/util/00-mesa-defaults.conf
index b5f8b233a7d..a58831bc304 100644
--- a/src/util/00-mesa-defaults.conf
+++ b/src/util/00-mesa-defaults.conf
@@ -1056,6 +1056,9 @@ TODO: document the other workarounds.
<application name="NieR:Automata" executable="NieRAutomata.exe">
<option name="limit_trig_input_range" value="true" />
</application>
+ <application name="Cyberpunk 2077" executable="Cyberpunk2077.exe">
+ <option name="force_vk_vendor" value="-1" />
+ </application>
<!--
Disable 16-bit feature on zink and angle so that GLES mediump doesn't
lower to our inefficent 16-bit shader support. No need to do so for
diff --git a/src/util/driconf.h b/src/util/driconf.h
index ac51622830d..108cc017c43 100644
--- a/src/util/driconf.h
+++ b/src/util/driconf.h
@@ -310,6 +310,9 @@
DRI_CONF_OPT_B(ignore_discard_framebuffer, def, \
"Ignore glDiscardFramebuffer/glInvalidateFramebuffer, workaround for games that use it incorrectly")
+#define DRI_CONF_FORCE_VK_VENDOR(def) \
+ DRI_CONF_OPT_I(force_vk_vendor, 0, -1, 2147483647, "Override GPU vendor id")
+
/**
* \brief Image quality-related options
*/
--
cgit v1.2.1

View File

@ -0,0 +1,39 @@
From cb41ef0d3f537f8d1fb345cf5bdcc30070333c8b Mon Sep 17 00:00:00 2001
From: Gert Wollny <gert.wollny@collabora.com>
Date: Mon, 27 Feb 2023 09:56:41 +0100
Subject: util/driconf: pin minImageCount to three for "Path of Exile"
"Path of Exile" will fail with an error "unsupported backbuffer image count"
when vkGetPhysicalDeviceSurfaceCapabilitiesKHR reports more than 3 as
minImageCount.
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21547>
---
src/util/00-mesa-defaults.conf | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/util/00-mesa-defaults.conf b/src/util/00-mesa-defaults.conf
index 554115cedfc..843beae6609 100644
--- a/src/util/00-mesa-defaults.conf
+++ b/src/util/00-mesa-defaults.conf
@@ -891,6 +891,16 @@ TODO: document the other workarounds.
<!-- https://gitlab.freedesktop.org/mesa/mesa/-/issues/5437 -->
<option name="vk_dont_care_as_load" value="true" />
</application>
+
+ <!-- Path of Exile stops with "unsupported backbuffer count" when more than
+ 3 swapchain image are reported. -->
+ <application name="Path of Exile" executable="PathOfExile_x64Steam.exe">
+ <option name="vk_x11_override_min_image_count" value="3" />
+ </application>
+ <application name="Path of Exile" executable="PathOfExileSteam.exe">
+ <option name="vk_x11_override_min_image_count" value="3" />
+ </application>
+
</device>
<!-- vmwgfx doesn't like full buffer swaps and can't sync to vertical retraces.-->
<device driver="vmwgfx">
--
cgit v1.2.1

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

View File

@ -0,0 +1,200 @@
From 4bf83d4b3ba578a244c38945d002d6d24f439b54 Mon Sep 17 00:00:00 2001
From: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Date: Mon, 21 Feb 2022 18:43:54 +0100
Subject: [PATCH] STEAMOS: Dynamic swapchain override for gamescope limiter
---
src/loader/loader_dri3_helper.c | 42 +++++++++++++++++++++++++++++++--
src/loader/loader_dri3_helper.h | 1 +
src/loader/meson.build | 2 +-
src/vulkan/wsi/wsi_common_x11.c | 38 +++++++++++++++++++++++++++++
4 files changed, 80 insertions(+), 3 deletions(-)
diff --git a/src/loader/loader_dri3_helper.c b/src/loader/loader_dri3_helper.c
index 32135770e9d..abc79dda97e 100644
--- a/src/loader/loader_dri3_helper.c
+++ b/src/loader/loader_dri3_helper.c
@@ -289,6 +289,30 @@ dri3_update_max_num_back(struct loader_dri3_drawable *draw)
}
}
+static unsigned
+gamescope_swapchain_override()
+{
+ const char *path = getenv("GAMESCOPE_LIMITER_FILE");
+ if (!path)
+ return 0;
+
+ static simple_mtx_t mtx = SIMPLE_MTX_INITIALIZER;
+ static int fd = -1;
+
+ simple_mtx_lock(&mtx);
+ if (fd < 0) {
+ fd = open(path, O_RDONLY);
+ }
+ simple_mtx_unlock(&mtx);
+
+ if (fd < 0)
+ return 0;
+
+ uint32_t override_value = 0;
+ pread(fd, &override_value, sizeof(override_value), 0);
+ return override_value;
+}
+
void
loader_dri3_set_swap_interval(struct loader_dri3_drawable *draw, int interval)
{
@@ -303,10 +327,12 @@ loader_dri3_set_swap_interval(struct loader_dri3_drawable *draw, int interval)
* PS. changing from value A to B and A < B won't cause swap out of order but
* may still gets wrong target_msc value at the beginning.
*/
- if (draw->swap_interval != interval)
+ if (draw->orig_swap_interval != interval)
loader_dri3_swapbuffer_barrier(draw);
- draw->swap_interval = interval;
+ draw->orig_swap_interval = interval;
+ if (gamescope_swapchain_override() != 1)
+ draw->swap_interval = interval;
}
static void
@@ -438,6 +464,12 @@ loader_dri3_drawable_init(xcb_connection_t *conn,
draw->swap_interval = dri_get_initial_swap_interval(draw->dri_screen_render_gpu,
draw->ext->config);
+ draw->orig_swap_interval = draw->swap_interval;
+
+ unsigned gamescope_override = gamescope_swapchain_override();
+ if (gamescope_override == 1)
+ draw->swap_interval = 1;
+
dri3_update_max_num_back(draw);
/* Create a new drawable */
@@ -1092,6 +1124,12 @@ loader_dri3_swap_buffers_msc(struct loader_dri3_drawable *draw,
if (draw->type == LOADER_DRI3_DRAWABLE_WINDOW) {
dri3_fence_reset(draw->conn, back);
+ unsigned gamescope_override = gamescope_swapchain_override();
+ if (gamescope_override == 1)
+ draw->swap_interval = 1;
+ else
+ draw->swap_interval = draw->orig_swap_interval;
+
/* Compute when we want the frame shown by taking the last known
* successful MSC and adding in a swap interval for each outstanding swap
* request. target_msc=divisor=remainder=0 means "Use glXSwapBuffers()
diff --git a/src/loader/loader_dri3_helper.h b/src/loader/loader_dri3_helper.h
index 1fd340bd145..b8f5eaaf190 100644
--- a/src/loader/loader_dri3_helper.h
+++ b/src/loader/loader_dri3_helper.h
@@ -178,6 +178,7 @@ struct loader_dri3_drawable {
bool block_on_depleted_buffers;
bool queries_buffer_age;
int swap_interval;
+ int orig_swap_interval;
struct loader_dri3_extensions *ext;
const struct loader_dri3_vtable *vtable;
diff --git a/src/loader/meson.build b/src/loader/meson.build
index 35f9991ba2f..154cf809a69 100644
--- a/src/loader/meson.build
+++ b/src/loader/meson.build
@@ -29,7 +29,7 @@ if with_platform_x11 and with_dri3
dependencies : [
idep_mesautil,
dep_libdrm, dep_xcb_dri3, dep_xcb_present, dep_xcb_sync, dep_xshmfence,
- dep_xcb_xfixes,
+ dep_xcb_xfixes, dep_xcb_xrandr, idep_mesautil
],
build_by_default : false,
)
diff --git a/src/vulkan/wsi/wsi_common_x11.c b/src/vulkan/wsi/wsi_common_x11.c
index a42355971a7..5ed89cba8d0 100644
--- a/src/vulkan/wsi/wsi_common_x11.c
+++ b/src/vulkan/wsi/wsi_common_x11.c
@@ -42,6 +42,7 @@
#include "util/hash_table.h"
#include "util/os_file.h"
#include "util/os_time.h"
+#include "util/simple_mtx.h"
#include "util/u_debug.h"
#include "util/u_thread.h"
#include "util/xmlconfig.h"
@@ -198,6 +199,30 @@ wsi_x11_detect_xwayland(xcb_connection_t *conn,
return is_xwayland;
}
+static unsigned
+gamescope_swapchain_override()
+{
+ const char *path = getenv("GAMESCOPE_LIMITER_FILE");
+ if (!path)
+ return 0;
+
+ static simple_mtx_t mtx = SIMPLE_MTX_INITIALIZER;
+ static int fd = -1;
+
+ simple_mtx_lock(&mtx);
+ if (fd < 0) {
+ fd = open(path, O_RDONLY);
+ }
+ simple_mtx_unlock(&mtx);
+
+ if (fd < 0)
+ return 0;
+
+ uint32_t override_value = 0;
+ pread(fd, &override_value, sizeof(override_value), 0);
+ return override_value;
+}
+
static struct wsi_x11_connection *
wsi_x11_connection_create(struct wsi_device *wsi_dev,
xcb_connection_t *conn)
@@ -1074,6 +1099,8 @@ struct x11_swapchain {
/* Total number of images returned to application in AcquireNextImage. */
uint64_t present_poll_acquire_count;
+ VkPresentModeKHR orig_present_mode;
+
struct x11_image images[0];
};
VK_DEFINE_NONDISP_HANDLE_CASTS(x11_swapchain, base.base, VkSwapchainKHR,
@@ -1802,6 +1829,12 @@ x11_queue_present(struct wsi_swapchain *anv_chain,
if (chain->status < 0)
return chain->status;
+ unsigned gamescope_override = gamescope_swapchain_override();
+ if ((gamescope_override == 1 && chain->base.present_mode != VK_PRESENT_MODE_FIFO_KHR) ||
+ (gamescope_override != 1 && chain->base.present_mode != chain->orig_present_mode)) {
+ return x11_swapchain_result(chain, VK_ERROR_OUT_OF_DATE_KHR);
+ }
+
if (damage && damage->pRectangles && damage->rectangleCount > 0 &&
damage->rectangleCount <= MAX_DAMAGE_RECTS) {
xcb_rectangle_t rects[MAX_DAMAGE_RECTS];
@@ -2554,6 +2587,10 @@ x11_surface_create_swapchain(VkIcdSurfaceBase *icd_surface,
xcb_void_cookie_t cookie;
VkResult result;
VkPresentModeKHR present_mode = wsi_swapchain_get_present_mode(wsi_device, pCreateInfo);
+ VkPresentModeKHR orig_present_mode = present_mode;
+
+ if (gamescope_swapchain_override() == 1)
+ present_mode = VK_PRESENT_MODE_FIFO_KHR;
assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR);
@@ -2666,6 +2703,7 @@ x11_surface_create_swapchain(VkIcdSurfaceBase *icd_surface,
chain->base.wait_for_present = x11_wait_for_present;
chain->base.release_images = x11_release_images;
chain->base.present_mode = present_mode;
+ chain->orig_present_mode = orig_present_mode;
chain->base.image_count = num_images;
chain->conn = conn;
chain->window = window;
--
GitLab

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

18
debian/patches/series vendored Normal file
View File

@ -0,0 +1,18 @@
4bf83d4b3ba578a244c38945d002d6d24f439b54.patch
07_gallium-fix-build-failure-on-powerpcspe.diff
path_max.diff
src_glx_dri_common.h.diff
#kisak-mesa PPA Backports:
version
0001_radv_amdgpu:_Remove_unnecessary_assertions_from_chaining..patch
0002_radv:_Disallow_IB2_on_GFX6_when_using_draw_indirect_multi..patch
0003_radv:_Use_IB_BOs_(chaining)_by_default_on_GFX6..patch
0004_radv:_Chain_command_buffers_on_GFX6_in_radv_queue..patch
0005_amd:_Rename_INDIRECT_BUFFER_CIK_to_just_INDIRECT_BUFFER..patch
0006_radv:_Simplify_IB2_workaround..patch
0007_radv:_Remove_IB2_workaround_from_mesh_shader_draws..patch
0008_radv:_Enable_IB2_workaround_on_all_indirect_draws..patch
0009_anv:_override_vendorID_for_Cyberpunk_2077.patch
0010_util_driconf:_pin_minImageCount_to_three_for_Path_of_Exile.patch

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

5
debian/patches/version vendored Normal file
View File

@ -0,0 +1,5 @@
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-23.1.5
+23.1.5 - kisak-mesa PPA

319
debian/rules vendored Executable file
View File

@ -0,0 +1,319 @@
#!/usr/bin/make -f
# debian/rules for the Debian mesa package
# Copyright © 2006 Thierry Reding <thierry@gilfi.de>
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
include /usr/share/dpkg/pkg-info.mk
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)
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 = 15
export PATH:=/usr/lib/llvm-$(LLVM_VERSION)/bin/:$(PATH)
export DEB_BUILD_MAINT_OPTIONS=optimize=-lto
ifeq (,$(filter $(DEB_HOST_ARCH), armhf ppc64el sh3 sh4))
buildflags = \
$(shell DEB_CFLAGS_MAINT_APPEND=-Wall DEB_CXXFLAGS_MAINT_APPEND=-Wall dpkg-buildflags --export=configure)
else
ifneq (,$(filter $(DEB_HOST_ARCH), armhf))
# Workaround for a variant of LP: #725126
buildflags = \
$(shell DEB_CFLAGS_MAINT_APPEND="-Wall -fno-optimize-sibling-calls" DEB_CXXFLAGS_MAINT_APPEND="-Wall -fno-optimize-sibling-calls" dpkg-buildflags --export=configure)
else
ifneq (,$(filter $(DEB_HOST_ARCH), ppc64el))
# Workaround for https://gitlab.freedesktop.org/mesa/mesa/-/issues/5315
buildflags = \
$(shell DEB_CFLAGS_MAINT_APPEND="-Wall -O2" DEB_CXXFLAGS_MAINT_APPEND="-Wall -O2" dpkg-buildflags --export=configure)
else
# Workaround for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83143
buildflags = \
$(shell DEB_CFLAGS_MAINT_APPEND="-Wall -O1" DEB_CXXFLAGS_MAINT_APPEND="-Wall -O1" dpkg-buildflags --export=configure)
endif
endif
endif
EGL_PLATFORMS = x11
GALLIUM_DRIVERS = swrast
VULKAN_DRIVERS =
VULKAN_LAYERS =
confflags_DRI3 = -Ddri3=disabled
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
VALGRIND_ARCHS = amd64 arm64 armhf i386 mips64el mipsel powerpc ppc64 ppc64el s390x
WINE_ARCHS = amd64 arm64 armel armhf i386 powerpc
# hurd doesn't do direct rendering
ifeq ($(DEB_HOST_ARCH_OS), hurd)
confflags_DIRECT_RENDERING = -Dglx-direct=false
confflags_GBM = -Dgbm=disabled
else
GALLIUM_DRIVERS += r300 r600
confflags_DIRECT_RENDERING = -Dglx-direct=true
confflags_GBM = -Dgbm=enabled
confflags_GALLIUM += -Dgallium-extra-hud=true
confflags_GALLIUM += -Dgallium-vdpau=enabled
confflags_GALLIUM += -Dlmsensors=enabled
# 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
endif
# Only enable amd on riscv64, swrast needs CPU JIT support which doesn't work properly yet
ifneq (,$(filter $(DEB_HOST_ARCH), riscv64))
VULKAN_DRIVERS += amd
confflags_GALLIUM += -Ddraw-use-llvm=false
endif
ifeq ($(DEB_HOST_ARCH_OS), linux)
confflags_DRI3 = -Ddri3=enabled
# Gallium drivers which require kernel support, not yet ported to non-Linux
GALLIUM_DRIVERS += nouveau virgl
# Freedreno requires arm in addition
ifneq (,$(filter arm arm64,$(DEB_HOST_ARCH_CPU)))
GALLIUM_DRIVERS += freedreno
endif
# etnaviv, tegra, vc4 and v3d kernel support are only available on armhf and arm64
ifneq (,$(filter $(DEB_HOST_ARCH), armhf arm64))
GALLIUM_DRIVERS += etnaviv panfrost svga tegra vc4 v3d
VULKAN_DRIVERS += broadcom freedreno
endif
ifneq (,$(filter $(DEB_HOST_ARCH), armhf arm64 riscv64))
GALLIUM_DRIVERS += lima
endif
ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386 x32))
GALLIUM_DRIVERS += svga
# svga needs xa state tracker
confflags_GALLIUM += -Dgallium-xa=enabled
VULKAN_DRIVERS += intel intel_hasvk
endif
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
# hurd also lacks *_CLOEXEC
EGL_PLATFORMS += ,wayland
ifneq (,$(filter $(DEB_HOST_ARCH), $(VALGRIND_ARCHS)))
confflags_VALGRIND += -Dvalgrind=enabled
endif
# WSL supports only amd64 and arm64
DOZEN_INSTALLED=no
ifneq (,$(filter amd64 arm64,$(DEB_HOST_ARCH)))
GALLIUM_DRIVERS += d3d12
VULKAN_DRIVERS += microsoft-experimental
DOZEN_INSTALLED=yes
endif
endif
# Build intel drivers on archs where libdrm-intel is installed
ifneq (,$(filter $(DEB_HOST_ARCH),amd64 i386 kfreebsd-amd64 kfreebsd-i386 x32))
GALLIUM_DRIVERS += iris crocus i915
endif
# LLVM is required for building r300g, radeonsi and llvmpipe drivers.
# It's also required for building OpenCL support.
ifneq (,$(filter $(DEB_HOST_ARCH), $(LLVM_ARCHS)))
GALLIUM_DRIVERS += radeonsi zink
# Only enable amd on riscv64, swrast needs CPU JIT support which doesn't work properly yet
ifneq (,$(filter $(DEB_HOST_ARCH), riscv64))
VULKAN_DRIVERS += amd
confflags_GALLIUM += -Ddraw-use-llvm=false
else
VULKAN_DRIVERS += amd swrast
endif
VULKAN_LAYERS += device-select intel-nullhw overlay
confflags_GALLIUM += -Dllvm=enabled
confflags_GALLIUM += -Dgallium-opencl=icd
# Build rusticl for archs where rustc is available
ifneq (,$(filter $(DEB_HOST_ARCH), $(RUSTICL_ARCHS)))
confflags_GALLIUM += -Dgallium-rusticl=true
endif
# nine makes sense only on archs that build wine
ifneq (,$(filter $(DEB_HOST_ARCH), $(WINE_ARCHS)))
confflags_GALLIUM += -Dgallium-nine=true
endif
else
confflags_GALLIUM += -Dllvm=disabled
endif
ifeq (,$(filter pkg.mesa.nolibva,$(DEB_BUILD_PROFILES)))
confflags_GALLIUM += -Dgallium-va=enabled
confflags_GALLIUM += -Dvideo-codecs="vc1dec, h264dec, h264enc, h265dec, h265enc"
endif
endif
ifeq ($(DEB_HOST_ARCH), i386)
confflags_SSE2 = -Dsse2=false
endif
empty:=
space := $(empty) $(empty)
comma := ,
GALLIUM_DRIVERS := $(patsubst %,'%',$(GALLIUM_DRIVERS))
GALLIUM_DRIVERS_LIST := $(subst $(space),$(comma),$(GALLIUM_DRIVERS))
VULKAN_DRIVERS := $(patsubst %,'%',$(VULKAN_DRIVERS))
VULKAN_DRIVERS_LIST := $(subst $(space),$(comma),$(VULKAN_DRIVERS))
VULKAN_LAYERS := $(patsubst %,'%',$(VULKAN_LAYERS))
VULKAN_LAYERS_LIST := $(subst $(space),$(comma),$(VULKAN_LAYERS))
confflags_EGL = -Dplatforms="$(EGL_PLATFORMS)"
confflags_GLES = -Dgles1=disabled -Dgles2=enabled
confflags_GALLIUM += -Dgallium-drivers="[$(GALLIUM_DRIVERS_LIST)]"
confflags += \
-Ddri-drivers-path=/usr/lib/$(DEB_HOST_MULTIARCH)/dri \
-Ddri-search-path='/usr/lib/$(DEB_HOST_MULTIARCH)/dri:\$$$${ORIGIN}/dri:/usr/lib/dri' \
-Dvulkan-drivers="[$(VULKAN_DRIVERS_LIST)]" \
-Dvulkan-layers="[$(VULKAN_LAYERS_LIST)]" \
-Dglvnd=true \
-Dshared-glapi=enabled \
-Dgallium-omx=disabled \
-Db_ndebug=true \
-Dbuild-tests=true \
-Dtools=drm-shim \
$(confflags_DIRECT_RENDERING) \
$(confflags_GBM) \
$(confflags_DRI3) \
$(confflags_EGL) \
$(confflags_GALLIUM) \
$(confflags_GLES) \
$(confflags_OSMESA) \
$(confflags_SSE2) \
$(confflags_VALGRIND)
override_dh_clean: regen_control
rm -rf .pc
rm -rf build
rm -rf configure bin/config.guess bin/config.sub config.h.in
rm -rf $$(find -name Makefile.in)
rm -rf bin/install-sh bin/ltmain.sh
for file in debian/*.links.in; do rm -f $${file%%.in}; done
find -name '*.pyc' -delete
find -name '__pycache__' -delete
dh_clean
override_dh_auto_configure:
$(buildflags) dh_auto_configure -- \
$(confflags)
override_dh_auto_install:
dh_auto_install
for file in debian/*.links.in; \
do \
sed -e"s,\$${DEB_HOST_MULTIARCH},$(DEB_HOST_MULTIARCH),g" \
$${file} > $${file%%.in}; \
done
# some tests are expected to fail for now, drop this when upstream has
# better cross-build testing in place and expected failures fixed
override_dh_auto_test:
-dh_auto_test
allpkg = $(shell dh_listpackages -a)
override_dh_installchangelogs:
dh_installchangelogs -a
dh_installchangelogs -pmesa-common-dev
override_dh_install:
# purge .la files
find debian/tmp/ -name '*.la' -exec rm '{}' ';'
# Get rid of some files which aren't installed. Do not
# use -f to ensure we notice disappearing files:
rm debian/tmp/usr/lib/*/libglapi.so
rm debian/tmp/usr/lib/*/libEGL_mesa.so
rm debian/tmp/usr/lib/*/libGLX_mesa.so
# use -f here though
rm -f debian/tmp/usr/lib/*/libgrl.a
# Copy the hardlinked *_dri.so correctly.
install -m755 -d debian/libgl1-mesa-dri/usr/lib/${DEB_HOST_MULTIARCH}/dri/
mv debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/dri/*_dri.so \
debian/libgl1-mesa-dri/usr/lib/${DEB_HOST_MULTIARCH}/dri/
ifneq ($(DEB_HOST_ARCH_OS), hurd)
# Copy the hardlinked vdpau drivers correctly.
install -m755 -d debian/mesa-vdpau-drivers/usr/lib/${DEB_HOST_MULTIARCH}/vdpau/
mv debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/vdpau/libvdpau*.so* \
debian/mesa-vdpau-drivers/usr/lib/${DEB_HOST_MULTIARCH}/vdpau/
ifeq (,$(filter pkg.mesa.nolibva,$(DEB_BUILD_PROFILES)))
# Copy the hardlinked va drivers correctly.
install -m755 -d debian/mesa-va-drivers/usr/lib/${DEB_HOST_MULTIARCH}/dri/
mv debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/dri/*_drv_video.so \
debian/mesa-va-drivers/usr/lib/${DEB_HOST_MULTIARCH}/dri/
endif
endif
ifneq (,$(filter $(DEB_HOST_ARCH), $(RUSTICL_ARCHS)))
install -m755 -d debian/mesa-opencl-icd/etc/OpenCL/vendors
mv debian/tmp/etc/OpenCL/vendors/rusticl.icd \
debian/mesa-opencl-icd/etc/OpenCL/vendors
install -m755 -d debian/mesa-opencl-icd/usr/lib/${DEB_HOST_MULTIARCH}/
mv debian/tmp/usr/lib/${DEB_HOST_MULTIARCH}/libRusticlOpenCL* \
debian/mesa-opencl-icd/usr/lib/${DEB_HOST_MULTIARCH}/
endif
# Conditionally enable install of dozen files
if test "$(DOZEN_INSTALLED)" = "yes"; then \
sed -i -e "s|#dozen\ ||g" debian/mesa-vulkan-drivers.install; \
fi
dh_install -a
# Install bug control and script:
set -e; for p in $(allpkg); do \
install -d debian/$$p/usr/share/bug/$$p && \
install -m 644 debian/local/control debian/$$p/usr/share/bug/$$p && \
install -m 755 debian/local/script debian/$$p/usr/share/bug/$$p; \
done
override_dh_missing:
dh_missing --fail-missing
override_dh_makeshlibs:
dh_makeshlibs -a -- -c4
%:
dh $@ --with quilt \
--builddirectory=build/ \
--buildsystem=meson
# For maintainer use only, generate a tarball:
gentarball:
git archive --format=tar upstream-experimental --prefix=$(DEB_SOURCE)-$(DEB_VERSION_UPSTREAM)/ \
| gzip -9 > ../$(DEB_SOURCE)_$(DEB_VERSION_UPSTREAM).orig.tar.gz
regen_control:
sed -e"s,@LLVM_VERSION@,$(LLVM_VERSION),g" \
-e"s,@LLVM_ARCHS@,$(LLVM_ARCHS),g" \
-e"s,@RUSTICL_ARCHS@,$(RUSTICL_ARCHS),g" \
-e"s,@VALGRIND_ARCHS@,$(VALGRIND_ARCHS),g" \
-e"s,@WINE_ARCHS@,$(WINE_ARCHS),g" \
debian/control.in > debian/control

1
debian/shlibs.local vendored Normal file
View File

@ -0,0 +1 @@
libglapi 0 libglapi-mesa (= ${binary:Version})

1
debian/source/format vendored Normal file
View File

@ -0,0 +1 @@
3.0 (native)

7
debian/tests/control vendored Normal file
View File

@ -0,0 +1,7 @@
Tests: gles-gbm-build-test
Depends:
build-essential,
libgbm-dev,
libgles2-mesa-dev,
pkg-config,
Restrictions: superficial

9
debian/tests/gles-gbm-build-test vendored Executable file
View File

@ -0,0 +1,9 @@
#!/usr/bin/make -f
CFLAGS=$(shell pkg-config --cflags glesv2 --cflags egl --cflags gbm)
LIBS=$(shell pkg-config --libs glesv2 --libs egl --libs gbm)
debian/tests/gles-gbm: debian/tests/gles-gbm.c
gcc -g -o $@ $(CFLAGS) $< $(LIBS)
@echo "Build test of $< succeeded"
@rm -f $@

179
debian/tests/gles-gbm.c vendored Normal file
View File

@ -0,0 +1,179 @@
// based on
// https://www.khronos.org/registry/EGL/extensions/MESA/EGL_MESA_platform_gbm.txt
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <gbm.h>
#include <EGL/egl.h>
#include <EGL/eglext.h>
#include <GLES2/gl2.h>
struct my_display {
struct gbm_device *gbm;
EGLDisplay egl;
};
struct my_config {
struct my_display dpy;
EGLConfig egl;
};
struct my_window {
struct my_config config;
struct gbm_surface *gbm;
EGLSurface egl;
};
PFNEGLGETPLATFORMDISPLAYEXTPROC getPlatformDisplayEXT;
PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC createPlatformWindowSurfaceEXT;
static void
check_extensions(void)
{
const char *client_extensions = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
if (!client_extensions) {
abort();
}
if (!strstr(client_extensions, "EGL_MESA_platform_gbm")) {
abort();
}
if (!strstr(client_extensions, "EGL_EXT_platform_base")) {
abort();
}
getPlatformDisplayEXT =
(void *) eglGetProcAddress("eglGetPlatformDisplayEXT");
createPlatformWindowSurfaceEXT =
(void *) eglGetProcAddress("eglCreatePlatformWindowSurfaceEXT");
}
static struct my_display
get_display(void)
{
struct my_display dpy;
EGLint major, minor;
int fd = open("/dev/dri/card0", O_RDWR | FD_CLOEXEC);
if (fd < 0)
abort();
dpy.gbm = gbm_create_device(fd);
if (!dpy.gbm)
abort();
dpy.egl = getPlatformDisplayEXT(EGL_PLATFORM_GBM_MESA, dpy.gbm, NULL);
if (dpy.egl == EGL_NO_DISPLAY)
abort();
if (eglInitialize(dpy.egl, &major, &minor))
printf ("EGL %d.%d\n", major, minor);
else
abort();
return dpy;
}
static struct my_config
get_config(struct my_display dpy)
{
struct my_config config = {
.dpy = dpy,
};
EGLint egl_config_attribs[] = {
EGL_BUFFER_SIZE, 32,
EGL_DEPTH_SIZE, EGL_DONT_CARE,
EGL_STENCIL_SIZE, EGL_DONT_CARE,
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_NONE,
};
EGLint num_configs;
if (!eglGetConfigs(dpy.egl, NULL, 0, &num_configs))
abort();
EGLConfig *configs = malloc(num_configs * sizeof(EGLConfig));
if (!eglChooseConfig(dpy.egl, egl_config_attribs,
configs, num_configs, &num_configs)) {
abort();
}
if (num_configs == 0)
abort();
for (int i = 0; i < num_configs; ++i) {
EGLint gbm_format;
struct gbm_format_name_desc desc;
if (!eglGetConfigAttrib(dpy.egl, configs[i],
EGL_NATIVE_VISUAL_ID, &gbm_format)) {
abort();
}
printf ("found gbm_format: %s\n", gbm_format_get_name (gbm_format, &desc));
if (gbm_format == GBM_FORMAT_ARGB8888) {
config.egl = configs[i];
free(configs);
return config;
}
}
// no egl config matching gbm format
abort();
}
static struct my_window
get_window(struct my_config config)
{
struct my_window window = {
.config = config,
};
window.gbm = gbm_surface_create(config.dpy.gbm,
256, 256,
GBM_FORMAT_XRGB8888,
GBM_BO_USE_RENDERING);
if (!window.gbm)
abort();
window.egl = createPlatformWindowSurfaceEXT(config.dpy.egl,
config.egl,
window.gbm,
NULL);
if (window.egl == EGL_NO_SURFACE)
abort();
return window;
}
int
main(void)
{
check_extensions();
struct my_display dpy = get_display();
struct my_config config = get_config(dpy);
struct my_window window = get_window(config);
EGLContext context;
context = eglCreateContext(dpy.egl, config.egl, EGL_NO_CONTEXT, NULL);
eglMakeCurrent(dpy.egl, window.egl, window.egl, context);
/* just so we have some gles symbols too */
glClearColor(1.0, 1.0, 1.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
return EXIT_SUCCESS;
}

906
debian/upstream/signing-key.asc vendored Normal file
View File

@ -0,0 +1,906 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
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
MTE6MjggMDI6NTU6MDQAAAAAOwAAAAgAAAAlAAAACAAAAAAAAAABAAANIwAABKUA
AAAfAAAAAQABfGMAAAAiAAUNRwAAAHL/4QoVaHR0cDovL25zLmFkb2JlLmNvbS94
YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJl
U3pOVGN6a2M5ZCc/Pgo8eDp4bXBtZXRhIHhtbG5zOng9J2Fkb2JlOm5zOm1ldGEv
Jz4KPHJkZjpSREYgeG1sbnM6cmRmPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAy
LzIyLXJkZi1zeW50YXgtbnMjJz4KCiA8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOmV4
aWY9J2h0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvJz4KICA8ZXhpZjpNYWtl
PkNhbm9uPC9leGlmOk1ha2U+CiAgPGV4aWY6TW9kZWw+Q2Fub24gRU9TIDYwRDwv
ZXhpZjpNb2RlbD4KICA8ZXhpZjpPcmllbnRhdGlvbj5Ub3AtbGVmdDwvZXhpZjpP
cmllbnRhdGlvbj4KICA8ZXhpZjpYUmVzb2x1dGlvbj43MjwvZXhpZjpYUmVzb2x1
dGlvbj4KICA8ZXhpZjpZUmVzb2x1dGlvbj43MjwvZXhpZjpZUmVzb2x1dGlvbj4K
ICA8ZXhpZjpSZXNvbHV0aW9uVW5pdD5JbmNoPC9leGlmOlJlc29sdXRpb25Vbml0
PgogIDxleGlmOlNvZnR3YXJlPkFwZXJ0dXJlIDMuNC4zPC9leGlmOlNvZnR3YXJl
PgogIDxleGlmOkRhdGVUaW1lPjIwMTI6MTE6MjggMDI6NTU6MDQ8L2V4aWY6RGF0
ZVRpbWU+CiAgPGV4aWY6QXJ0aXN0PlJ5YW4gV2FybmljazwvZXhpZjpBcnRpc3Q+
CiAgPGV4aWY6Q29weXJpZ2h0Pk9wYWNpdHkgSW5jb3Jwb3JhdGVkIChQaG90b2dy
YXBoZXIpIC0gW05vbmVdIChFZGl0b3IpPC9leGlmOkNvcHlyaWdodD4KICA8ZXhp
ZjpFeHBvc3VyZVRpbWU+MS8xNjAgc2VjLjwvZXhpZjpFeHBvc3VyZVRpbWU+CiAg
PGV4aWY6Rk51bWJlcj5mLzUuMDwvZXhpZjpGTnVtYmVyPgogIDxleGlmOkV4cG9z
dXJlUHJvZ3JhbT5NYW51YWw8L2V4aWY6RXhwb3N1cmVQcm9ncmFtPgogIDxleGlm
OklTT1NwZWVkUmF0aW5ncz4KICAgPHJkZjpTZXE+CiAgICA8cmRmOmxpPjEwMDwv
cmRmOmxpPgogICA8L3JkZjpTZXE+CiAgPC9leGlmOklTT1NwZWVkUmF0aW5ncz4K
ICA8ZXhpZjpFeGlmVmVyc2lvbj5FeGlmIFZlcnNpb24gMi4zPC9leGlmOkV4aWZW
ZXJzaW9uPgogIDxleGlmOkRhdGVUaW1lT3JpZ2luYWw+MjAxMjoxMToyOCAwMjo1
NTowNDwvZXhpZjpEYXRlVGltZU9yaWdpbmFsPgogIDxleGlmOkRhdGVUaW1lRGln
aXRpemVkPjIwMTI6MTE6MjggMDI6NTU6MDQ8L2V4aWY6RGF0ZVRpbWVEaWdpdGl6
ZWQ+CiAgPGV4aWY6Q29tcG9uZW50c0NvbmZpZ3VyYXRpb24+CiAgIDxyZGY6U2Vx
PgogICAgPHJkZjpsaT5ZIENiIENyIC08L3JkZjpsaT4KICAgPC9yZGY6U2VxPgog
IDwvZXhpZjpDb21wb25lbnRzQ29uZmlndXJhdGlvbj4KICA8ZXhpZjpTaHV0dGVy
U3BlZWRWYWx1ZT43LjM4IEVWICgxLzE2NSBzZWMuKTwvZXhpZjpTaHV0dGVyU3Bl
ZWRWYWx1ZT4KICA8ZXhpZjpBcGVydHVyZVZhbHVlPjQuNjIgRVYgKGYvNS4wKTwv
ZXhpZjpBcGVydHVyZVZhbHVlPgogIDxleGlmOkV4cG9zdXJlQmlhc1ZhbHVlPjAu
MDAgRVY8L2V4aWY6RXhwb3N1cmVCaWFzVmFsdWU+CiAgPGV4aWY6TWF4QXBlcnR1
cmVWYWx1ZT4yLjgzIEVWIChmLzIuNyk8L2V4aWY6TWF4QXBlcnR1cmVWYWx1ZT4K
ICA8ZXhpZjpNZXRlcmluZ01vZGU+UGF0dGVybjwvZXhpZjpNZXRlcmluZ01vZGU+
CiAgPGV4aWY6Rmxhc2ggcmRmOnBhcnNlVHlwZT0nUmVzb3VyY2UnPgogIDwvZXhp
ZjpGbGFzaD4KICA8ZXhpZjpGb2NhbExlbmd0aD4zMS4wIG1tPC9leGlmOkZvY2Fs
TGVuZ3RoPgogIDxleGlmOlN1YnNlY1RpbWU+MjM8L2V4aWY6U3Vic2VjVGltZT4K
ICA8ZXhpZjpTdWJTZWNUaW1lT3JpZ2luYWw+MjM8L2V4aWY6U3ViU2VjVGltZU9y
aWdpbmFsPgogIDxleGlmOlN1YlNlY1RpbWVEaWdpdGl6ZWQ+MjM8L2V4aWY6U3Vi
U2VjVGltZURpZ2l0aXplZD4KICA8ZXhpZjpGbGFzaFBpeFZlcnNpb24+Rmxhc2hQ
aXggVmVyc2lvbiAxLjA8L2V4aWY6Rmxhc2hQaXhWZXJzaW9uPgogIDxleGlmOkNv
bG9yU3BhY2U+c1JHQjwvZXhpZjpDb2xvclNwYWNlPgogIDxleGlmOlBpeGVsWERp
bWVuc2lvbj44MDA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogIDxleGlmOlBpeGVs
WURpbWVuc2lvbj41MzM8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogIDxleGlmOkZv
Y2FsUGxhbmVYUmVzb2x1dGlvbj4yODY0LjA5PC9leGlmOkZvY2FsUGxhbmVYUmVz
b2x1dGlvbj4KICA8ZXhpZjpGb2NhbFBsYW5lWVJlc29sdXRpb24+MjkwNC4yMDwv
ZXhpZjpGb2NhbFBsYW5lWVJlc29sdXRpb24+CiAgPGV4aWY6Rm9jYWxQbGFuZVJl
c29sdXRpb25Vbml0PkluY2g8L2V4aWY6Rm9jYWxQbGFuZVJlc29sdXRpb25Vbml0
PgogIDxleGlmOkN1c3RvbVJlbmRlcmVkPk5vcm1hbCBwcm9jZXNzPC9leGlmOkN1
c3RvbVJlbmRlcmVkPgogIDxleGlmOkV4cG9zdXJlTW9kZT5NYW51YWwgZXhwb3N1
cmU8L2V4aWY6RXhwb3N1cmVNb2RlPgogIDxleGlmOldoaXRlQmFsYW5jZT5BdXRv
IHdoaXRlIGJhbGFuY2U8L2V4aWY6V2hpdGVCYWxhbmNlPgogIDxleGlmOlNjZW5l
Q2FwdHVyZVR5cGU+U3RhbmRhcmQ8L2V4aWY6U2NlbmVDYXB0dXJlVHlwZT4KIDwv
cmRmOkRlc2NyaXB0aW9uPgoKPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KPD94cGFj
a2V0IGVuZD0ncic/Pgr/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlubwIQAABtbnRy
UkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNGVAAAAABJRUMgc1JHQgAAAAAAAAAA
AAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNkZXNjAAABhAAAAGx3dHB0
AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFlaAAACLAAAABRiWFla
AAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAADTAAAAIZ2aWV3
AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAAAAxyVFJD
AAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHlyaWdo
dCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAAS
c1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
WFlaIAAAAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAA
AABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+E
AAC2z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAA
FklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERl
ZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5
NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0
aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5n
IENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1yeAAAAAVhZWiAAAAAA
AEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAo8AAAAC
c2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAoAC0AMgA3
ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQAqQCu
ALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEy
ATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHh
AekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLB
AssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPT
A+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUc
BSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAad
Bq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRgha
CG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpU
CmoKgQqYCq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyO
DKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8J
DyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJ
EegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTO
FPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UXiReuF9IX9xgb
GEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2Mbihuy
G9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+U
H78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPC
I/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/
KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0M
LUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIq
MmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDec
N9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1h
PaE94D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9
Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnw
SjdKfUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7
UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfg
WC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19h
X7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9
Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94
b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gR
eG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEK
gWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gEiGmIzokziZmJ/opk
isqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLjk02TtpQg
lIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5A
nq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjE
qTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOu
tCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/
v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3
yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY
11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj
4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY
8OXxcvH/8ozzGfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26
/kv+3P9t////2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsN
DhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsN
FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU
FBT/wgARCAEgAPADAREAAhEBAxEB/8QAHAAAAAcBAQAAAAAAAAAAAAAAAAECAwQF
BgcI/8QAGgEAAwEBAQEAAAAAAAAAAAAAAAECAwQFBv/aAAwDAQACEAMQAAAB8ykA
agUBgAMABjAAQAAAAGAANhAAABAYACIDAAAA45JjUCgAGAAAZSwIkJvJoBQJBAGw
mADEYiKSIxADAAQyGwSoFAAAGBprBSp5CE4w1IMHQbEkGm5IhUhhAAIEtKAwAEAG
ySYKAAYADSkLVWdRgjMQyQixG+mCa5gCC0BIabCY08w2GAAAAIGSTAxqGQAHpVpl
tEZEYoJ4TpqFDr7io1TqSRR6kMCFoU3bATQAAAAAGSTGYADBad1nqrOnxpBBVtJn
Wqe4jXKwAktPK3WkSEKBc2zDaIAAAgANEmMxgkx6PLWVno6ycEIJU60tZZ+ps40n
zUWpaIlsrWBplNoir1i0YbSQAAAABkkyjAKXlp0THWnKnChJzSm51qoesm9rN246
4KJzEorGRnNNU5m+el15rCm45AEAAwAMkmMwOTTLW/y0CKVa3uXVoVrqMdtrL0RE
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
=LxfO
-----END PGP PUBLIC KEY BLOCK-----
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)
mQINBFQDrA8BEACyGXUc6vSmNkwZdTTzX1vHRgIDWoppot56E5oOO+gM6ukyMDY7
60FxKvmh704I8NqTfg3Rcs18fSOXeRj1gDG84MsU7QM3g6IQyxCA+IV7d2r/DPZE
z7HxEIKFxGJw24swsQJy/iiZf/b8flqiJbx3Ye1LF7T5iw/gKDsN6eqzAtLKqw9I
/4TBVE766nwmKNQZiw2jAFCs3lwfmNIm7ZaQNBpHTRabMTLMJiFFynLsa1eVsf9D
R3eVXW4c2oHKZbxDvSWR2yz6XcQ9ldii89sUNeclnjSFNOt761P4zBNwcEX2GuQs
JO/haw5FyrMJJexAbdUTtshZ7XvhDv/UCHtyqQBUw/vwYe8Rx79Hq/fOOUdMjWOW
cDCzyYTmGdbEJYRHrENcsOhoti3IkOjgzw0UDyCHyjapFV1ZJT/Kz7rkMmsdNtoi
1BVTLIdOvQmeXQtN2caZSN20wZWHdZnrz1/JOfOxpEsf2R78zavIfobReQdFoYMC
jv4b49WB/Gytd5vneqk9yi9DEhCYw5uGxQgjIKC4AZPVtD//GY+iYiPe5dPwrhU1
FyD3b9SgYxFE/uZlgbzBIV4akK11vC5Q+Co5PYzhnPPgd7cYLjr/ceMfGPkeWLCY
OxZbXg92BZKKJnFHYx7FJ04WKS8SjzIn/qEzvy7SmPGxSCX6zdwn0fKZYQARAQAB
tCdFbWlsIFZlbGlrb3YgPGVtaWwubC52ZWxpa292QGdtYWlsLmNvbT6JAjkEEwEC
ACMFAlQDrA8CGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRDtrjewLOtJ
DV/AEACd/RKvSzL0L4/9HYvFskjNR40NPFyQHyMaPg9eeblhfbnH7mWYXJ2MPGTR
bgvQCr0zZ3R7u8E8Rxulwifbm20x0WhYOKkDuSROjroRqvDhxfuLtXtBKqfVGw6T
0rMEOOWdqGhql4yuVpqGbgHa5ZfFvQi2EtT40QDdD052adzWeT96aFQB6Gf3CRMf
a4y7hawbUV10XL3BUljUcyh+SJv9lPclW09WNE+tuCmdIqoP927BSjXwh2GR6dM0
z0aDf3wOxRc9S8q34jS+xN8hsXmYFAqkn0YkVIQ0M0PaQ89ltcyonbG6rZ+1rNgx
tiLEpfOZpzr7LowVsw9R6ky/pvhBHfVIM4aT17hbi2XfnMihmt/T1SZqb36+aYFt
j8Bc/o9I5crPXwOP4in3heY2ZmDWeGkPSRNix0VLQHL0HzOxjMAEm+y5ROLDo7Z/
sGOebYxMYPIK5mJzrKhk737FEI57cvUSRXzbjmV3CIOIJbaNULWFXkCHRhdyk8mh
sVzKkl7IDiWPBj1RC5r0EXmrjUzK8QfzrTWiOa6z9WIkZ4sSs0bz14Q4pZR2qi8L
KLVjCNf/FusqCTgbZU06x1S/75XJwcsFENWkWYPEaxxzQiCs1rVzG8SnrOjcyc5F
T0rEAQLWU7eq9U6nd4BXMkokiuzlOKWqsDyXibR3wkhI80kAJw==
=XSpT
-----END PGP PUBLIC KEY BLOCK-----
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
yc3LzJA+b6/cPamySsetyO6jSkApaLbAOl99
=FK/k
-----END PGP PUBLIC KEY BLOCK-----
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
7VQeKOrR3qSFObFF0Zde+tGDvy7p
=tfFV
-----END PGP PUBLIC KEY BLOCK-----
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEWnyK+hYJKwYBBAHaRw8BAQdAciqI9uB5/t6i0/M+WXq4meqx9RtBN3y0bo09
IckAQSy0IUR5bGFuIEJha2VyIDxkeWxhbkBwbndiYWtlcnMuY29tPoiZBBMWCgBB
AhsDBQkDwmcABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAFiEEccS3ViC8dXCLS9sl
TJX6qz6wc+wFAlp8kfoCGQEACgkQTJX6qz6wc+xHwwD/Wum1XIULb5mG0nLL3QSJ
MnYr2aOa9Wa5gncUx/5Z5noBAJpuKs0LQFHl7qPdGF3eXEfCqqz8AS8O1CVGVJ0u
JLILtCVEeWxhbiBCYWtlciA8YmFrZXIuZHlsYW4uY0BnbWFpbC5jb20+iJYEExYK
AD4WIQRxxLdWILx1cItL2yVMlfqrPrBz7AUCWnyRvwIbAwUJA8JnAAULCQgHAwUV
CgkICwUWAgMBAAIeAQIXgAAKCRBMlfqrPrBz7E4yAQDeLnajXKGm0cOKTTKZciCr
wCu+adRzN2OICwTD74EkhwD/fxFpWbRF+j0x8I1IhQKCDSzg9XWRBlr/CXMYHooW
MgG0JUR5bGFuIEJha2VyIDxkeWxhbmJha2VyQGZhc3RtYWlsLmNvbT6IlgQTFgoA
PhYhBHHEt1YgvHVwi0vbJUyV+qs+sHPsBQJafJE3AhsDBQkDwmcABQsJCAcDBRUK
CQgLBRYCAwEAAh4BAheAAAoJEEyV+qs+sHPsRI0A/Rse2e31DK6ZExY2hMWz9hsZ
hNM1j/BwlwevpkpyttLVAP9ESri0JrTZ0weqTIFcTPTXzaGYAiOp9VNCjWxDACKY
CbQtRHlsYW4gQmFrZXIgKEludGVsKSA8ZHlsYW4uYy5iYWtlckBpbnRlbC5jb20+
iJYEExYKAD4WIQRxxLdWILx1cItL2yVMlfqrPrBz7AUCWnyRTQIbAwUJA8JnAAUL
CQgHAwUVCgkICwUWAgMBAAIeAQIXgAAKCRBMlfqrPrBz7Lp3AQCl4i0jh6W5XpBT
2LyBLLNmzESBuu2kB+GrAs3CHqSO8AD/eE8POE0+01ngnDtAfl+VqrJ4l7Wf7a2s
h3FR0PgZNw64OARafIr6EgorBgEEAZdVAQUBAQdA3VHAaYhkaOfoGJSd3xV+AQBG
SUTsyFxlJ0e0giyLjigDAQgHiH4EGBYIACYWIQRxxLdWILx1cItL2yVMlfqrPrBz
7AUCWnyK+gIbDAUJA8JnAAAKCRBMlfqrPrBz7JLLAQCGnVUyjuvWZwLLlH3sRqa7
QRHfqfgBSVZqcds2FeHNTQEAwapDlvM3VbK6QLblu2wnSkQWiOiZ86/0uC9FMUFP
tgA=
=37PC
-----END PGP PUBLIC KEY BLOCK-----
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQENBF5i1J4BCACsKVBDxUpz0m03D6ojiR4zZTuLJuI8qrc5HivZiJOKBWvKUm8/
SUSCCbJ5ka7zwfEQMepm0rdQfFj6BDqAqEAmG/WU9TTbNx3TBDtT3CBBXSDaiWjO
BFlglWKXJeUfHYpfIB1sC6aIIdSnPlU57Fs7jA9FtHbJM3SSwab/492udHZY/bKV
s53Z7KcZDKPMtuZCnGbOZ1+lu8EMHuw9TfqQZODUOvDPYjpzqZAjsTJwdNtOeyWv
dafED7PTpuod6eQnvgUKFlj6aqoZhZa9/hWdGDhexLzRGM4pwZcUMEb+1pd1TBko
wqXJbW3XLs5B/cGiEbqHyDVoaI6J/JleDY1RABEBAAG0IkVyaWMgRW5nZXN0cm9t
IDxlcmljQGVuZ2VzdHJvbS5jaD6JAU4EEwEIADgWIQRXVR3hW5aPY0HCSPaNjjGv
wyQopgUCXmLUngIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCNjjGvwyQo
puKwCACTeD0Eh+M8IIEAuGVtPgy3jCDIoOnNg+QI6VAh9qNB4Yx0uPzvOwmvAODY
fUdPbBxn9CIU1X3buJmI1G75c2ZT+ZXJbkute6oif+f2E6vLe+Ox0GeGIBNQK4iZ
+pV0JPn3seqhDJAekRBWXNJszuVNxSDFsVi+qEoTPJZze7yOcc1QMcRsnJ+S7YFg
jf/5aRrqdnLxVbph53Vrawas3rQk97Ln+vNd/Ca1HMv8vXMPtEFLk5JQI+gmdVv3
xcpz2ss3mMU5+YnY69T1EBemZIMcE17wPo7ROvT8x1fG2fnPwHqJieQFCMGKLW29
5peUY2OiHdLgaepbqWrB2Xxy+BY+
=rSFv
-----END PGP PUBLIC KEY BLOCK-----
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
UnRVR1Ln06pOfJxmNA==
=HZlC
-----END PGP PUBLIC KEY BLOCK-----

4
debian/watch vendored Normal file
View File

@ -0,0 +1,4 @@
#git=git://anongit.freedesktop.org/mesa/mesa
version=3
opts="uversionmangle=s/-rc/~rc/,dversionmangle=s/\+repack//,pgpsigurlmangle=s/$/.sig/,pasv" \
https://mesa.freedesktop.org/archive/mesa-(.*)\.tar\.xz

18
main.sh Executable file
View File

@ -0,0 +1,18 @@
# Clone Upstream
git clone https://gitlab.freedesktop.org/mesa/mesa -b mesa-23.1.5
cp -rvf ./debian ./mesa/
cd ./mesa
# Get build deps
apt-get build-dep ./ -y
# Build package
LOGNAME=root dh_make --createorig -y -l -p mesa_23.1.5
dpkg-buildpackage --no-sign
# Move the debs to output
cd ../
mkdir -p ./output
mv ./*.deb ./output/

18
main32.sh Executable file
View File

@ -0,0 +1,18 @@
# Clone Upstream
git clone https://gitlab.freedesktop.org/mesa/mesa -b mesa-23.1.5
cp -rvf ./debian ./mesa/
cd ./mesa
# Get build deps
apt-get build-dep ./ -y
# Build package
LOGNAME=root dh_make --createorig -y -l -p mesa_23.1.5
dpkg-buildpackage --no-sign
# Move the debs to output
cd ../
mkdir -p ./output
mv ./*.deb ./output/

12
release.sh Executable file
View File

@ -0,0 +1,12 @@
# Sign the packages
rm -rf ./output/mesa-vulkan*.deb
dpkg-sig --sign builder ./output/*.deb
# Pull down existing ppa repo db files etc
rsync -azP --exclude '*.deb' ferreo@direct.pika-os.com:/srv/www/pikappa/ ./output/repo
# Add the new package to the repo
reprepro -V --basedir ./output/repo/ includedeb lunar ./output/*.deb
# Push the updated ppa repo to the server
rsync -azP ./output/repo/ ferreo@direct.pika-os.com:/srv/www/pikappa/