Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{
2 lib,
3 stdenv,
4 fetchurl,
5 meson,
6 ninja,
7 pkg-config,
8 buildPackages,
9 libGLU,
10 libepoxy,
11 libX11,
12 libdrm,
13 libgbm,
14 nativeContextSupport ? stdenv.hostPlatform.isLinux,
15 vaapiSupport ? !stdenv.hostPlatform.isDarwin,
16 libva,
17 vulkanSupport ? stdenv.hostPlatform.isLinux,
18 vulkan-headers,
19 vulkan-loader,
20 gitUpdater,
21}:
22
23stdenv.mkDerivation rec {
24 pname = "virglrenderer";
25 version = "1.1.1";
26
27 src = fetchurl {
28 url = "https://gitlab.freedesktop.org/virgl/virglrenderer/-/archive/${version}/virglrenderer-${version}.tar.bz2";
29 hash = "sha256-D+SJqBL76z1nGBmcJ7Dzb41RvFxU2Ak6rVOwDRB94rM=";
30 };
31
32 separateDebugInfo = true;
33
34 buildInputs = [
35 libepoxy
36 ]
37 ++ lib.optionals vaapiSupport [ libva ]
38 ++ lib.optionals vulkanSupport [
39 vulkan-headers
40 vulkan-loader
41 ]
42 ++ lib.optionals stdenv.hostPlatform.isLinux [
43 libGLU
44 libX11
45 libdrm
46 libgbm
47 ];
48
49 nativeBuildInputs = [
50 meson
51 ninja
52 pkg-config
53 (buildPackages.python3.withPackages (ps: [
54 ps.pyyaml
55 ]))
56 ];
57
58 mesonFlags = [
59 (lib.mesonBool "video" vaapiSupport)
60 (lib.mesonBool "venus" vulkanSupport)
61 ]
62 ++ lib.optionals nativeContextSupport [
63 (lib.mesonOption "drm-renderers" "amdgpu-experimental,msm")
64 ];
65
66 passthru = {
67 updateScript = gitUpdater {
68 url = "https://gitlab.freedesktop.org/virgl/virglrenderer.git";
69 rev-prefix = "virglrenderer-";
70 };
71 };
72
73 meta = with lib; {
74 description = "Virtual 3D GPU library that allows a qemu guest to use the host GPU for accelerated 3D rendering";
75 mainProgram = "virgl_test_server";
76 homepage = "https://virgil3d.github.io/";
77 license = licenses.mit;
78 platforms = platforms.unix;
79 maintainers = [ maintainers.xeji ];
80 };
81}