LibVA - Updates and fixes (#16)
* Setup - Updates
* Jenkins - Updates
* CMakeList - Updates for Libva public
[ROCm/rocjpeg commit: 6aaca70cd9]
This commit is contained in:
@@ -16,6 +16,7 @@ def runCompileCommand(platform, project, jobName, boolean debug=false, boolean s
|
||||
make -j\$(nproc)
|
||||
sudo make install
|
||||
sudo make package
|
||||
objdump -x /opt/rocm/lib/librocjpeg.so | grep NEEDED
|
||||
ldd -v /opt/rocm/lib/librocjpeg.so
|
||||
"""
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
# rocJPEG changelog
|
||||
|
||||
Documentation for rocJPEG is available at
|
||||
[https://rocm.docs.amd.com/projects/rocJPEG/en/latest/](TBD)
|
||||
|
||||
## rocJPEG 0.2.0 (Unreleased)
|
||||
|
||||
## Additions
|
||||
|
||||
* Changelog.md
|
||||
|
||||
## Optimizations
|
||||
|
||||
* Setup Script - Error Check install & cleanup
|
||||
|
||||
### Changes
|
||||
|
||||
* Dependencies - Updates to core dependencies
|
||||
* LibVA Headers - Use public headers
|
||||
|
||||
### Fixes
|
||||
|
||||
* Package deps
|
||||
|
||||
### Tested configurations
|
||||
|
||||
* Linux
|
||||
* Ubuntu - `20.04` / `22.04`
|
||||
* RHEL - `8` / `9`
|
||||
* ROCm:
|
||||
* rocm-core - `6.1.0.60100-64`
|
||||
* amdgpu-core - `1:6.1.60100-1741643`
|
||||
* libva-dev - `2.7.0-2` / `2.14.0-1`
|
||||
* mesa-amdgpu-va-drivers - `1:24.1.0`
|
||||
* rocJPEG Setup Script - `V1.1.0`
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
cmake_minimum_required (VERSION 3.5)
|
||||
|
||||
set(VERSION "0.1.0")
|
||||
set(VERSION "0.2.0")
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
|
||||
# Set Project Version and Language
|
||||
@@ -182,13 +182,13 @@ if(HIP_FOUND AND Libva_FOUND)
|
||||
string(REGEX MATCH "22.04" UBUNTU_22_FOUND ${OS_RELEASE})
|
||||
|
||||
# Set the dependent packages
|
||||
set(rocJPEG_DEBIAN_PACKAGE_LIST "rocm-hip-runtime, libdrm-amdgpu1, libva-amdgpu-drm2, mesa-amdgpu-va-drivers")
|
||||
set(rocJPEG_RPM_PACKAGE_LIST "rocm-hip-runtime, libdrm-amdgpu, libva-amdgpu, mesa-amdgpu-dri-drivers")
|
||||
set(rocJPEG_DEBIAN_DEV_PACKAGE_LIST "rocm-hip-runtime-dev, libva-amdgpu-dev, pkg-config")
|
||||
set(rocJPEG_DEBIAN_PACKAGE_LIST "rocm-hip-runtime, libva2, libdrm-amdgpu1, mesa-amdgpu-va-drivers")
|
||||
set(rocJPEG_RPM_PACKAGE_LIST "rocm-hip-runtime, libva, libdrm-amdgpu, mesa-amdgpu-dri-drivers")
|
||||
set(rocJPEG_DEBIAN_DEV_PACKAGE_LIST "rocm-hip-runtime-dev, libva-dev, pkg-config")
|
||||
if(UBUNTU_22_FOUND)
|
||||
set(rocJPEG_DEBIAN_DEV_PACKAGE_LIST "${rocJPEG_DEBIAN_DEV_PACKAGE_LIST}, libstdc++-12-dev")
|
||||
endif()
|
||||
set(rocJPEG_RPM_DEV_PACKAGE_LIST "rocm-hip-runtime-devel, libva-amdgpu-devel, pkg-config")
|
||||
set(rocJPEG_RPM_DEV_PACKAGE_LIST "rocm-hip-runtime-devel, libva-devel, pkg-config")
|
||||
|
||||
# '%{?dist}' breaks manual builds on debian systems due to empty Provides
|
||||
execute_process(
|
||||
@@ -242,21 +242,21 @@ if(HIP_FOUND AND Libva_FOUND)
|
||||
set(CPACK_RPM_TEST_PACKAGE_OBSOLETES "${PROJECT_NAME}-test")
|
||||
|
||||
if(NOT ROCM_DEP_ROCMCORE)
|
||||
string(REGEX REPLACE ",? ?rocm-core," "" CPACK_RPM_RUNTIME_PACKAGE_REQUIRES ${CPACK_RPM_RUNTIME_PACKAGE_REQUIRES})
|
||||
string(REGEX REPLACE ",? ?rocm-core-asan," "" CPACK_RPM_ASAN_PACKAGE_REQUIRES ${CPACK_RPM_ASAN_PACKAGE_REQUIRES})
|
||||
string(REGEX REPLACE ",? ?rocm-core," "" CPACK_RPM_DEV_PACKAGE_REQUIRES ${CPACK_RPM_DEV_PACKAGE_REQUIRES})
|
||||
string(REGEX REPLACE ",? ?rocm-core," "" CPACK_RPM_TEST_PACKAGE_REQUIRES ${CPACK_RPM_TEST_PACKAGE_REQUIRES})
|
||||
string(REGEX REPLACE ",? ?rocm-core," "" CPACK_DEBIAN_RUNTIME_PACKAGE_DEPENDS ${CPACK_DEBIAN_RUNTIME_PACKAGE_DEPENDS})
|
||||
string(REGEX REPLACE ",? ?rocm-core-asan," "" CPACK_DEBIAN_ASAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_ASAN_PACKAGE_DEPENDS})
|
||||
string(REGEX REPLACE ",? ?rocm-core," "" CPACK_DEBIAN_DEV_PACKAGE_DEPENDS ${CPACK_DEBIAN_DEV_PACKAGE_DEPENDS})
|
||||
string(REGEX REPLACE ",? ?rocm-core," "" CPACK_DEBIAN_TEST_PACKAGE_DEPENDS ${CPACK_DEBIAN_TEST_PACKAGE_DEPENDS})
|
||||
string(REGEX REPLACE ",? ?rocm-core," "" CPACK_RPM_RUNTIME_PACKAGE_REQUIRES ${CPACK_RPM_RUNTIME_PACKAGE_REQUIRES})
|
||||
string(REGEX REPLACE ",? ?rocm-core-asan," "" CPACK_RPM_ASAN_PACKAGE_REQUIRES ${CPACK_RPM_ASAN_PACKAGE_REQUIRES})
|
||||
string(REGEX REPLACE ",? ?rocm-core," "" CPACK_RPM_DEV_PACKAGE_REQUIRES ${CPACK_RPM_DEV_PACKAGE_REQUIRES})
|
||||
string(REGEX REPLACE ",? ?rocm-core," "" CPACK_RPM_TEST_PACKAGE_REQUIRES ${CPACK_RPM_TEST_PACKAGE_REQUIRES})
|
||||
string(REGEX REPLACE ",? ?rocm-core," "" CPACK_DEBIAN_RUNTIME_PACKAGE_DEPENDS ${CPACK_DEBIAN_RUNTIME_PACKAGE_DEPENDS})
|
||||
string(REGEX REPLACE ",? ?rocm-core-asan," "" CPACK_DEBIAN_ASAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_ASAN_PACKAGE_DEPENDS})
|
||||
string(REGEX REPLACE ",? ?rocm-core," "" CPACK_DEBIAN_DEV_PACKAGE_DEPENDS ${CPACK_DEBIAN_DEV_PACKAGE_DEPENDS})
|
||||
string(REGEX REPLACE ",? ?rocm-core," "" CPACK_DEBIAN_TEST_PACKAGE_DEPENDS ${CPACK_DEBIAN_TEST_PACKAGE_DEPENDS})
|
||||
endif()
|
||||
|
||||
if(ENABLE_ASAN_PACKAGING)
|
||||
# ASAN Package requires asan component with only libraries and license file
|
||||
set(CPACK_COMPONENTS_ALL asan)
|
||||
# ASAN Package requires asan component with only libraries and license file
|
||||
set(CPACK_COMPONENTS_ALL asan)
|
||||
else()
|
||||
set(CPACK_COMPONENTS_ALL runtime dev test)
|
||||
set(CPACK_COMPONENTS_ALL runtime dev test)
|
||||
endif()
|
||||
|
||||
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
|
||||
@@ -314,6 +314,6 @@ else()
|
||||
message(FATAL_ERROR "-- ERROR!: HIP Not Found! - please install rocm-hip-runtime-dev!")
|
||||
endif()
|
||||
if(NOT Libva_FOUND)
|
||||
message(FATAL_ERROR "-- ERROR!: libva Not Found - please install libva-amdgpu-dev(DBEAIN)/libva-amdgpu-devel(RPM) package!")
|
||||
message(FATAL_ERROR "-- ERROR!: libva Not Found - please install libva-dev(DEBIAN)/libva-devel(RPM) package!")
|
||||
endif()
|
||||
endif()
|
||||
@@ -28,14 +28,19 @@ rocJPEG is a high performance JPEG decode SDK for AMD GPUs. Using the rocJPEG AP
|
||||
> [!IMPORTANT]
|
||||
> `sudo amdgpu-install --usecase=rocm`
|
||||
|
||||
* AMD Multimedia packages
|
||||
* [Video Acceleration API](https://en.wikipedia.org/wiki/Video_Acceleration_API) Version `1.5.0+` - `Libva` is an implementation for VA-API
|
||||
```shell
|
||||
sudo apt install libva-dev
|
||||
```
|
||||
> [!NOTE]
|
||||
> RPM Packages for `RHEL`/`SLES` - `libva-devel`
|
||||
|
||||
```shell
|
||||
sudo apt install libva-amdgpu-dev libdrm-amdgpu1 mesa-amdgpu-va-drivers
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> RPM Packages for `RHEL`/`SLES` - `libva-amdgpu-devel libdrm-amdgpu mesa-amdgpu-dri-drivers`
|
||||
* AMD VA Drivers
|
||||
```shell
|
||||
sudo apt install mesa-amdgpu-va-drivers
|
||||
```
|
||||
> [!NOTE]
|
||||
> RPM Packages for `RHEL`/`SLES` - `libdrm-amdgpu mesa-amdgpu-dri-drivers`
|
||||
|
||||
* CMake `3.5` or later
|
||||
|
||||
@@ -204,4 +209,6 @@ page.
|
||||
* ROCm:
|
||||
* rocm-core - `6.1.0.60100-62`
|
||||
* amdgpu-core - `1:6.1.60100-1741643`
|
||||
* rocJPEG Setup Script - `V1.0`
|
||||
* libva-dev - `2.7.0-2` / `2.14.0-1`
|
||||
* mesa-amdgpu-va-drivers - `1:24.1.0`
|
||||
* rocJPEG Setup Script - `V1.1`
|
||||
|
||||
@@ -21,14 +21,33 @@
|
||||
#
|
||||
################################################################################
|
||||
|
||||
find_library(LIBVA_LIBRARY NAMES va HINTS /opt/amdgpu/lib/x86_64-linux-gnu /opt/amdgpu/lib64 NO_DEFAULT_PATH)
|
||||
find_library(LIBVA_DRM_LIBRARY NAMES va-drm HINTS /opt/amdgpu/lib/x86_64-linux-gnu /opt/amdgpu/lib64 NO_DEFAULT_PATH)
|
||||
find_path(LIBVA_INCLUDE_DIR NAMES va/va.h PATHS /opt/amdgpu/include NO_DEFAULT_PATH)
|
||||
find_library(LIBVA_LIBRARY NAMES va HINTS /usr/lib/x86_64-linux-gnu /usr/lib64 /opt/amdgpu/lib/x86_64-linux-gnu /opt/amdgpu/lib64)
|
||||
find_library(LIBVA_DRM_LIBRARY NAMES va-drm HINTS /usr/lib/x86_64-linux-gnu /usr/lib64 /opt/amdgpu/lib/x86_64-linux-gnu /opt/amdgpu/lib64)
|
||||
find_path(LIBVA_INCLUDE_DIR NAMES va/va.h PATHS /usr/include /opt/amdgpu/include)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Libva DEFAULT_MSG LIBVA_INCLUDE_DIR LIBVA_LIBRARY)
|
||||
mark_as_advanced(LIBVA_INCLUDE_DIR LIBVA_LIBRARY LIBVA_DRM_LIBRARY)
|
||||
|
||||
if(Libva_FOUND)
|
||||
# Find VA Version
|
||||
file(READ "${LIBVA_INCLUDE_DIR}/va/va_version.h" VA_VERSION_FILE)
|
||||
string(REGEX MATCH "VA_MAJOR_VERSION ([0-9]*)" _ ${VA_VERSION_FILE})
|
||||
set(va_ver_major ${CMAKE_MATCH_1})
|
||||
string(REGEX MATCH "VA_MINOR_VERSION ([0-9]*)" _ ${VA_VERSION_FILE})
|
||||
set(va_ver_minor ${CMAKE_MATCH_1})
|
||||
string(REGEX MATCH "VA_MICRO_VERSION ([0-9]*)" _ ${VA_VERSION_FILE})
|
||||
set(va_ver_micro ${CMAKE_MATCH_1})
|
||||
message("-- ${White}Found Libva Version: ${va_ver_major}.${va_ver_minor}.${va_ver_micro}${ColourReset}")
|
||||
|
||||
if((${va_ver_major} GREATER_EQUAL 1) AND (${va_ver_minor} GREATER_EQUAL 5))
|
||||
message("-- ${White}\tLibva Version Supported${ColourReset}")
|
||||
else()
|
||||
set(Libva_FOUND FALSE)
|
||||
message("-- ${Yellow}\tLibva Version Not Supported${ColourReset}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(Libva_FOUND)
|
||||
if(NOT TARGET Libva::va)
|
||||
add_library(Libva::va UNKNOWN IMPORTED)
|
||||
|
||||
@@ -27,11 +27,18 @@ if sys.version_info[0] < 3:
|
||||
else:
|
||||
import subprocess
|
||||
|
||||
__copyright__ = "Copyright (c) 2024, AMD ROCm rocJPEG"
|
||||
__version__ = "1.0"
|
||||
__copyright__ = "Copyright (c) 2024, AMD rocJPEG"
|
||||
__version__ = "1.1.0"
|
||||
__email__ = "mivisionx.support@amd.com"
|
||||
__status__ = "Shipping"
|
||||
|
||||
# error check calls
|
||||
def ERROR_CHECK(call):
|
||||
status = call
|
||||
if(status != 0):
|
||||
print('ERROR_CHECK failed with status:'+str(status))
|
||||
exit(status)
|
||||
|
||||
# Arguments
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--rocm_path', type=str, default='/opt/rocm',
|
||||
@@ -75,12 +82,13 @@ linuxSystemInstall = ''
|
||||
linuxCMake = 'cmake'
|
||||
linuxSystemInstall_check = ''
|
||||
linuxFlag = ''
|
||||
sudoValidateOption= '-v'
|
||||
if "centos" in platfromInfo or "redhat" in platfromInfo or os.path.exists('/usr/bin/yum'):
|
||||
linuxSystemInstall = 'yum -y'
|
||||
linuxSystemInstall_check = '--nogpgcheck'
|
||||
if "centos-7" in platfromInfo or "redhat-7" in platfromInfo:
|
||||
linuxCMake = 'cmake3'
|
||||
os.system(linuxSystemInstall+' install cmake3')
|
||||
print("\nrocJPEG Setup on "+platfromInfo+" is unsupported\n")
|
||||
exit(-1)
|
||||
if not "centos" in platfromInfo or not "redhat" in platfromInfo:
|
||||
platfromInfo = platfromInfo+'-redhat'
|
||||
elif "Ubuntu" in platfromInfo or os.path.exists('/usr/bin/apt-get'):
|
||||
@@ -95,7 +103,7 @@ elif os.path.exists('/usr/bin/zypper'):
|
||||
platfromInfo = platfromInfo+'-SLES'
|
||||
else:
|
||||
print("\nrocJPEG Setup on "+platfromInfo+" is unsupported\n")
|
||||
print("\nrocJPEG Setup Supported on: Ubuntu 20/22; CentOS 8; RedHat 8/9; & SLES 15 SP5\n")
|
||||
print("\nrocJPEG Setup Supported on: Ubuntu 20/22, RedHat 8/9, & SLES 15 SP4\n")
|
||||
exit(-1)
|
||||
|
||||
# rocJPEG Setup
|
||||
@@ -103,26 +111,63 @@ print("\nrocJPEG Setup on: "+platfromInfo+"\n")
|
||||
print("\nrocJPEG Dependencies Installation with rocJPEG-setup.py V-"+__version__+"\n")
|
||||
|
||||
if userName == 'root':
|
||||
os.system(linuxSystemInstall+' update')
|
||||
os.system(linuxSystemInstall+' install sudo')
|
||||
ERROR_CHECK(os.system(linuxSystemInstall+' update'))
|
||||
ERROR_CHECK(os.system(linuxSystemInstall+' install sudo'))
|
||||
|
||||
# install pre-reqs
|
||||
os.system('sudo -v')
|
||||
os.system(linuxSystemInstall+' update')
|
||||
os.system('sudo '+linuxFlag+' '+linuxSystemInstall+' ' +
|
||||
linuxSystemInstall_check+' install gcc cmake pkg-config')
|
||||
# source install - common package dependencies
|
||||
commonPackages = [
|
||||
'gcc',
|
||||
'cmake',
|
||||
'git',
|
||||
'wget',
|
||||
'unzip',
|
||||
'pkg-config',
|
||||
'inxi',
|
||||
'rocm-hip-runtime'
|
||||
]
|
||||
|
||||
# rocJPEG Core - VA/DRM Requirements
|
||||
# Debian packages
|
||||
coreDebianPackages = [
|
||||
'rocm-hip-runtime-dev',
|
||||
'libva2',
|
||||
'libva-dev',
|
||||
'libdrm-amdgpu1',
|
||||
'mesa-amdgpu-va-drivers',
|
||||
'vainfo'
|
||||
]
|
||||
coreDebianU22Packages = [
|
||||
'libstdc++-12-dev'
|
||||
]
|
||||
|
||||
# RPM Packages
|
||||
coreRPMPackages = [
|
||||
'rocm-hip-runtime-devel',
|
||||
'libva',
|
||||
'libva-devel',
|
||||
'libdrm-amdgpu',
|
||||
'mesa-amdgpu-dri-drivers',
|
||||
'libva-utils'
|
||||
]
|
||||
|
||||
# common packages
|
||||
ERROR_CHECK(os.system('sudo '+sudoValidateOption))
|
||||
for i in range(len(commonPackages)):
|
||||
ERROR_CHECK(os.system('sudo '+linuxFlag+' '+linuxSystemInstall +
|
||||
' '+linuxSystemInstall_check+' install '+ commonPackages[i]))
|
||||
|
||||
# rocJPEG Core - LibVA Requirements
|
||||
ERROR_CHECK(os.system('sudo '+sudoValidateOption))
|
||||
if "Ubuntu" in platfromInfo:
|
||||
os.system('sudo -v')
|
||||
os.system('sudo '+linuxFlag+' '+linuxSystemInstall+' '+linuxSystemInstall_check +
|
||||
' install vainfo libdrm-amdgpu1 libva-amdgpu-dev mesa-amdgpu-va-drivers')
|
||||
for i in range(len(coreDebianPackages)):
|
||||
ERROR_CHECK(os.system('sudo '+linuxFlag+' '+linuxSystemInstall +
|
||||
' '+linuxSystemInstall_check+' install '+ coreDebianPackages[i]))
|
||||
if "22.04" in platform.version():
|
||||
os.system('sudo '+linuxFlag+' '+linuxSystemInstall+' '+linuxSystemInstall_check +
|
||||
' install libstdc++-12-dev')
|
||||
for i in range(len(coreDebianU22Packages)):
|
||||
ERROR_CHECK(os.system('sudo '+linuxFlag+' '+linuxSystemInstall +
|
||||
' '+linuxSystemInstall_check+' install '+ coreDebianU22Packages[i]))
|
||||
else:
|
||||
os.system('sudo -v')
|
||||
os.system('sudo '+linuxFlag+' '+linuxSystemInstall+' '+linuxSystemInstall_check +
|
||||
' install libdrm-amdgpu libva-amdgpu-devel mesa-amdgpu-dri-drivers')
|
||||
for i in range(len(coreRPMPackages)):
|
||||
ERROR_CHECK(os.system('sudo '+linuxFlag+' '+linuxSystemInstall +
|
||||
' '+linuxSystemInstall_check+' install '+ coreRPMPackages[i]))
|
||||
|
||||
print("\nrocJPEG Dependencies Installed with rocJPEG-setup.py V-"+__version__+"\n")
|
||||
|
||||
Reference in New Issue
Block a user