Dockerfile 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. ARG BASE_VERSION=latest
  2. # Stage 1: Build
  3. FROM doitandbedone/ispyagentdvr:$BASE_VERSION AS builder
  4. USER root
  5. # Build dependencies
  6. RUN sed -i 's/# deb-src/deb-src/' /etc/apt/sources.list && \
  7. apt update && \
  8. apt -y build-dep mesa && \
  9. apt install -y git cmake pkg-config libdrm-dev automake libtool \
  10. wayland-protocols llvm-15 python3-mako bison flex meson \
  11. libxfixes-dev libx11-xcb-dev libxcb-dri3-dev libwayland-dev \
  12. libudev-dev libunwind-dev libxcb-keysyms1-dev \
  13. libgl1-mesa-dev libva-dev libomxil-bellagio-dev libx264-dev libx265-dev
  14. RUN ln -s /usr/bin/llvm-config-15 /usr/bin/llvm-config
  15. ENV PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig
  16. ENV LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
  17. ENV LIBVA_DRIVER_NAME=radeonsi
  18. ENV LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri
  19. ENV XDG_RUNTIME_DIR=/run/user/0
  20. # Build libva
  21. RUN git clone https://github.com/intel/libva.git && \
  22. cd libva && git checkout v2.21-branch && \
  23. meson setup build -Dprefix=/usr -Dlibdir=/usr/lib/x86_64-linux-gnu && \
  24. ninja -C build && \
  25. ninja install -C build
  26. RUN git clone https://github.com/intel/libva-utils.git && \
  27. cd libva-utils && git checkout v2.21-branch && \
  28. meson setup build -Dprefix=/usr -Dlibdir=/usr/lib/x86_64-linux-gnu && \
  29. ninja -C build && \
  30. ninja install -C build
  31. RUN git clone https://gitlab.freedesktop.org/mesa/mesa.git && \
  32. cd mesa && git checkout 23.2 && \
  33. meson setup builddir/ \
  34. -Dprefix=/usr \
  35. -Dlibdir=/usr/lib/x86_64-linux-gnu \
  36. -Dplatforms=x11,wayland \
  37. -Dgallium-drivers=auto \
  38. -Dvulkan-drivers=auto \
  39. -Dbuildtype=release \
  40. -Dvideo-codecs=h264dec,h264enc,h265dec,h265enc \
  41. -Dgallium-va=enabled && \
  42. ninja -C builddir/ && \
  43. ninja install -C builddir/
  44. # Stage 2: Runtime
  45. FROM doitandbedone/ispyagentdvr:$BASE_VERSION
  46. USER root
  47. # Only runtime dependencies
  48. RUN apt update && apt install -y \
  49. libdrm2 \
  50. libdrm-amdgpu1 \
  51. libdrm-radeon1 \
  52. libdrm-nouveau2 \
  53. libllvm15 \
  54. libwayland-client0 \
  55. libwayland-server0 \
  56. libx11-6 \
  57. libx11-xcb1 \
  58. libxcb1 \
  59. libxcb-dri3-0 \
  60. libxcb-present0 \
  61. libxcb-sync1 \
  62. libxcb-xfixes0 \
  63. libxshmfence1 \
  64. libexpat1 \
  65. libzstd1 \
  66. libelf1 \
  67. libunwind8 \
  68. linux-firmware &&\
  69. apt autoremove -y && \
  70. apt clean && \
  71. rm -rf /var/lib/apt/lists/*
  72. # Copy built artifacts from builder
  73. COPY --from=builder /usr/lib/x86_64-linux-gnu/libva* /usr/lib/x86_64-linux-gnu/
  74. COPY --from=builder /usr/lib/x86_64-linux-gnu/dri/ /usr/lib/x86_64-linux-gnu/dri/
  75. COPY --from=builder /usr/bin/vainfo /usr/bin/
  76. RUN ldconfig && \
  77. groupadd render && \
  78. usermod -aG video,render root
  79. ENV LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
  80. ENV LIBVA_DRIVER_NAME=radeonsi
  81. ENV LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri
  82. ENV XDG_RUNTIME_DIR=/run/user/0