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

	version# = "26.2.0";
	source = remoteGitLab {
		domain = "gitlab.freedesktop.org";
		suffix = "mesa/mesa";
		ref = "mesa-"+version;
		checksum = "UPnIdpo5wUsE938GXY-YyYDzfF62enRoEzCYRyLLPvzBhBbP4wZ8nDiKsjivcs5v";
	};

	exec = meson {
		setup = {
			"platforms": "x11,wayland";
			"video-codecs": "all";

			"glvnd": "enabled";
			"gbm": "enabled";
			"egl": "enabled";

			"gallium-drivers": join {
				elems = [
					"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
				];
				sep = ",";
			};

			"vulkan-drivers": join {
				elems = [
					"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
				];
				sep = ",";
			};

			"vulkan-layers": join {
				elems = [
					"device-select",
					"intel-nullhw",
					"overlay",
					"screenshot",
					"anti-lag",
					"vram-report-limit",
				];
				sep = ",";
			};

			"freedreno-kmds": "msm,virtio";
			"amdgpu-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 = [
		llvm,
		libdrm,
		elfutils,
		lm_sensors,
		libdisplay-info,
		wayland,
		libxshmfence,
		libXxf86vm,
		libXrandr,
		libxcb-keysyms,
		libpng,
	];
}
