lol
1{ lib, stdenv
2, fetchFromGitLab
3, meson
4, ninja
5, pkg-config
6, python3Packages
7, vulkan-headers
8, vulkan-loader
9, shaderc
10, glslang
11, lcms2
12, libepoxy
13, libGL
14, xorg
15, libunwind
16}:
17
18stdenv.mkDerivation rec {
19 pname = "libplacebo";
20 version = "4.208.0";
21
22 src = fetchFromGitLab {
23 domain = "code.videolan.org";
24 owner = "videolan";
25 repo = pname;
26 rev = "v${version}";
27 sha256 = "161dp5781s74ca3gglaxlmchx7glyshf0wg43w98pl22n1jcm5qk";
28 };
29
30 nativeBuildInputs = [
31 meson
32 ninja
33 pkg-config
34 python3Packages.Mako
35 ];
36
37 buildInputs = [
38 vulkan-headers
39 vulkan-loader
40 shaderc
41 glslang
42 lcms2
43 libepoxy
44 libGL
45 xorg.libX11
46 libunwind
47 ];
48
49 mesonFlags = [
50 "-Dvulkan-registry=${vulkan-headers}/share/vulkan/registry/vk.xml"
51 "-Ddemos=false" # Don't build and install the demo programs
52 "-Dd3d11=disabled" # Disable the Direct3D 11 based renderer
53 ] ++ lib.optionals stdenv.isDarwin [
54 "-Dunwind=disabled" # libplacebo doesn’t build with `darwin.libunwind`
55 ];
56
57 meta = with lib; {
58 description = "Reusable library for GPU-accelerated video/image rendering primitives";
59 longDescription = ''
60 Reusable library for GPU-accelerated image/view processing primitives and
61 shaders, as well a batteries-included, extensible, high-quality rendering
62 pipeline (similar to mpv's vo_gpu). Supports Vulkan, OpenGL and Metal (via
63 MoltenVK).
64 '';
65 homepage = "https://code.videolan.org/videolan/libplacebo";
66 changelog = "https://code.videolan.org/videolan/libplacebo/-/tags/v${version}";
67 license = licenses.lgpl21Plus;
68 maintainers = with maintainers; [ primeos tadeokondrak ];
69 platforms = platforms.all;
70 };
71}