mirror of https://github.com/thesofproject/sof.git
Tools: Testbench: Switch testbench to IPC4 mode
The library_defconfig is changed to CONFIG_IPC_MAJOR_4=y. To prepare release of testbench with SOF the executable name is changed to sof-testbench4 for IPC4. The name is selected based on choice in library_defconfig. The script comp_run.sh for process_test.m and other test scripts is changed to execute the IPC4 testbench version with use of other topology v2 topologies sof-hda-benchmark-<comp><bits>.tplg. the script host-testbench.sh is changed to run tests for component names in IPC4 test topologies. The github workflow is changed due to change in used topologies for the test. The scripts/build-tools.sh need to be executed with "-Y" option to build topology2 files. Also need to use alsatplg from docker. The octave-io package is not needed for this step. Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This commit is contained in:
parent
aa2a02c549
commit
0a7ab5a70a
|
@ -37,16 +37,21 @@ jobs:
|
|||
- uses: actions/checkout@v4
|
||||
with: {fetch-depth: 0, filter: 'tree:0'}
|
||||
|
||||
- name: docker
|
||||
run: docker pull thesofproject/sof && docker tag thesofproject/sof sof
|
||||
|
||||
- name: apt get
|
||||
run: sudo apt-get update &&
|
||||
sudo apt-get -y install valgrind alsa-utils libasound2-dev ninja-build
|
||||
octave octave-io octave-signal
|
||||
octave octave-signal
|
||||
|
||||
# testbench needs some topologies.
|
||||
- name: build test topologies
|
||||
run: ./scripts/build-tools.sh -t ||
|
||||
run: CMAKE_BUILD_TYPE=Release ./scripts/docker-run.sh
|
||||
./scripts/build-tools.sh -Y ||
|
||||
VERBOSE=1 NO_PROCESSORS=1 USE_XARGS=no
|
||||
./scripts/build-tools.sh -t
|
||||
CMAKE_BUILD_TYPE=Release ./scripts/docker-run.sh
|
||||
./scripts/build-tools.sh -Y
|
||||
|
||||
- name: build testbench
|
||||
run: ./scripts/rebuild-testbench.sh ||
|
||||
|
|
|
@ -50,7 +50,7 @@ function die() {
|
|||
}
|
||||
|
||||
process_test_cmd() {
|
||||
octave -q --eval "pkg load signal io; [n_fail]=process_test('$1', $2, $3, $4, $5);exit(n_fail)"
|
||||
octave -q --eval "pkg load signal; [n_fail]=process_test('$1', $2, $3, $4, $5);exit(n_fail)"
|
||||
}
|
||||
|
||||
# function test_component()
|
||||
|
@ -86,17 +86,17 @@ head -c ${INPUT_FILE_SIZE} < /dev/zero > zeros_in.raw
|
|||
FullTest=${FullTest:-0}
|
||||
|
||||
# test with volume
|
||||
test_component volume 16 16 48000 "$FullTest"
|
||||
test_component volume 24 24 48000 "$FullTest"
|
||||
test_component volume 32 32 48000 "$FullTest"
|
||||
test_component gain 16 16 48000 "$FullTest"
|
||||
test_component gain 24 24 48000 "$FullTest"
|
||||
test_component gain 32 32 48000 "$FullTest"
|
||||
|
||||
# test with eq-iir
|
||||
test_component eq-iir 16 16 48000 "$FullTest"
|
||||
test_component eq-iir 24 24 48000 "$FullTest"
|
||||
test_component eq-iir 32 32 48000 "$FullTest"
|
||||
test_component eqiir 16 16 48000 "$FullTest"
|
||||
test_component eqiir 24 24 48000 "$FullTest"
|
||||
test_component eqiir 32 32 48000 "$FullTest"
|
||||
|
||||
# test with eq-fir
|
||||
test_component eq-fir 32 32 48000 "$FullTest"
|
||||
test_component eqfir 32 32 48000 "$FullTest"
|
||||
|
||||
# test with dcblock
|
||||
test_component dcblock 32 32 48000 "$FullTest"
|
||||
|
@ -105,7 +105,7 @@ test_component dcblock 32 32 48000 "$FullTest"
|
|||
test_component drc 32 32 48000 "$FullTest"
|
||||
|
||||
# test with multiband-drc
|
||||
test_component multiband-drc 32 32 48000 "$FullTest"
|
||||
test_component drc_multiband 32 32 48000 "$FullTest"
|
||||
|
||||
# test with src
|
||||
test_component src 24 24 48000 "$FullTest"
|
||||
|
|
|
@ -92,7 +92,7 @@ export_xtensa_setup()
|
|||
{
|
||||
export_dir=$TESTBENCH_DIR/$BUILD_DIR_NAME
|
||||
export_script=$export_dir/xtrun_env.sh
|
||||
xtbench=$export_dir/testbench
|
||||
xtbench=$export_dir/sof-testbench4
|
||||
xtbench_run="XTENSA_CORE=$XTENSA_CORE \$XTENSA_TOOLS_ROOT/$install_bin/xt-run $xtbench"
|
||||
cat <<EOFSETUP > "$export_script"
|
||||
export XTENSA_TOOLS_ROOT=$XTENSA_TOOLS_ROOT
|
||||
|
|
|
@ -22,8 +22,8 @@ CONFIG_COMP_VOLUME=y
|
|||
CONFIG_COMP_VOLUME_LINEAR_RAMP=y
|
||||
CONFIG_COMP_VOLUME_WINDOWS_FADE=y
|
||||
CONFIG_DEBUG_MEMORY_USAGE_SCAN=n
|
||||
CONFIG_IPC_MAJOR_3=y
|
||||
CONFIG_IPC_MAJOR_4=n
|
||||
CONFIG_IPC_MAJOR_3=n
|
||||
CONFIG_IPC_MAJOR_4=y
|
||||
CONFIG_LIBRARY=y
|
||||
CONFIG_LIBRARY_STATIC=y
|
||||
CONFIG_MATH_IIR_DF2T=y
|
||||
|
|
|
@ -16,7 +16,7 @@ Where volume_config.sh could be e.g. next. Minimal configuration need is only
|
|||
the COMP line.
|
||||
|
||||
# Volume component configuration
|
||||
COMP=volume
|
||||
COMP=gain
|
||||
DIRECTION=playback
|
||||
BITS_IN=16
|
||||
BITS_OUT=16
|
||||
|
@ -29,6 +29,7 @@ FN_OUT=output.raw
|
|||
FN_TRACE:=trace.txt # This is default value if FN_TRACE is not set via -e option
|
||||
VALGRIND=true
|
||||
XTRUN=
|
||||
TESTBENCH=sof-testbench4
|
||||
EOFHELP
|
||||
}
|
||||
|
||||
|
@ -48,6 +49,7 @@ parse_args ()
|
|||
FN_TRACE=
|
||||
EXTRA_OPTS=
|
||||
XTRUN=
|
||||
TESTBENCH=sof-testbench4
|
||||
|
||||
while getopts ":he:t:" opt; do
|
||||
case "${opt}" in
|
||||
|
@ -134,10 +136,10 @@ TPLG_DIR=../../build_tools/test/topology
|
|||
|
||||
# Testbench path and executable
|
||||
if [[ -z $XTRUN ]]; then
|
||||
TESTBENCH=../../testbench/build_testbench/install/bin/testbench
|
||||
PATH_TESTBENCH=../../testbench/build_testbench/install/bin/$TESTBENCH
|
||||
else
|
||||
BUILD_DIR=../../testbench/build_xt_testbench
|
||||
TESTBENCH="$BUILD_DIR"/testbench
|
||||
PATH_TESTBENCH="$BUILD_DIR"/$TESTBENCH
|
||||
source "$BUILD_DIR"/xtrun_env.sh
|
||||
XTRUN_CMD=$XTENSA_PATH/$XTRUN
|
||||
if $VALGRIND; then
|
||||
|
@ -152,17 +154,29 @@ else
|
|||
VALGRIND_CMD=
|
||||
fi
|
||||
|
||||
HOST_EXE="$XTRUN_CMD $TESTBENCH"
|
||||
HOST_EXE="$XTRUN_CMD $PATH_TESTBENCH"
|
||||
|
||||
# Use topology from component test topologies
|
||||
INFMT=s${BITS_IN}le
|
||||
OUTFMT=s${BITS_OUT}le
|
||||
TPLGFN=test-${DIRECTION}-ssp5-mclk-0-I2S-${COMP}-${INFMT}-${OUTFMT}-48k-24576k-codec.tplg
|
||||
TPLG_BUILD_TIP="Please run scripts/build-tools.sh -t"
|
||||
PIPELINES=
|
||||
|
||||
[[ $TESTBENCH == "sof-testbench4" ]] && {
|
||||
# With comp benchmark topologies for playback use pipelines 1-2, for capture 3-4
|
||||
[[ $DIRECTION == "playback" ]] && PIPELINES="-p 1,2"
|
||||
[[ $DIRECTION == "capture" ]] && PIPELINES="-p 3,4"
|
||||
TPLGFN=sof-hda-benchmark-${COMP}${BITS_IN}.tplg
|
||||
TPLG_DIR="../../build_tools/topology/topology2/development"
|
||||
TPLG_BUILD_TIP="Please run scripts/build-tools.sh"
|
||||
}
|
||||
|
||||
TPLG=${TPLG_DIR}/${TPLGFN}
|
||||
[ -f "$TPLG" ] || {
|
||||
echo
|
||||
echo "Error: topology $TPLG does not exist."
|
||||
echo "Please run scripts/build-tools.sh -t"
|
||||
echo "$TPLG_BUILD_TIP"
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
@ -174,7 +188,7 @@ else
|
|||
fi
|
||||
|
||||
# Run command
|
||||
OPTS="$DEBUG -r $FS_IN -R $FS_OUT -c $CHANNELS_IN -n $CHANNELS_OUT $BINFMT -t $TPLG"
|
||||
OPTS="$DEBUG -r $FS_IN -R $FS_OUT -c $CHANNELS_IN -n $CHANNELS_OUT $BINFMT $PIPELINES -t $TPLG"
|
||||
DATA="-i $FN_IN -o $FN_OUT"
|
||||
ARG="$OPTS $EXTRA_OPTS $DATA"
|
||||
CMD="$HOST_EXE $ARG"
|
||||
|
|
|
@ -9,7 +9,17 @@ include(CheckCCompilerFlag)
|
|||
|
||||
set(default_asoc_h "/usr/include/alsa/sound/uapi/asoc.h")
|
||||
|
||||
add_executable(testbench
|
||||
file(READ "../../src/arch/host/configs/library_defconfig" library_defconfig)
|
||||
|
||||
if(library_defconfig MATCHES "CONFIG_IPC_MAJOR_4=y")
|
||||
message("-- Selected IPC4 build for testbench")
|
||||
set(testbench "sof-testbench4")
|
||||
else()
|
||||
message("-- Selected IPC3 build for testbench")
|
||||
set(testbench "sof-testbench3")
|
||||
endif()
|
||||
|
||||
add_executable(${testbench}
|
||||
testbench.c
|
||||
file.c
|
||||
utils.c
|
||||
|
@ -19,9 +29,9 @@ add_executable(testbench
|
|||
topology_ipc4.c
|
||||
)
|
||||
|
||||
sof_append_relative_path_definitions(testbench)
|
||||
sof_append_relative_path_definitions(${testbench})
|
||||
|
||||
target_include_directories(testbench PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||
target_include_directories(${testbench} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||
|
||||
set(sof_source_directory "${PROJECT_SOURCE_DIR}/../..")
|
||||
set(sof_install_directory "${PROJECT_BINARY_DIR}/sof_ep/install")
|
||||
|
@ -29,14 +39,14 @@ set(sof_binary_directory "${PROJECT_BINARY_DIR}/sof_ep/build")
|
|||
|
||||
set(config_h ${sof_binary_directory}/library_autoconfig.h)
|
||||
|
||||
target_include_directories(testbench PRIVATE "${sof_source_directory}/src/platform/library/include")
|
||||
target_include_directories(testbench PRIVATE "${sof_source_directory}/src/audio")
|
||||
target_include_directories(${testbench} PRIVATE "${sof_source_directory}/src/platform/library/include")
|
||||
target_include_directories(${testbench} PRIVATE "${sof_source_directory}/src/audio")
|
||||
|
||||
# Configuration time, make copy
|
||||
configure_file(${default_asoc_h} ${CMAKE_CURRENT_BINARY_DIR}/include/alsa/sound/asoc.h)
|
||||
|
||||
# Build time
|
||||
target_include_directories(testbench PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/include")
|
||||
target_include_directories(${testbench} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/include")
|
||||
|
||||
# -Wimplicit-fallthrough is preferred, check if it's supported
|
||||
check_c_compiler_flag(-Wimplicit-fallthrough supports_implicit_fallthrough)
|
||||
|
@ -44,12 +54,12 @@ if (supports_implicit_fallthrough)
|
|||
set(implicit_fallthrough -Wimplicit-fallthrough)
|
||||
endif()
|
||||
|
||||
target_compile_options(testbench PRIVATE -g -O3 -Wall -Werror -Wmissing-prototypes
|
||||
target_compile_options(${testbench} PRIVATE -g -O3 -Wall -Werror -Wmissing-prototypes
|
||||
${implicit_fallthrough} -DCONFIG_LIBRARY -DCONFIG_LIBRARY_STATIC -imacros${config_h})
|
||||
|
||||
target_link_libraries(testbench PRIVATE -lm)
|
||||
target_link_libraries(${testbench} PRIVATE -lm)
|
||||
|
||||
install(TARGETS testbench DESTINATION bin)
|
||||
install(TARGETS ${testbench} DESTINATION bin)
|
||||
|
||||
include(ExternalProject)
|
||||
|
||||
|
@ -94,14 +104,14 @@ add_library(sof_parser_lib STATIC IMPORTED)
|
|||
set_target_properties(sof_parser_lib PROPERTIES IMPORTED_LOCATION "${parser_install_dir}/lib/libsof_tplg_parser.a")
|
||||
add_dependencies(sof_parser_lib parser_ep)
|
||||
|
||||
add_dependencies(testbench sof_parser_lib)
|
||||
target_link_libraries(testbench PRIVATE sof_library)
|
||||
target_link_libraries(testbench PRIVATE sof_parser_lib)
|
||||
target_link_libraries(testbench PRIVATE m)
|
||||
target_include_directories(testbench PRIVATE ${sof_install_directory}/include)
|
||||
target_include_directories(testbench PRIVATE ${parser_install_dir}/include)
|
||||
add_dependencies(${testbench} sof_parser_lib)
|
||||
target_link_libraries(${testbench} PRIVATE sof_library)
|
||||
target_link_libraries(${testbench} PRIVATE sof_parser_lib)
|
||||
target_link_libraries(${testbench} PRIVATE m)
|
||||
target_include_directories(${testbench} PRIVATE ${sof_install_directory}/include)
|
||||
target_include_directories(${testbench} PRIVATE ${parser_install_dir}/include)
|
||||
|
||||
set_target_properties(testbench
|
||||
set_target_properties(${testbench}
|
||||
PROPERTIES
|
||||
INSTALL_RPATH "${sof_install_directory}/lib"
|
||||
INSTALL_RPATH_USE_LINK_PATH TRUE
|
||||
|
|
Loading…
Reference in New Issue