diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b728b599..8545ecb9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -212,6 +212,7 @@ jobs: "libdrm-dev:$package_arch" "libgl-dev:$package_arch" "libglx-dev:$package_arch" + "libvulkan-dev:$package_arch" "libwayland-dev:$package_arch" "libwayland-client0:$package_arch" "libx11-dev:$package_arch" @@ -492,6 +493,8 @@ jobs: devel/pkgconf \ graphics/libdrm \ graphics/libglvnd \ + graphics/vulkan-headers \ + graphics/vulkan-loader \ graphics/wayland \ multimedia/libass \ multimedia/libv4l \ diff --git a/CMakeLists.txt b/CMakeLists.txt index c4c8f0e2..3824f475 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,6 +34,7 @@ option(BUILD_FFMPEG_X264 "Build FFmpeg x264" ON) option(BUILD_FFMPEG_X264_PATCHES "Apply FFmpeg x264 patches" ON) option(BUILD_FFMPEG_X265 "Build FFmpeg x265" ON) option(BUILD_FFMPEG_X265_PATCHES "Apply FFmpeg x265 patches" ON) +option(BUILD_FFMPEG_VULKAN "Build FFmpeg with Vulkan video encoding support" ON) # common includes include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/apply_git_patch.cmake) diff --git a/README.md b/README.md index ba3798ef..10ebd706 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,8 @@ pkg install -y \ devel/nasm \ devel/ninja \ devel/pkgconf \ + graphics/vulkan-headers \ + graphics/vulkan-loader \ multimedia/libass \ multimedia/libv4l \ multimedia/libva \ @@ -86,7 +88,7 @@ pkg install -y \ ```bash sudo apt install -y \ -autoconf \ + autoconf \ automake \ build-essential \ cmake \ @@ -100,6 +102,7 @@ autoconf \ libsdl2-dev \ libtool \ libvorbis-dev \ + libvulkan-dev \ libxcb1-dev \ libxcb-shm0-dev \ libxcb-xfixes0-dev \ diff --git a/cmake/ffmpeg/_main.cmake b/cmake/ffmpeg/_main.cmake index acf90440..2f0f511c 100644 --- a/cmake/ffmpeg/_main.cmake +++ b/cmake/ffmpeg/_main.cmake @@ -6,6 +6,7 @@ set(AVCODEC_GENERATED_SRC_PATH ${CMAKE_CURRENT_BINARY_DIR}/FFmpeg/libavcodec) if(WIN32) set(BUILD_FFMPEG_LIBVA OFF) + set(BUILD_FFMPEG_VULKAN OFF) # We must disable CUDA and NVENC on ARM64 until following issues is resolved # https://github.com/FFmpeg/FFmpeg/blob/4e5523c98597a417eb43555933b1075d18ec5f8b/configure#L7443 @@ -17,6 +18,7 @@ elseif(APPLE) set(BUILD_FFMPEG_MF OFF) set(BUILD_FFMPEG_NV_CODEC_HEADERS OFF) set(BUILD_FFMPEG_LIBVA OFF) + set(BUILD_FFMPEG_VULKAN OFF) elseif(FREEBSD) set(BUILD_FFMPEG_AMF OFF) set(BUILD_FFMPEG_MF OFF) diff --git a/cmake/ffmpeg/ffmpeg.cmake b/cmake/ffmpeg/ffmpeg.cmake index 05b9ae0a..f76eca65 100644 --- a/cmake/ffmpeg/ffmpeg.cmake +++ b/cmake/ffmpeg/ffmpeg.cmake @@ -83,6 +83,12 @@ if(BUILD_FFMPEG_LIBVA) --enable-encoder=h264_vaapi,hevc_vaapi,av1_vaapi ) endif() +if(BUILD_FFMPEG_VULKAN) + list(APPEND FFMPEG_EXTRA_CONFIGURE + --enable-vulkan + --enable-encoder=h264_vulkan,hevc_vulkan,av1_vulkan + ) +endif() if(BUILD_FFMPEG_X264) list(APPEND FFMPEG_EXTRA_CONFIGURE --enable-libx264