mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-08-15 21:19:47 +00:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3826ed7191 | |||
| 9b2dd39171 | |||
| 2dbce2afc4 | |||
| b8dba9507f | |||
| 7d05ab127d | |||
| 4b8f15e7a2 | |||
| 3ba034e982 | |||
| bab6eca78e | |||
| 161e4d9992 | |||
| 43969dfe1d | |||
| 6903f7a7fd |
Vendored
+74
-32
@@ -58,16 +58,24 @@ endif()
|
|||||||
|
|
||||||
if (PLATFORM_PS4 OR PLATFORM_MANAGARM)
|
if (PLATFORM_PS4 OR PLATFORM_MANAGARM)
|
||||||
# Doesn't support VA-API, don't go thru the embarrassment of trying to enable it
|
# Doesn't support VA-API, don't go thru the embarrassment of trying to enable it
|
||||||
list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vaapi)
|
list(APPEND FFmpeg_HWACCEL_FLAGS
|
||||||
elseif (UNIX AND NOT DEFINED FFmpeg_IS_CROSS_COMPILING AND NOT ANDROID)
|
--disable-vaapi
|
||||||
|
--disnable-cuvid
|
||||||
|
--disnable-ffnvcodec
|
||||||
|
--disnable-nvdec
|
||||||
|
--disable-vulkan
|
||||||
|
--disable-libdrm)
|
||||||
|
elseif (UNIX)
|
||||||
find_package(PkgConfig REQUIRED)
|
find_package(PkgConfig REQUIRED)
|
||||||
pkg_check_modules(LIBVA libva)
|
|
||||||
pkg_check_modules(CUDA cuda)
|
|
||||||
pkg_check_modules(FFNVCODEC ffnvcodec)
|
|
||||||
pkg_check_modules(VDPAU vdpau)
|
|
||||||
|
|
||||||
|
# X11 is "optional", some distros may opt for a super-fully wayland install...
|
||||||
find_package(X11)
|
find_package(X11)
|
||||||
if(X11_FOUND)
|
if(X11_FOUND)
|
||||||
|
# Include X11 if possible, some APIs such as VDPAU heavily depend
|
||||||
|
# upon it's existence!
|
||||||
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${X11_LIBRARIES})
|
||||||
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${X11_INCLUDE_DIRS})
|
||||||
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${X11_LDFLAGS})
|
||||||
if (NOT APPLE)
|
if (NOT APPLE)
|
||||||
# In Solaris needs explicit linking for ffmpeg which links to /lib/amd64/libX11.so
|
# In Solaris needs explicit linking for ffmpeg which links to /lib/amd64/libX11.so
|
||||||
if(PLATFORM_SUN)
|
if(PLATFORM_SUN)
|
||||||
@@ -76,32 +84,37 @@ elseif (UNIX AND NOT DEFINED FFmpeg_IS_CROSS_COMPILING AND NOT ANDROID)
|
|||||||
"${CMAKE_SYSROOT}/usr/lib/xorg/amd64/libdrm.so")
|
"${CMAKE_SYSROOT}/usr/lib/xorg/amd64/libdrm.so")
|
||||||
else()
|
else()
|
||||||
pkg_check_modules(LIBDRM libdrm REQUIRED)
|
pkg_check_modules(LIBDRM libdrm REQUIRED)
|
||||||
list(APPEND FFmpeg_HWACCEL_LIBRARIES
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${LIBDRM_LIBRARIES})
|
||||||
${LIBDRM_LIBRARIES})
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${LIBDRM_INCLUDE_DIRS})
|
||||||
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${LIBDRM_LDFLAGS})
|
||||||
${LIBDRM_INCLUDE_DIRS})
|
|
||||||
endif()
|
endif()
|
||||||
list(APPEND FFmpeg_HWACCEL_FLAGS
|
list(APPEND FFmpeg_HWACCEL_FLAGS --enable-libdrm)
|
||||||
--enable-libdrm)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
pkg_check_modules(LIBVA libva)
|
||||||
if(LIBVA_FOUND)
|
if(LIBVA_FOUND)
|
||||||
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${LIBVA_LIBRARIES})
|
||||||
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${LIBVA_INCLUDE_DIRS})
|
||||||
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${LIBVA_LDFLAGS})
|
||||||
|
|
||||||
|
# Logically, they can only exist if libva itself exists
|
||||||
pkg_check_modules(LIBVA-DRM libva-drm REQUIRED)
|
pkg_check_modules(LIBVA-DRM libva-drm REQUIRED)
|
||||||
pkg_check_modules(LIBVA-X11 libva-x11 REQUIRED)
|
pkg_check_modules(LIBVA-X11 libva-x11 REQUIRED)
|
||||||
list(APPEND FFmpeg_HWACCEL_LIBRARIES
|
if (LIBVA-DRM_FOUND)
|
||||||
${X11_LIBRARIES}
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${LIBVA-DRM_LIBRARIES})
|
||||||
${LIBVA-DRM_LIBRARIES}
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${LIBVA-DRM_INCLUDE_DIRS})
|
||||||
${LIBVA-X11_LIBRARIES}
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${LIBVA-DRM_LDFLAGS})
|
||||||
${LIBVA_LIBRARIES})
|
endif()
|
||||||
|
if (LIBVA-X11_FOUND)
|
||||||
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${LIBVA-X11_LIBRARIES})
|
||||||
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${LIBVA-X11_INCLUDE_DIRS})
|
||||||
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${LIBVA-X11_LDFLAGS})
|
||||||
|
endif()
|
||||||
|
|
||||||
list(APPEND FFmpeg_HWACCEL_FLAGS
|
list(APPEND FFmpeg_HWACCEL_FLAGS
|
||||||
--enable-hwaccel=h264_vaapi
|
--enable-hwaccel=h264_vaapi
|
||||||
--enable-hwaccel=vp8_vaapi
|
--enable-hwaccel=vp8_vaapi
|
||||||
--enable-hwaccel=vp9_vaapi)
|
--enable-hwaccel=vp9_vaapi)
|
||||||
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS
|
|
||||||
${X11_INCLUDE_DIRS}
|
|
||||||
${LIBVA-DRM_INCLUDE_DIRS}
|
|
||||||
${LIBVA-X11_INCLUDE_DIRS}
|
|
||||||
${LIBVA_INCLUDE_DIRS}
|
|
||||||
)
|
|
||||||
message(STATUS "ffmpeg: va-api libraries version ${LIBVA_VERSION} found")
|
message(STATUS "ffmpeg: va-api libraries version ${LIBVA_VERSION} found")
|
||||||
else()
|
else()
|
||||||
list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vaapi)
|
list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vaapi)
|
||||||
@@ -112,6 +125,12 @@ elseif (UNIX AND NOT DEFINED FFmpeg_IS_CROSS_COMPILING AND NOT ANDROID)
|
|||||||
message(WARNING "ffmpeg: X11 libraries not found, disabling VA-API...")
|
message(WARNING "ffmpeg: X11 libraries not found, disabling VA-API...")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
pkg_check_modules(CUDA cuda)
|
||||||
|
pkg_check_modules(FFNVCODEC ffnvcodec)
|
||||||
|
pkg_check_modules(VDPAU vdpau)
|
||||||
|
pkg_check_modules(VULKAN vulkan)
|
||||||
|
find_package(spirv-headers)
|
||||||
|
|
||||||
if (FFNVCODEC_FOUND)
|
if (FFNVCODEC_FOUND)
|
||||||
list(APPEND FFmpeg_HWACCEL_FLAGS
|
list(APPEND FFmpeg_HWACCEL_FLAGS
|
||||||
--enable-cuvid
|
--enable-cuvid
|
||||||
@@ -119,8 +138,7 @@ elseif (UNIX AND NOT DEFINED FFmpeg_IS_CROSS_COMPILING AND NOT ANDROID)
|
|||||||
--enable-nvdec
|
--enable-nvdec
|
||||||
--enable-hwaccel=h264_nvdec
|
--enable-hwaccel=h264_nvdec
|
||||||
--enable-hwaccel=vp8_nvdec
|
--enable-hwaccel=vp8_nvdec
|
||||||
--enable-hwaccel=vp9_nvdec
|
--enable-hwaccel=vp9_nvdec)
|
||||||
)
|
|
||||||
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${FFNVCODEC_LIBRARIES})
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${FFNVCODEC_LIBRARIES})
|
||||||
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${FFNVCODEC_INCLUDE_DIRS})
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${FFNVCODEC_INCLUDE_DIRS})
|
||||||
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${FFNVCODEC_LDFLAGS})
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${FFNVCODEC_LDFLAGS})
|
||||||
@@ -141,8 +159,7 @@ elseif (UNIX AND NOT DEFINED FFmpeg_IS_CROSS_COMPILING AND NOT ANDROID)
|
|||||||
list(APPEND FFmpeg_HWACCEL_FLAGS
|
list(APPEND FFmpeg_HWACCEL_FLAGS
|
||||||
--enable-vdpau
|
--enable-vdpau
|
||||||
--enable-hwaccel=h264_vdpau
|
--enable-hwaccel=h264_vdpau
|
||||||
--enable-hwaccel=vp9_vdpau
|
--enable-hwaccel=vp9_vdpau)
|
||||||
)
|
|
||||||
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${VDPAU_LIBRARIES})
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${VDPAU_LIBRARIES})
|
||||||
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${VDPAU_INCLUDE_DIRS})
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${VDPAU_INCLUDE_DIRS})
|
||||||
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${VDPAU_LDFLAGS})
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${VDPAU_LDFLAGS})
|
||||||
@@ -151,6 +168,24 @@ elseif (UNIX AND NOT DEFINED FFmpeg_IS_CROSS_COMPILING AND NOT ANDROID)
|
|||||||
list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vdpau)
|
list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vdpau)
|
||||||
message(WARNING "ffmpeg: libvdpau-dev not found, disabling Video Decode and Presentation API for Unix (VDPAU)...")
|
message(WARNING "ffmpeg: libvdpau-dev not found, disabling Video Decode and Presentation API for Unix (VDPAU)...")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (VULKAN_FOUND AND NOT APPLE)
|
||||||
|
list(APPEND FFmpeg_HWACCEL_FLAGS
|
||||||
|
--enable-vulkan
|
||||||
|
--enable-hwaccel=h264_vulkan
|
||||||
|
--enable-hwaccel=vp9_vulkan)
|
||||||
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${VULKAN_LIBRARIES})
|
||||||
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${VULKAN_INCLUDE_DIRS})
|
||||||
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${VULKAN_LDFLAGS})
|
||||||
|
message(STATUS "ffmpeg: vulkan libraries version ${VULKAN_VERSION} found")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (SPIRV_HEADERS_FOUND)
|
||||||
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES ${SPIRV_HEADERS_LIBRARIES})
|
||||||
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${SPIRV_HEADERS_INCLUDE_DIRS})
|
||||||
|
list(APPEND FFmpeg_HWACCEL_LDFLAGS ${SPIRV_HEADERS_LDFLAGS})
|
||||||
|
message(STATUS "ffmpeg: spirv-headers libraries version ${SPIRV_HEADERS_VERSION} found")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (PLATFORM_PS4)
|
if (PLATFORM_PS4)
|
||||||
@@ -247,8 +282,14 @@ else()
|
|||||||
|
|
||||||
# `configure` parameters builds only exactly what yuzu needs from FFmpeg
|
# `configure` parameters builds only exactly what yuzu needs from FFmpeg
|
||||||
# `--disable-vdpau` is needed to avoid linking issues
|
# `--disable-vdpau` is needed to avoid linking issues
|
||||||
set(FFmpeg_CC ${CMAKE_C_COMPILER_LAUNCHER} ${CMAKE_C_COMPILER})
|
set(FFmpeg_CC ${CMAKE_C_COMPILER_LAUNCHER} ${CMAKE_C_COMPILER})
|
||||||
set(FFmpeg_CXX ${CMAKE_CXX_COMPILER_LAUNCHER} ${CMAKE_CXX_COMPILER})
|
set(FFmpeg_CXX ${CMAKE_CXX_COMPILER_LAUNCHER} ${CMAKE_CXX_COMPILER})
|
||||||
|
if (FFmpeg_IS_CROSS_COMPILING)
|
||||||
|
list(APPEND FFmpeg_CROSS_COMPILE_FLAGS --ld=${CMAKE_LINKER})
|
||||||
|
endif ()
|
||||||
|
# TODO: This is a bit fragile, it depends on FFmpeg_HWACCEL_LDFLAGS being a list
|
||||||
|
# whereas CMAKE_C_FLAGS (and likewise) is meant to NOT be a list, but rather
|
||||||
|
# an elongated piece of string
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT
|
OUTPUT
|
||||||
${FFmpeg_MAKEFILE}
|
${FFmpeg_MAKEFILE}
|
||||||
@@ -262,6 +303,7 @@ else()
|
|||||||
--disable-ffprobe
|
--disable-ffprobe
|
||||||
--disable-network
|
--disable-network
|
||||||
--disable-swresample
|
--disable-swresample
|
||||||
|
--disable-iconv
|
||||||
--enable-decoder=h264
|
--enable-decoder=h264
|
||||||
--enable-decoder=vp8
|
--enable-decoder=vp8
|
||||||
--enable-decoder=vp9
|
--enable-decoder=vp9
|
||||||
@@ -269,10 +311,9 @@ else()
|
|||||||
--enable-pic
|
--enable-pic
|
||||||
--cc=${FFmpeg_CC}
|
--cc=${FFmpeg_CC}
|
||||||
--cxx=${FFmpeg_CXX}
|
--cxx=${FFmpeg_CXX}
|
||||||
--ld=${CMAKE_LINKER}
|
|
||||||
--extra-cflags=${CMAKE_C_FLAGS}
|
--extra-cflags=${CMAKE_C_FLAGS}
|
||||||
--extra-cxxflags=${CMAKE_CXX_FLAGS}
|
--extra-cxxflags=${CMAKE_CXX_FLAGS}
|
||||||
--extra-ldflags=${CMAKE_C_LINK_FLAGS}
|
--extra-ldflags="${FFmpeg_HWACCEL_LDFLAGS}"
|
||||||
${FFmpeg_HWACCEL_FLAGS}
|
${FFmpeg_HWACCEL_FLAGS}
|
||||||
${FFmpeg_CROSS_COMPILE_FLAGS}
|
${FFmpeg_CROSS_COMPILE_FLAGS}
|
||||||
WORKING_DIRECTORY
|
WORKING_DIRECTORY
|
||||||
@@ -280,6 +321,7 @@ else()
|
|||||||
)
|
)
|
||||||
unset(FFmpeg_CC)
|
unset(FFmpeg_CC)
|
||||||
unset(FFmpeg_CXX)
|
unset(FFmpeg_CXX)
|
||||||
|
unset(FFmpeg_LD)
|
||||||
unset(FFmpeg_HWACCEL_FLAGS)
|
unset(FFmpeg_HWACCEL_FLAGS)
|
||||||
unset(FFmpeg_CROSS_COMPILE_FLAGS)
|
unset(FFmpeg_CROSS_COMPILE_FLAGS)
|
||||||
|
|
||||||
@@ -294,7 +336,7 @@ else()
|
|||||||
set(FFmpeg_BUILD_LIBRARIES ${FFmpeg_LIBRARIES})
|
set(FFmpeg_BUILD_LIBRARIES ${FFmpeg_LIBRARIES})
|
||||||
|
|
||||||
# BSD make or Solaris make don't support ffmpeg make-j8
|
# BSD make or Solaris make don't support ffmpeg make-j8
|
||||||
if (PLATFORM_LINUX OR ANDROID OR APPLE OR WIN32 OR PLATFORM_FREEBSD)
|
if (DEFINED SYSTEM_THREADS AND (PLATFORM_LINUX OR ANDROID OR APPLE OR WIN32 OR PLATFORM_FREEBSD))
|
||||||
set(FFmpeg_MAKE_ARGS -j${SYSTEM_THREADS})
|
set(FFmpeg_MAKE_ARGS -j${SYSTEM_THREADS})
|
||||||
else()
|
else()
|
||||||
set(FFmpeg_MAKE_ARGS "")
|
set(FFmpeg_MAKE_ARGS "")
|
||||||
|
|||||||
Reference in New Issue
Block a user