package mesa {
	description = "open source implementations of OpenGL, OpenGL ES, Vulkan, OpenCL, and more"
	website = "https://mesa3d.org"
	anitya = 1970
	latest = anityaFallback

	version# = "26.1.1"
	source = remoteGitLab {
		domain = "gitlab.freedesktop.org"
		suffix = "mesa/mesa"
		ref = "mesa-"+version
		checksum = "OFCxGSTBe7qbnbVdazIJBNMFaQ-ylD5aRzo-JstSAdA0-hvVdRwsZiovMBm2rMzp"
	}

	exec = meson {
		setup = [
			"Dplatforms": "x11,wayland"
			"Dvideo-codecs": "all"

			"Dglvnd": "enabled"
			"Dgbm": "enabled"

			"Dgallium-drivers": join([
					"asahi"     // Apple AGX
					"crocus"    // Intel legacy
					"etnaviv"   // Vivante GPU designs (mostly NXP/Marvell SoCs)
					"freedreno" // Qualcomm Adreno (all Qualcomm SoCs)
					"i915"      // Intel extra legacy
					"iris"      // new Intel (Broadwell+)
					"lima"      // ARM Mali 4xx
					"llvmpipe"  // software renderer
					"nouveau"   // Nvidia
					"panfrost"  // ARM Mali Midgard and up (T/G series)
					"r300"      // very old AMD
					"r600"      // less old AMD
					"radeonsi"  // new AMD (GCN+)
					"softpipe"  // older software renderer
					"svga"      // VMWare virtualized GPU
					"tegra"     // Nvidia Tegra SoCs
					"v3d"       // Broadcom VC5 (Raspberry Pi 4)
					"vc4"       // Broadcom VC4 (Raspberry Pi 0-3)
					"virgl"     // QEMU virtualized GPU (aka VirGL)
					"zink"      // generic OpenGL over Vulkan, experimental

					// d3d12: WSL emulated GPU (aka Dozen)
					// ethosu: accelerator
					// rocket: accelerator
				], ",")

			"Dvulkan-drivers": join([
					"amd"         // AMD (aka RADV)
					"broadcom"    // Broadcom VC5 (Raspberry Pi 4, aka V3D)
					"freedreno"   // Qualcomm Adreno (all Qualcomm SoCs)
					"intel"       // new Intel (aka ANV)
					"intel_hasvk" // Intel Haswell/Broadwell, "legacy" Vulkan driver (https://www.phoronix.com/news/Intel-HasVK-Drop-Dead-Code)
					"panfrost"    // ARM Mali Midgard and up (T/G series)
					"swrast"      // software renderer (aka Lavapipe)
					"virtio"      // QEMU virtualized GPU (aka VirGL)
					"imagination" // PowerVR Rogue
					"asahi"       // Apple AGX
					"gfxstream"   // Android virtualized GPU

					// nouveau: Nouveau (aka NVK), requires rust
					// microsoft-experimental: WSL virtualized GPU (aka DZN/Dozen)
					// kosmickrisp: macOS-specific
				], ",")

			"Dvulkan-layers": join([
					"device-select"
					"intel-nullhw"
					"overlay"
					"screenshot"
					"anti-lag"
					"vram-report-limit"
				], ",")

			"Dfreedreno-kmds": "msm,virtio"
			"Damdgpu-virtio": "true"
		]
	}

	inputs = [
		m4
		python-packaging
		python-mako
		python-pyyaml
		python-pycparser
		glslang
		spirv-llvm-translator

		zlib
		zstd
		gzip
		ncurses
		libglvnd
		libexpat
		libva
		libdrm
		elfutils
		bison
		flex
		lm_sensors
		libconfig
		libdisplay-info
		wayland
		wayland-protocols
		libxshmfence
		libXxf86vm
		libXrandr
		libxcb-keysyms
		libpng
		libarchive
		kernel-headers
	]

	runtime = [
		libdrm
		elfutils
		lm_sensors
		libdisplayInfo
		wayland
		libxshmfence
		libXxf86vm
		libXrandr
		libxcb-keysyms
		libpng
	]
}
