aboutsummaryrefslogtreecommitdiffstats
path: root/main/mesa/APKBUILD
blob: 97a9f62a6cb319d8d1c2222463aa91032a7f5df6 (plain) (blame)
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
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=mesa
pkgver=20.3.2
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
	"
_llvmver=10
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
	libtool
	libxfixes-dev
	libva-dev
	libvdpau-dev
	libx11-dev
	libxrandr-dev
	libxt-dev
	libxvmc-dev
	libxxf86vm-dev
	llvm$_llvmver-dev
	makedepend
	meson
	py3-mako
	py3-libxml2
	python3
	talloc-dev
	wayland-dev
	wayland-protocols
	xorgproto
	zlib-dev
	zstd-dev
	"
source="
	https://mesa.freedesktop.org/archive/mesa-$pkgver.tar.xz
	adjust-cache-deflate-buffer.patch
	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_overlay_layer=false
case "$CARCH" in
x86*)
	_dri_drivers="${_dri_drivers},i915,i965"
	_gallium_drivers="${_gallium_drivers},svga,iris"
	_vulkan_drivers="${_vulkan_drivers},intel"
	_vulkan_overlay_layer=true
	makedepends="$makedepends glslang"
	subpackages="$subpackages \
			$pkgname-dri-intel:_dri_deprecated \
			$pkgname-vulkan-intel:_vulkan
			$pkgname-vulkan-layer:_vulkan_layer"
	_gallium_provides="$_gallium_provides $pkgname-dri-vmwgfx=$pkgver-r$pkgrel"
	_arch_opts="-Ddri3=true"
	case "$CARCH" in
	x86)
		_arch_opts="$_arch_opts -Dglx-read-only-text=true -Dasm=false";;
	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-overlay-layer=$_vulkan_overlay_layer \
		-Dplatforms=x11,wayland \
		-Dllvm=true \
		-Dshared-llvm=true \
		-Dshared-glapi=true \
		-Dgbm=true \
		-Dglx=dri \
		-Dopengl=true \
		-Dosmesa=gallium \
		-Dgles1=false \
		-Dgles2=true \
		-Degl=true \
		-Dgallium-xa=true \
		-Dgallium-vdpau=true \
		-Dgallium-va=true \
		-Dgallium-xvmc=false \
		-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_layer() {
	pkgdesc="Vulkan overlay layer to display information about the application"
	depends=""

	mkdir -p "$subpkgdir"/usr/bin "$subpkgdir"/usr/share/vulkan "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/share/vulkan/explicit_layer.d "$subpkgdir"/usr/share/vulkan
	mv "$pkgdir"/usr/lib/libVkLayer_MESA_overlay.so "$subpkgdir"/usr/lib

	mv "$pkgdir"/usr/bin/mesa-overlay-control.py "$subpkgdir"/usr/bin
}

sha512sums="0cabf8ddfd20b56098c8f4c081a3c2d4741ef42f40c929645e74284db99cf2a81137d7d279b7b6a0c15dea83905119ddf612411b36344dc22a488de9f311f5ed  mesa-20.3.2.tar.xz
adb6ccac89bc5a382689db615184b7b36a267001e8e27f951e68020e45edd318fc278408c9eae922a74db3df3d98d52f13119d4e3691be38bd05e6a57348103e  adjust-cache-deflate-buffer.patch
77b40d3b70a78e1f261f0a0358f3b5f15d5f0a6d51ba317e38053f426a14487a459743df2e4734e9c086f1f083572e78279eb8a5dde191ef0c2914594513194b  musl-fix-includes.patch
ed65ff134022f839f1395f51683d1bb2e61586163516bf104450c96707b7071d80475c2f2d905b77892658257fdfea040a84b6d9b8b23d669924ebd5d7eca055  add-use-elf-tls.patch
efdb49daf7daa173a349785497c2d908f3140ce133d84ef9b2b983afdafda8ee853b3edcd96889b614cc0477e076c7ba2cea4b409f396df3da0561534975459b  disable-rgb10-by-default.patch
fdbc13888f09d157feae6ce3b8a63cc606d7ed19e364cdb89ccce25a367255b498bbe82862a487c29d8f98d5e31980ef1f0879b06823cedb54801fd54cd461ad  0001-radeonsi-On-Aarch64-force-persistent-buffers-to-GTT.patch"