22 Commits
Author SHA1 Message Date
Niklas Haas 3a2a874994 tests/checkasm: switch to external checkasm
There are a number of benefits tied to the upstream / third-party checkasm
version, including:

- Improved long-term maintainability, code reuse with other projects, etc.

- Vastly improved overall performance / runtime for benchmarking, due
  primarily to the ability to scale the runtime of each test to that test's
  complexity.

- Much more robust statistical analysis of benchmarking results; including
  robust outlier rejection, an estimation of the histogram, and the ability
  to report the variance / stddev in addition to the (trimmed) mean.

- Interactive HTML and JSON output formats in addition to CSV/TSV.

- More readable and user-friendly output across the board, especially for
  failures and data dumps (e.g. also showing errors inside padding bytes).

- Better cross-platform support, including dynamic fallback of timer
  implementations on ARM platforms, a better RISC-V harness, and more.

There are multiple approaches to how we can solve the problem of integrating
this third party checkasm into dav1d, but I think the hybrid approach of
loading it as an external dependency, falling back to a meson wrap file,
provides the best overall compromise. This avoids the messiness of git e.g.
git submodules, while still allowing us to pin individual tags.
2026-01-01 17:33:55 +01:00
Martin StorsjöandJ. Dekker 5e31720b89 checkasm: Add support for the private macOS kperf API for benchmarking
On AArch64, the performance counter registers usually are
restricted and not accessible from user space.

On macOS, we currently use mach_absolute_time() as timer on
aarch64. This measures wallclock time but with a very coarse
resolution.

There is a private API, kperf, that one can use for getting
high precision timers though. Unfortunately, it requires running
the checkasm binary as root (e.g. with sudo).

Also, as it is a private, undocumented API, it can potentially
change at any time.

This is handled by adding a new meson build option, for switching
to this timer. If the timer source in checkasm could be changed
at runtime with an option, this wouldn't need to be a build time
option.

This allows getting benchmarks like this:

mc_8tap_regular_w16_hv_8bpc_c:              1522.1 ( 1.00x)
mc_8tap_regular_w16_hv_8bpc_neon:            331.8 ( 4.59x)

Instead of this:

mc_8tap_regular_w16_hv_8bpc_c:                 9.0 ( 1.00x)
mc_8tap_regular_w16_hv_8bpc_neon:              1.9 ( 4.76x)

Co-authored-by: J. Dekker <jdek@itanimul.li>
2024-04-02 10:35:29 +00:00
Matthias Dressel 16ed8e8b99 meson: Disable seek-stress tests by default 2024-01-24 16:28:38 +01:00
Matthias DresselandRonald S. Bultje 2c9bbb4908 meson: Add 'enable_seek_stress' option
Allows to explicitly enable/disable seek-stress tests.
2024-01-23 17:47:46 +00:00
Henrik GramnerandHenrik Gramner bd0466350d Eliminate unused C DSP functions at compile time
When compiling with asm enabled there's no point in compiling
C versions of DSP functions that have asm implementations using
instruction sets that the compiler can unconditionally use.

E.g. when compiling with -mssse3 we can remove the C version
of all functions with SSSE3 implementations.

This is accomplished using the compiler's dead code elimination
functionality.

Can be configured using the new 'trim_dsp' meson option, which
by default is enabled when compiling in release mode.
2022-07-06 15:05:47 +02:00
Matthias DresselandRudi Heitbaum 5e67cfd806 meson: Add explicit option to build documentation
Co-authored-by: Rudi Heitbaum <rudi@heitbaum.com>
2021-12-29 17:25:37 +01:00
Henrik Gramner 75318ec7ca x86: Remove the option to disable AVX-512 2021-10-18 14:49:05 +00:00
Janne GrunauandJean-Baptiste Kempf e616852536 tools: add optional xxh3 based muxer
The required 'xxhash.h' header can either be in system include directory
or can be copied to 'tools/output'.

The xxh3_128bits based muxer shows no significant slowdown compared to
the null muxer. Decoding times Chimera-AV1-8bit-1920x1080-6736kbps.ivf
with 4 frame and 4 tile threads on a core i7-8550U (disabled turbo boost):

null:  72.5 s
md5:   99.8 s
xxh3:  73.8 s

Decoding Chimera-AV1-10bit-1920x1080-6191kbps.ivf with 6 frame and 4 tile
threads on a m1 mc mini:

null:  27.8 s
md5:  105.9 s
xxh3:  28.3 s
2021-02-08 10:31:54 +01:00
Janne Grunau 7cd946937a meson/x86: add option to disable AVX-512 asm
Allows building with nasm < 2.14.
2020-03-27 20:28:28 +01:00
James Almer 3a77c57b0c meson: move dav1dplay to a new examples section
dav1dplay shouldn't be built by default. And it's an example more than a tool.
2019-08-10 11:26:17 -03:00
Victorien Le Couviour--Tuffet beda6e0d1c build: fix meson deprecation warning
'build_' prefix is reserved by meson, this will become an error in the
future, as indicated by a warning when configuring the build dir.

Closes #285.
2019-07-02 14:02:40 +02:00
Janne Grunau 785f00fecc build: add option for fuzzer specific LDFLAGS
Needed for oss-fuzz after switching to '-fsanitize=fuzzer' for the
libfuzzer based build. Adding '-fsanitize=fuzzer' for all oss-fuzz based
build breaks afl.
2019-05-24 22:16:29 +02:00
Martin StorsjöandHenrik Gramner 6ceb29d2a6 meson: Add an undocumented option for overriding stack alignment
This is intended only for use in CI testing.
2019-02-19 14:28:18 +01:00
James Almer c98bbeb3cf add a logging callback mechanism 2019-01-28 12:16:54 -03:00
Ronald S. Bultje c3980e394d 12 bits/component support 2018-12-05 18:21:05 -05:00
Marvin ScholzandJean-Baptiste Kempf ea70793450 Add option to include extra testdata tests 2018-10-30 13:39:43 +01:00
Janne GrunauandRonald S. Bultje f8e918a9f1 fuzzer: add a standalone fuzzing engine 'none'
Replaces the boolean 'build_libfuzzer' meson option with 'fuzzing_engine'.
This allows reproducing fuzzing test cases on systems without libfuzzer.
Also prevents regressions in the fuzzing test target since it will be
build by default.
2018-10-23 22:20:44 +02:00
Janne Grunau 858689e1df tests: add libfuzzer test target
Disabled by default, enabble with `meson -Dbuild_libfuzzer=true -Db_lundef=false ...`.
Fuzz target improved by the paralell work by Thierry Foucu in !138.
2018-10-03 16:15:35 +02:00
Marvin Scholz bebe5ec8de Build: Add option to disable building tests 2018-09-29 12:41:11 +02:00
Marvin Scholz 1a00be48bd Build: Add option to disable building tools 2018-09-29 12:40:41 +02:00
Marvin ScholzandHenrik Gramner ae6b6692e0 Build: x86 asm support 2018-09-27 11:50:34 +02:00
Ronald S. Bultje e2892ffa2d Initial decoder implementation.
With minor contributions from:
 - Jean-Baptiste Kempf <jb@videolan.org>
 - Marvin Scholz <epirat07@gmail.com>
 - Hugo Beauzée-Luyssen <hugo@videolan.org>
2018-09-22 07:59:19 -04:00