1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
|
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=mesa
pkgver=21.3.8
pkgrel=0
pkgdesc="Mesa DRI OpenGL library"
url="https://www.mesa3d.org"
arch="all"
license="MIT SGI-B-2.0 BSL-1.0"
subpackages="
$pkgname-dbg
$pkgname-dev
$pkgname-dri-classic:_dri
$pkgname-dri-gallium:_dri
$pkgname-va-gallium:_va
$pkgname-vdpau-gallium:_vdpau
$pkgname-glapi $pkgname-egl $pkgname-gl $pkgname-gles
$pkgname-xatracker $pkgname-osmesa $pkgname-gbm
$pkgname-vulkan-ati:_vulkan
$pkgname-dri-ati:_dri_deprecated
$pkgname-dri-nouveau:_dri_deprecated
$pkgname-vulkan-layers:_vulkan_layers
"
_llvmver=13
depends_dev="
libdrm-dev
libxext-dev
libxdamage-dev
libxcb-dev
libxshmfence-dev
"
makedepends="
$depends_dev
bison
eudev-dev
expat-dev
findutils
flex
gettext
elfutils-dev
glslang-dev
libtool
libxfixes-dev
libva-dev
libvdpau-dev
libx11-dev
libxml2-dev
libxrandr-dev
libxvmc-dev
libxxf86vm-dev
llvm$_llvmver-dev
meson
py3-mako
python3
wayland-dev
wayland-protocols
xorgproto
zlib-dev
zstd-dev
"
source="
https://mesa.freedesktop.org/archive/mesa-$pkgver.tar.xz
musl-fix-includes.patch
add-use-elf-tls.patch
disable-rgb10-by-default.patch
0001-radeonsi-On-Aarch64-force-persistent-buffers-to-GTT.patch
"
replaces="mesa-dricore"
options="!check" # we skip tests intentionally
if [ "$CARCH" = x86 ]; then
# Bug upstream that needs to be fixed
options="$options textrels"
fi
_dri_driverdir=/usr/lib/xorg/modules/dri
_dri_drivers="r100,r200,nouveau"
_gallium_drivers="r300,r600,radeonsi,nouveau,swrast,virgl"
_gallium_provides="
$pkgname-dri-swrast=$pkgver-r$pkgrel
$pkgname-dri-virtio=$pkgver-r$pkgrel
"
_vulkan_drivers="amd"
_vulkan_layers="device-select,overlay"
case "$CARCH" in
x86*)
_dri_drivers="${_dri_drivers},i915,i965"
_gallium_drivers="${_gallium_drivers},svga,iris,crocus"
_vulkan_drivers="${_vulkan_drivers},intel"
_vulkan_layers="$_vulkan_layers,intel-nullhw"
subpackages="
$subpackages
$pkgname-dri-intel:_dri_deprecated
$pkgname-vulkan-intel:_vulkan
"
_gallium_provides="$_gallium_provides $pkgname-dri-vmwgfx=$pkgver-r$pkgrel"
_arch_opts="-Ddri3=enabled"
case "$CARCH" in
x86)
_arch_opts="$_arch_opts -Dglx-read-only-text=true";;
esac
;;
armhf|armv7|aarch64)
_gallium_drivers="${_gallium_drivers},vc4,v3d,freedreno,kmsro,lima,panfrost,etnaviv,tegra"
_gallium_provides="$_gallium_provides
$pkgname-dri-vc4=$pkgver-r$pkgrel
$pkgname-dri-v3d=$pkgver-r$pkgrel
$pkgname-dri-freedreno=$pkgver-r$pkgrel
$pkgname-dri-kmsro=$pkgver-r$pkgrel
$pkgname-dri-lima=$pkgver-r$pkgrel
$pkgname-dri-panfrost=$pkgver-r$pkgrel
$pkgname-dri-etnaviv=$pkgver-r$pkgrel
$pkgname-dri-tegra=$pkgver-r$pkgrel
"
;;
esac
build() {
export CFLAGS="$CFLAGS -D_XOPEN_SOURCE=700"
export MESA_GIT_SHA1_OVERRIDE=53b2b224dc2de982c37915a0ad218e33365ff75e
python3 bin/git_sha1_gen.py --output include/git_sha1.h
abuild-meson \
-Ddri-drivers-path=$_dri_driverdir \
-Dgallium-drivers=$_gallium_drivers \
-Ddri-drivers=$_dri_drivers \
-Dvulkan-drivers=$_vulkan_drivers \
-Dvulkan-layers=$_vulkan_layers \
-Dplatforms=x11,wayland \
-Dllvm=enabled \
-Dshared-llvm=enabled \
-Dshared-glapi=enabled \
-Dgbm=enabled \
-Dglx=dri \
-Dopengl=true \
-Dosmesa=true \
-Dgles1=disabled \
-Dgles2=enabled \
-Degl=enabled \
-Dgallium-xa=enabled \
-Dgallium-vdpau=enabled \
-Dgallium-va=enabled \
-Dgallium-xvmc=disabled \
-Dgallium-nine=false \
-Db_ndebug=true \
$_arch_opts \
. output
# Print config
meson configure output
# parallel build workaround
ninja -C output src/compiler/nir/nir_intrinsics.h
meson compile ${JOBS:+-j ${JOBS}} -C output
}
package() {
DESTDIR="$pkgdir" meson install --no-rebuild -C output
}
egl() {
pkgdesc="Mesa libEGL runtime libraries"
depends="mesa=$pkgver-r$pkgrel"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libEGL.so* "$subpkgdir"/usr/lib/
}
gl() {
pkgdesc="Mesa libGL runtime libraries"
depends="mesa=$pkgver-r$pkgrel"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libGL.so* "$subpkgdir"/usr/lib/
}
glapi() {
pkgdesc="Mesa shared glapi"
replaces="$pkgname-gles=$pkgver-r$pkgrel"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libglapi.so.* "$subpkgdir"/usr/lib/
}
gles() {
pkgdesc="Mesa libGLESv2 runtime libraries"
depends="mesa=$pkgver-r$pkgrel"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libGLES*.so* "$subpkgdir"/usr/lib/
}
xatracker() {
pkgdesc="Mesa XA state tracker for vmware"
depends="mesa=$pkgver-r$pkgrel"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libxatracker*.so.* "$subpkgdir"/usr/lib/
}
osmesa() {
pkgdesc="Mesa offscreen rendering libraries"
depends="mesa=$pkgver-r$pkgrel"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libOSMesa.so.* "$subpkgdir"/usr/lib/
}
gbm() {
pkgdesc="Mesa gbm library"
depends="mesa=$pkgver-r$pkgrel"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libgbm.so.* "$subpkgdir"/usr/lib/
}
# Move links referencing the same file to the subpackage.
# Usage: _mv_links <base directory> <example>
# where <example> is one of the libraries covered by the megadriver.
# The example is used to find other links that point to the same file.
_mv_links() {
install -d "$subpkgdir"/$1
find -L "$pkgdir"/$1 -samefile "$pkgdir"/$1/$2 -print0 \
| xargs -0 -I{} mv {} "$subpkgdir"/$1/
}
_mv_vulkan() {
local i
install -d "$subpkgdir"/usr/lib
install -d "$subpkgdir"/usr/share/vulkan/icd.d
for i in "$@"; do
mv "$pkgdir"/usr/lib/libvulkan_$i.so "$subpkgdir"/usr/lib/
mv "$pkgdir"/usr/share/vulkan/icd.d/${i}* "$subpkgdir"/usr/share/vulkan/icd.d/
done
}
# Mesa uses "megadrivers" where multiple drivers are linked into one shared
# library. This library is then hard-linked to separate files (one for each driver).
# Each subpackage contains one megadriver so that all the hard-links are preserved.
_dri() {
local n=${subpkgname##*-dri-}
pkgdesc="Mesa $n DRI drivers"
depends="mesa=$pkgver-r$pkgrel"
case $n in
classic)
# libmesa_dri_drivers.so
_mv_links $_dri_driverdir radeon_dri.so ;;
gallium)
# libgallium_dri.so
_mv_links $_dri_driverdir swrast_dri.so
provides="$_gallium_provides"
;;
esac
}
# Compatibility packages for upgrading from the old (driver-specific) subpackages
_dri_deprecated() {
local n=${subpkgname##*-dri-}
pkgdesc="Mesa DRI drivers for $n (DEPRECATED)"
depends="
mesa-dri-classic=$pkgver-r$pkgrel
mesa-dri-gallium=$pkgver-r$pkgrel
"
case $n in
ati|nouveau)
depends="$depends mesa-va-gallium mesa-vdpau-gallium" ;;
esac
mkdir "$subpkgdir"
}
_va() {
local n=${subpkgname##*-va-}
pkgdesc="Mesa $n VAAPI drivers"
depends="mesa=$pkgver-r$pkgrel libva"
case $n in
gallium)
# libgallium_drv_video.so
_mv_links /usr/lib/dri radeonsi_drv_video.so ;;
esac
}
_vdpau() {
local n=${subpkgname##*-vdpau-}
pkgdesc="Mesa $n VDPAU drivers"
depends="mesa=$pkgver-r$pkgrel libvdpau"
case $n in
gallium)
# libvdpau_gallium.so.1.0.0
_mv_links /usr/lib/vdpau libvdpau_radeonsi.so.1.0.0 ;;
esac
}
_vulkan() {
local n=${subpkgname##*-vulkan-}
pkgdesc="Mesa Vulkan API driver for $n"
depends="mesa=$pkgver-r$pkgrel"
case $n in
ati)
_mv_vulkan radeon ;;
intel)
_mv_vulkan intel ;;
esac
}
_vulkan_layers() {
pkgdesc="collection of vulkan layers from mesa"
depends="python3"
# Remove this after the release of the next stable (3.14)
# it originally was claed layer as it only packaged the
# overlay one but now it also packages device-select and
# intel-nullhw (on x86*)
provides="$pkgname-vulkan-layer=$pkgver-r$pkgrel"
replaces="$pkgname-vulkan-layer=$pkgver-r$pkgrel"
amove usr/share/vulkan/explicit_layer.d
amove usr/share/vulkan/implicit_layer.d
amove usr/lib/libVkLayer_*.so
amove usr/bin/mesa-overlay-control.py
}
sha512sums="
0462c44fa8e358dafd03088411452bc172a365902795b3198df1e6cfbf1d87675ef5b72b572de7f15e5ee87b30ce5b2f217c81ea72b376962f6428c6ff83f2e9 mesa-21.3.8.tar.xz
77b40d3b70a78e1f261f0a0358f3b5f15d5f0a6d51ba317e38053f426a14487a459743df2e4734e9c086f1f083572e78279eb8a5dde191ef0c2914594513194b musl-fix-includes.patch
de7c6fec14476539c564afa4bf59a3c8d5f34a687ffdbacfe94403e3ad4e78773222b2b74b08a1fd16b7dc9504decca1429273c179ad702c02a140e1dff15205 add-use-elf-tls.patch
ae5ffb9259efc339a868c778186889fa1a6eacb4dc4b2452f31f9c65e1a6273e856665300d2982fb2680b4d182aae574ceda258e15c00d7ae16960ba09240ef1 disable-rgb10-by-default.patch
fdbc13888f09d157feae6ce3b8a63cc606d7ed19e364cdb89ccce25a367255b498bbe82862a487c29d8f98d5e31980ef1f0879b06823cedb54801fd54cd461ad 0001-radeonsi-On-Aarch64-force-persistent-buffers-to-GTT.patch
"
|