Raw dependency graph data (JSON)
SVT-AV1
Author: Ludovic HENRY ludovic.henry@qti.qualcomm.com
Date: 2026-09-30
Readiness: orange (optimization-absent)
Optimization level: absent
Scope: RISC-V (riscv64/linux) support status for SVT-AV1
Audience: Technical leadership, resource allocation strategy
Verification policy: Every claim is cross-referenced to a primary upstream source. Items that could not be verified against a second source are marked [NEEDS VERIFICATION].
1. Project Overview
SVT-AV1 is a production AV1 video encoder (and decoder) originally developed by Intel in partnership with Netflix (2018-2019), formally adopted by the Alliance for Open Media (AOMedia) Software Implementation Working Group (SIWG) in August 2020. License is BSD-3-Clause Clear plus the AOMedia Patent License 1.0, copyright held by “Alliance for Open Media.” The canonical repository is gitlab.com/AOMediaCodec/SVT-AV1; a GitHub mirror exists at AOMediaCodec/SVT-AV1 but carries no issues, PRs, or releases of its own.
Governance: No MAINTAINERS, OWNERS, or CODEOWNERS file exists anywhere in the tree (the GitLab raw URL for MAINTAINERS returns 404). Governance is informal and working-group-based rather than a documented maintainer list. CONTRIBUTING.md states PRs go “to the maintainer” (singular, unnamed) and requires signing the AOMedia contributor license agreement. SIWG leadership per AOMedia press materials: co-chairs Ioannis Katsavounidis (Meta) and Xiang Li (Tencent); Software Coordinator Hassene Tmar (Intel at the time of the role’s creation, commits now carry an @fb.com address, i.e. Meta).
Corporate contributors (top commit-author counts from the full GitLab history; affiliations are best-effort inference from public reputation and email domains, not a declared roster, since SVT-AV1 publishes no corporate-sponsor list):
| Contributor | Commits | Likely affiliation |
|---|---|---|
| Christopher Degawa | 895 | Independent/community (well-known AV1/FFmpeg contributor) |
| hguermaz | 350 | Unconfirmed |
| Salome Thirot | 310 | Unconfirmed (commonly associated with Arm’s SVT-AV1 NEON/SVE work) |
| Worth | 290 | Unconfirmed |
| Sergey Sablin | 279 | Unconfirmed (commonly associated with Intel’s SVT-AV1 team) |
| Hassene Tmar | 206 | Intel to Meta (SIWG Software Coordinator) |
| Joel Sole | 203 | Commonly associated with Meta/Facebook |
| Cidana-Developers / Cidana Developers | approximately 207 combined | Cidana (Chinese video-codec IP/semiconductor firm) |
| Xu Guangxin, L. Zhang / Li Zhang | 69-72 | Unconfirmed |
| Marvin Scholz | 49 | Independent (known multimedia/FFmpeg contributor) |
Community culture on new ports: No RISC-V-specific statement exists from maintainers or SIWG, positive or negative. CONTRIBUTING.md describes a standard open PR process (coding-guideline compliance, AOMedia contributor agreement, maintainer review, rebase-and-merge) with no architecture restrictions. The AArch64/NEON/SVE port was built up through sustained third-party contribution (notably Arm-affiliated engineers such as Salome Thirot) over multiple years rather than a single corporate initiative, suggesting the project is structurally receptive to a community-submitted architecture port, but there is no evidence of any active or requested RISC-V effort to date.
2. Port History and Upstreaming Timeline
| Date | Event | Source |
|---|---|---|
| 2019-05-17 (v0.5.0) | Initial public release, x86-64 only | CHANGELOG.md |
| 2022-01-16 | Debian first builds riscv64 package (v0.8.7+dfsg-1), generic C fallback only | Debian buildd |
| 2025-02-08 | Issue #2239 opened by Fedora packager eclipseo: unconditional libcpuinfo build dependency blocks packaging for ppc64le, s390x, and “soon riscv64” |
GitLab issue #2239 |
| 2025-02-13 | Issue #2239 closed via merged MR !2384 (“cpuinfo: use FetchContent and make it more configurable”), introducing a USE_CPUINFO option (OFF/SYSTEM/LOCAL/AUTO) |
MR !2384 |
| 2025-07-24 (v3.1.0) | libcpuinfo removed entirely (MR !2426, MR !2453); first release shipping the fix was v3.0.1 (2025-03-10) for the cpuinfo FetchContent change, full removal landed in v3.1.0 |
MR !2453 |
| 2026-08-08 | Issue #2389 opened by wszqkzqk: proposal to add a Google Highway portable-SIMD tier covering non-x86/aarch64 platforms including RISC-V; author has a working prototype in a personal fork but no RVV hardware to test on | GitLab issue #2389 |
| 2026-10-01 (present) | Issue #2389 remains open, zero linked merge requests, zero comments; no riscv-related commit, branch, or MR exists anywhere in upstream history | GitLab MR search |
Key contributor for riscv64 work: None on record for a merged contribution. The only two upstream GitLab items that mention riscv64 at all are issues, not merge requests: #2239 (closed, a generic packaging fix unrelated to RISC-V code) and #2389 (open, an unimplemented cross-architecture SIMD proposal whose author explicitly has no RVV hardware).
Upstreaming status: Not applicable. No RISC-V-specific code has ever been merged, proposed as a merge request, or opened as a branch. git log --all --grep across the complete history (all branches) for “riscv”, “riscv64”, “risc-v”, “rv64”, and “rvv” returns zero commits. The riscv64 builds that exist in Debian, Ubuntu, Alpine, Gentoo, Chimera Linux, and EESSI use the generic C fallback that has always been present for unrecognized architectures; this is not a port, it is the absence of any RISC-V-specific code being exercised correctly by a portable compiler.
3. Upstream Support Tier
SVT-AV1 has no formal tier-support policy document (no “tier” language anywhere in CONTRIBUTING.md, STYLE.md, or Docs/). Docs/System-Requirements.md states the encoder “primarily supports the x86 architecture with handwritten simd assembly code,” while it “can be compiled and run on any architecture that a valid C99 compiler can target, with varying limited support for non-x86 CPUs.” AArch64 is not formally named as a supported tier in that document despite the substantial, multi-year NEON/SVE/SVE2 investment visible in the source tree. RISC-V falls into the informal “limited support” (generic C) category alongside every other non-x86/non-ARM architecture.
| Criterion | amd64 | arm64 | riscv64 |
|---|---|---|---|
| Named in System-Requirements.md | Yes (primary) | No (de facto) | No |
| Hand-tuned SIMD | Yes (SSE2 through AVX-512, NASM) | Yes (NEON, NEON_DOTPROD, NEON_I8MM, SVE, SVE2) | No |
| Cross-compile CI in upstream GitLab | N/A (native) | Yes (.gitlab/workflows/linux/.gitlab-ci.yml) |
No |
Toolchain file in cmake/toolchains/ |
N/A (native) | Yes (aarch64_toolchain.cmake, android_aarch64_toolchain.cmake) |
No |
| Official upstream binary | No (source releases only) | No (source releases only) | No |
| Distro packages | Debian, Ubuntu, Arch, Gentoo | Debian, Ubuntu, Gentoo | Debian (sid, since 2022), Ubuntu (24.04 Noble, 26.04 resolute), Alpine, Chimera Linux, EESSI, Gentoo (~riscv testing) |
| Build mechanism | NASM + CMake SIMD dispatch | CMake SIMD dispatch, native or cross-toolchain | Generic C_DEFAULT fallback (neither HAVE_X86_PLATFORM nor HAVE_ARM_PLATFORM evaluates true) |
4. Technical Architecture and RISC-V-Specific Subsystems
SVT-AV1 implements AV1 encoding in C with architecture-specific SIMD acceleration in separate subdirectories under Source/Lib/. There is no JIT and no garbage collector; all performance-critical dispatch is static, selected at CMake configure time via HAVE_X86_PLATFORM (_M_X64/__x86_64__) and HAVE_ARM_PLATFORM (__aarch64__/_M_ARM64) preprocessor checks in the top-level CMakeLists.txt. No HAVE_RISCV_PLATFORM or equivalent exists; when neither flag is set, the build falls straight through to the portable C_DEFAULT library with no ARCH_* macro defined and NASM/assembly never enabled.
Source/Lib directory listing (confirmed via the GitLab API, not the JS-rendered file-search UI) contains exactly: ASM_ARM_CRC32, ASM_AVX2, ASM_AVX512, ASM_NEON, ASM_NEON_DOTPROD, ASM_NEON_I8MM, ASM_SSE2, ASM_SSE4_1, ASM_SSE4_2, ASM_SSSE3, ASM_SVE, ASM_SVE2, C_DEFAULT, Codec, Globals. There is no ASM_RISCV/ASM_RVV directory and no RISC-V SIMD dispatch entry point. No __riscv, riscv64, or RISCV preprocessor guard appears anywhere in the codebase; no RVV intrinsics are present.
Component analysis:
| Component | amd64 | arm64 | riscv64 |
|---|---|---|---|
| DCT / transforms | Hand-tuned AVX2/AVX-512 (NASM) | NEON intrinsics + SVE/SVE2 | Scalar C (missing) |
| Convolution / interpolation | AVX2 intrinsics | NEON + SVE | Scalar C (missing) |
| SAD / variance | AVX2 | NEON + SVE | Scalar C (missing) |
| CDEF | AVX2 | NEON + SVE | Scalar C (missing) |
| Loop filter / deblocking | AVX2 | NEON | Scalar C (missing) |
| Quantization / encodetxb | AVX2 | NEON + SVE | Scalar C (missing) |
| Temporal filtering | AVX2 | NEON + SVE | Scalar C (missing) |
| Warp / affine motion | AVX2 | NEON + SVE | Scalar C (missing) |
| Intra / inter prediction, OBMC | AVX2 | NEON | Scalar C (missing) |
| Wiener / loop restoration | AVX2 | NEON + SVE | Scalar C (missing) |
| CPU feature detection | Bundled AOM x86 CPUID (aom_ports/x86.h, #ifdef ARCH_X86_64) |
Bundled AOM ARM CPUID | Returns flags=0, falls to C |
Pending/unmerged work that would fill this gap: GitLab issue #2389 proposes a Google Highway (google/highway)-based portable-SIMD tier covering roughly 24 kernel families (~27.5k lines) across SAD, variance, sub-pixel variance, 8-bit/high-bit-depth convolve, compound prediction, OBMC, warped motion, intra prediction, CDEF, deblocking, loop restoration, temporal filtering, picture operators, forward/inverse transforms, and quantization. It is strictly additive (defaults OFF on x86/aarch64, compiled only with -DENABLE_HIGHWAY=ON), auto-enabled on other platforms if the Highway library is found, and falls back to C if not. The author measured 2.7-2.9x end-to-end speedup on a Loongson 3C5000L (LoongArch64, LSX/LASX) and 2.7x on Apple M4 Pro using --asm hwy versus --asm c, with per-kernel gains reaching parity with hand-written NEON on SAD/variance and within 1.3-1.6x on convolve/sub-pixel-variance kernels. These numbers are a LoongArch/aarch64 proxy only: the author states plainly “I don’t have a device that supports RVV, so I haven’t been able to test the performance of RVV.” No merge request has been opened against upstream as of 2026-10-01 (API search of all MR titles/descriptions for “highway”, “riscv”, and “rvv” returns zero hits); the implementation exists only at gitlab.com/wszqkzqk/SVT-AV1 and github.com/wszqkzqk/SVT-AV1-HWY.
5. Build System, Cross-Compilation, and Toolchain
Existing toolchain files (cmake/toolchains/, confirmed via GitLab API directory listing):
aarch64_toolchain.cmake- setsCMAKE_SYSTEM_PROCESSOR=aarch64, usesaarch64-linux-gnu-{gcc,g++,gcc-ar}android_aarch64_toolchain.cmake- Android AArch64 variantpowerpc64le-linux-gnu.cmake- setsCMAKE_SYSTEM_PROCESSOR=ppc,CONFIG_RUNTIME_CPU_DETECT=0
No riscv64_toolchain.cmake exists; powerpc64le-linux-gnu.cmake is the closest pattern for one.
Generic (only documented) build commands, from Docs/Build-Guide.md, which apply unmodified to riscv64 since neither architecture guard fires there:
git clone --depth=1 https://gitlab.com/AOMediaCodec/SVT-AV1.git
cd SVT-AV1/Build
cmake .. -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Release
make -j $(nproc)
sudo make install
or via the shell wrapper Build/linux/build.sh release. -DCOMPILE_C_ONLY=ON is not required on riscv64 (the arch-detect already yields a C-only build because neither HAVE_X86_PLATFORM nor HAVE_ARM_PLATFORM evaluates true) but is harmless to pass explicitly and protects against a future platform-detection change silently breaking the build. None of this is riscv64-documented by upstream; it is inferable from the CMake logic, not stated in any guide.
Toolchain version requirements (general project minimums from Docs/Build-Guide.md, none riscv64-specific): GCC 5.4.0 or later; CMake 3.16 or later (cmake_minimum_required(VERSION 3.16...4.1)); NASM 2.14 or later (x86 only, never invoked on riscv64 since it sits inside the HAVE_X86_PLATFORM branch); Clang-11 mentioned only as an Ubuntu install example. For riscv64 specifically, any GCC or Clang with riscv64-linux-gnu target support and valid C99 conformance is sufficient per Docs/System-Requirements.md [NEEDS VERIFICATION - no riscv64-specific compiler floor is documented anywhere upstream].
QEMU: Zero mentions anywhere in the repository (source, CMake, CI, Docs, Dockerfile). No documented cross-compilation or emulated-test workflow exists for riscv64 or any foreign architecture.
Repo-root Dockerfile (not riscv-specific, informational only): clones a third-party contributor fork (gitlab.com/1480c1/SVT-AV1, branch thread_prio/warning) rather than the canonical repo, builds a static x86 Alpine binary using yasm, with no ARG/multi-arch handling.
Confirmed riscv64 build-log evidence (Debian sid, v4.1.0+dfsg-1, built 2026-03-26 on rv-osuosl-04): "Performing Test HAVE_X86_PLATFORM - Failed", "Performing Test HAVE_ARM_PLATFORM - Failed", unrecognized x86 compiler flags such as -mno-avx rejected cleanly, all objects built with -DEN_AVX512_SUPPORT=0. Build time approximately 20 minutes; installed size 135.0 kB (small because no SIMD object layers are compiled in).
6. Feature Coverage and Gap Analysis vs arm64 and amd64
Functional gaps: None identified. The C_DEFAULT path implements every encoding function; riscv64 produces correct AV1 bitstreams. No riscv64-specific correctness issue is on record in the upstream tracker.
Performance gaps: All encode-critical paths (DCT/transforms, SAD/variance, CDEF, convolution, prediction, quantization, temporal filtering, loop restoration) run as compiler-auto-vectorized scalar C on riscv64, versus hand-tuned AVX2/AVX-512 on x86 and NEON/SVE/SVE2 on arm64. No direct riscv64-vs-arm64 or riscv64-vs-amd64 SVT-AV1 benchmark exists in any accessible source (OpenBenchmarking.org’s RISC-V page and SVT-AV1 test page returned HTTP 403 to automated fetch; no Phoronix article pairs “SVT-AV1” with “RISC-V”). The nearest quantified proxy is issue #2389’s LoongArch/aarch64 Highway-tier data (Section 4): a 2.7-2.9x end-to-end speedup over the equivalent scalar-C baseline on non-x86/aarch64 hardware, with the caveat that this was never run on actual RVV silicon.
Security hardening gaps: Data not available - no riscv64-specific security-hardening analysis was found in any upstream source.
Floating-point / NaN semantics: No riscv64-specific floating-point issue is documented. An open floating-point FFT mismatch bug is MSVC/x86-only (Section 11) and unrelated to riscv64.
| Feature | amd64 | arm64 | riscv64 |
|---|---|---|---|
| AV1 encode correctness | Yes | Yes | Yes (C fallback) |
| All presets (M0-M13) | Yes | Yes | Yes, but unaccelerated |
| Multi-threading | Yes | Yes | Yes |
| SIMD acceleration | Full (SSE2 through AVX-512) | Full (NEON through SVE2) | None |
| CPU feature detection | CPUID-based | CPUID-based | Returns 0 (no SIMD path selectable) |
| RTC / low-latency mode | Yes | Yes | Functional, not benchmarked |
7. CI/CD Infrastructure
No riscv64 CI exists anywhere in SVT-AV1’s upstream pipeline. The following files were read directly (API and raw-file fetch, not the JS-rendered search UI) and confirmed to contain zero occurrences of “riscv”/”riscv64”/”risc-v”/”rv64”/”rvv”:
.gitlab-ci.yml(top level, includes and stage definitions).gitlab/workflows/common/.gitlab-ci.yml.gitlab/workflows/standard/.gitlab-ci.yml.gitlab/workflows/linux/.gitlab-ci.yml- the “Linux (GCC)” job’s full cross-compile matrix contains exactly three non-native targets:aarch64-linux-gnu-gcc,powerpc64le-linux-gnu-gcc, and Android aarch64. No riscv64 target..gitlab/workflows/macos/.gitlab-ci.yml.gitlab/workflows/windows/.gitlab-ci.yml.gitlab/workflows/bsd/.gitlab-ci.yml.gitlab/workflows/nightly/.gitlab-ci.yml- remote includes from
AOMediaCodec/aom-testing(nightly and weekend-testing workflows) cmake/toolchains/(onlyaarch64_toolchain.cmake,android_aarch64_toolchain.cmake,powerpc64le-linux-gnu.cmakepresent)
The GitHub mirror has no .github/ directory and no CI of any kind. No RISE CI runners are used anywhere in the pipeline, and no QEMU emulation step exists for any non-native architecture.
| CI criterion | amd64 | arm64 | riscv64 |
|---|---|---|---|
| Build job | Yes | Yes (cross-compile) | No |
| Encode/decode test | Yes | Yes | No |
| QEMU emulation | No | No | No |
| Hardware runner | Yes (GitLab shared x86 runners) | Yes (cross-compile on x86 host) | No |
| RISE runner | No | No | No |
| Release-blocking | Yes | No (cross-compile only, not release-gating) | No |
8. Distribution and Release Status
Upstream releases: All GitLab releases (v4.1.0 and prior) ship source archives only (.zip, .tar.gz, .tar.bz2, .tar); the static release page content contains no “riscv64” string and no architecture-specific binary assets for any platform. SVT-AV1 is distributed as source and built downstream by distributions.
PyPI: No svt-av1 package exists. https://pypi.org/pypi/svt-av1/json and https://pypi.org/simple/svt-av1/ both return HTTP 404 (confirmed via both WebFetch and raw curl). This is expected: SVT-AV1 is a C/C++ codec library and CLI, not a Python package, so no PyPI presence should exist for any architecture.
RISE wheel builder: https://gitlab.com/api/v4/projects/56254198/packages/pypi/simple/svt-av1/ redirects (HTTP 302) to the same 404 PyPI page. No riscv64 wheels exist because there is no upstream PyPI package to mirror.
Distro packages:
| Distribution | Version | riscv64 status | Notes |
|---|---|---|---|
| Debian sid | 4.1.0+dfsg-1 (continuously since v0.8.7, Jan 2022) | Installed | Built on rv-osuosl-04; approximately 20 min build time, 135.0 kB installed |
| Ubuntu 24.04 Noble | 1.7.0+dfsg-2build1 | Available | libsvtav1enc1d1, riscv64 explicitly listed |
| Ubuntu 26.04 resolute | 2.3.0+dfsg-1build1 | Available (confirmed) | Package page and download verified live: svt-av1_2.3.0+dfsg-1build1_riscv64.deb, 40666 bytes (39.7 kB), MD5 2f1b13169ac51525e19a47dcd30f7ddf, built for amd64/arm64/armhf/i386/ppc64el/riscv64/s390x in the universe component, ports archive |
| Alpine Linux (v3.22, community) | current | Available | Pure-C/no-ASM build |
| Chimera Linux | current | Available | svt-av1-libs, pure-C build |
| Gentoo | 4.1.0 | ~riscv (testing, not stable) |
All versions marked testing on riscv |
| EESSI software layer | 3.1.2 | Available | Module SVT-AV1/3.1.2-GCCcore-14.3.0 (EESSI 2025.06); build-availability confirmation only, no performance data. A companion EESSI/software-layer GitHub PR #1733 packages it for riscv in that project’s layer, independent of SVT-AV1’s own release process |
| Arch Linux (x86_64 repo) | 4.1.0-1 | Not applicable | x86_64 only; nasm listed as build dependency |
| Arch Linux RISC-V (archriscv.felixc.at) | Unknown | Data not available | No working search/package-index endpoint reachable; absence from the FTBFS-only failures list is uninformative either way |
What a user must do to get a working riscv64 binary: Install from Debian or Ubuntu package repositories (both now confirmed, including the newer Ubuntu 26.04 resolute build), or from Alpine/Chimera/EESSI. All of these ship the unmodified upstream source built through the generic C_DEFAULT path, with no RISC-V-specific patches. No official upstream riscv64 binary exists; the alternative is cross-compiling from source with a riscv64-linux-gnu toolchain (no documented riscv64 build guide exists, see Section 5).
9. Dependencies
| Dependency | Role | Criticality | riscv64 build | riscv64 test | riscv64 release | Notes |
|---|---|---|---|---|---|---|
| CMake | Build system | Critical | Yes - mature riscv64 support, no project-specific blocker | N/A | Ubuntu/Debian ship cmake on riscv64 |
Minimum 3.16 per CMakeLists.txt; no riscv64-specific issue |
| glibc | Runtime (libc, pthreads, libm) | Critical | Yes - mature riscv64 port | Yes | Yes | Base toolchain component; no SVT-AV1-specific gap |
| googletest | Unit test framework | Optional | Builds (vendored copy under third_party/googletest; system libgtest-dev v1.17.0 also available on Debian riscv64) |
Functional | N/A (test-only, not shipped) | No blocking issue |
| Valgrind | Suppresses AVX2 code paths under instrumentation (headers only) | Optional | Available - Valgrind has riscv64 support | Functional | Included | Irrelevant on riscv64 since no AVX2 path exists to suppress in the first place |
| libaom | CPU-feature detection and entropy-coding helper functions, vendored subset (third_party/aom, third_party/aom_dsp) |
Critical | Builds - aom_ports/x86.h only compiled under #ifdef ARCH_X86_64; remainder is pure C |
Functional | Included | This is a vendored subset, not the full upstream libaom package; the separate upstream libaom project (Debian sid libaom 3.13.1-2+b1) also builds on riscv64 |
| Intel safestringlib | Safe string functions, conditional fallback (third_party/safestringlib) |
Optional | Builds - pure C | Functional | Included | No SIMD content, no riscv64 issue |
| fastfeat | FAST corner-detection helper (third_party/fastfeat) |
Optional | Builds - pure C, no SIMD | Functional | Included | No riscv64 issue |
Additional dependencies identified through research (not in the primary list above, included for completeness):
| Dependency | Role | riscv64 status | Notes |
|---|---|---|---|
| NASM / YASM | x86-64 SIMD assembler (SSE2 through AVX-512) | Not required on riscv64 | Skipped entirely via the HAVE_X86_PLATFORM CMake guard; never invoked on riscv64 builds |
| libcpuinfo | CPU feature detection (formerly a build dependency) | Removed from the project entirely in v3.1.0 (2025-07-24) | Historically blocked riscv64/ppc64le/s390x packaging (issue #2239); resolved by MR !2384 (optional) then fully removed by MR !2453; no longer a dependency as of the current release |
Summary: No currently-blocking external dependency exists for SVT-AV1 on riscv64. The one historical blocker, libcpuinfo, was removed upstream in July 2025. The real external dependency surface for building SVT-AV1 is small (a C toolchain, CMake, and x86-only NASM) because googletest, libaom’s vendored subset, safestringlib, and fastfeat are all bundled under third_party/ rather than linked as system packages. The actual RISC-V gap for this project is encode performance (Section 4, Section 6), not dependency availability.
11. Known Bugs and Active Issues
RISC-V-related issues:
| ID | Title | Status | Severity | Notes |
|---|---|---|---|---|
| #2239 | Please only depend on libcpuinfo for aarch64 and x86_64 | Closed (2025-02-13) | Packaging blocker (historical) | Fedora packager report; resolved via MR !2384 then full removal in MR !2453 (v3.1.0); zero comments on the issue itself |
| #2389 | Proposal: Add Google Highway portable-SIMD tier for non-x86/aarch64 platforms | Open (since 2026-08-08) | Performance enhancement, not a bug | De-facto RISC-V performance tracking issue; zero comments, zero linked merge requests, zero labels, zero upvotes as of 2026-10-01; author has no RVV hardware to validate against |
Non-upstream packaging-level observation: FreeBSD ports (multimedia/svt-av1) disabled LTO on riscv64 since an October 2021 commit by maintainer Jan Beich (“disable LTO on riscv64: Untested, but probably fixes build: ld: error: lto.tmp: cannot link object files with different floating-point ABI”), per FreshPorts. This reflects a generic RISC-V toolchain LTO/floating-point-ABI linking bug class seen elsewhere (e.g. unrelated Fuchsia issue 339099402), not something tracked in SVT-AV1’s own GitLab issue tracker.
Open general correctness bugs (not riscv64-specific):
| ID | Title | Status | Severity | Notes |
|---|---|---|---|---|
| #2372 | RTC residual MT non-determinism at M12/M13 on high-motion content | Open | High | Not architecture-specific |
| #2373 | Uninitialised value during libheif fuzzing | Open | Medium | Not architecture-specific |
| #2355 | Data race in mode decision | Open | Medium | Not architecture-specific |
| #2354 | Load of misaligned address and left shift of negative value (ASAN) | Open | Medium | Not architecture-specific |
| #2348 | MSVC /fp:strict floating-point FFT mismatch | Open | Low (MSVC only) | x86/MSVC-only; not riscv64 |
| #2356 | Crash in svt_aom_blend_a64_mask_avx2 |
Open | Medium | x86-only (AVX2 path, inapplicable to riscv64) |
A GitLab API search of merge requests for “riscv”, “rvv”, and “highway” (title and description, all states) returns zero results. No open RVV-specific correctness bug exists because no RVV code has ever been submitted.
12. Objections and Upstream Blockers
Stated objections: None against a RISC-V port specifically. Issue #2239’s Fedora packager noted “there is limited use for svt-av1 on other arch for which you do not provide ASM,” reflecting the project’s practical position that riscv64 is unoptimized but packageable, not that a RISC-V port would be rejected.
Technical blockers:
- No
HAVE_RISCV_PLATFORMCMake detection exists. A contribution would need to add platform detection, acmake/toolchains/riscv64_toolchain.cmake, and either a native hand-writtenASM_RVVkernel set or the (currently unmerged) Highway-based portable tier proposed in #2389. - All 10-plus SIMD functional units (DCT, CDEF, SAD/variance, loop filter, quantization, warp, prediction, restoration, temporal filtering) need RVV coverage to reach arm64 parity. The arm64 precedent (84 NEON files, 24 SVE files, built over multiple years with sustained Arm-affiliated contribution) sets the order-of-magnitude scope for a comparably competitive native port; the Highway route in #2389 claims to cover a similar surface (~24 kernel families) in a single additive tier instead.
- No riscv64 CI exists to catch regressions in any submitted code. Any RVV or Highway-tier contribution would need CI infrastructure (QEMU or RVV-capable hardware runners) to be accepted and maintained.
Organizational blockers:
- No RISE funding or involvement with SVT-AV1 is documented anywhere: the RISE blog (35 posts, 2024-05-15 through 2026-09-28, enumerated and checked in full), the RISE wheel builder index (87 packages), and all 26
riseproject-devGitHub repositories (code and issue search) contain zero references to SVT-AV1, AV1, or video/image codecs. Neither SVT-AV1 nor AOMedia/Alliance for Open Media appears as a RISE member or named partner; RISE membership (8 Premier, 12 General member companies) is per-company, and none of those listed companies is publicly tied to SVT-AV1 contribution. - AOMedia’s contributor license agreement requirement in
CONTRIBUTING.mdmeans any RISC-V contribution requires corporate legal sign-off, raising the bar above a typical drive-by open-source PR. - Issue #2389’s author is an independent contributor without RVV hardware access, which caps what can be validated without a RISC-V vendor or RISE stepping in to provide hardware or review bandwidth.
Acceptance probability: Reasonably high for a correct, well-tested contribution backed by a credible vendor or sustained contributor, given the ARM precedent of third-party-driven NEON/SVE work being accepted over time, and given that #2389 is a strictly additive, opt-in tier with no risk to existing x86/aarch64 behavior. Low without that backing: the proposal has sat open for nearly two months with zero upstream engagement (zero comments, zero linked MR) as of 2026-10-01, and nobody with RVV hardware has yet validated it.
13. Readiness Assessment
- Color: orange (optimization-absent)
- Release provider: distro
- Optimization level: absent
SVT-AV1 has no upstream riscv64 CI (confirmed empty of “riscv” in .gitlab-ci.yml and every included workflow file: common, standard, linux, macos, windows, bsd, nightly) and zero RISC-V-specific code anywhere in its full commit history or Source/Lib tree (no ASM_RISCV directory, no RVV intrinsics). All hot paths (DCT, SAD/variance, CDEF, convolution, prediction, quantization) fall back to scalar C on riscv64 versus hand-tuned AVX2/AVX-512 and NEON/SVE/SVE2 elsewhere, per the architecture gating in CMakeLists.txt. Debian (sid, continuously since 2022) and Ubuntu 26.04 resolute (svt-av1 2.3.0+dfsg-1build1, built for riscv64, per packages.ubuntu.com) build the unmodified upstream source with no riscv-specific patches, which alone would be a yellow clean-distro-build grade. However, because SVT-AV1’s core value proposition is encode speed (a compression-library-speed case under the optimization-purpose test) and RISC-V optimization coverage is absent, the modifier caps the grade down to orange.
Pending work that could change the grade: GitLab issue #2389 (open since 2026-08-08) proposes a Google Highway-based portable-SIMD tier that would give RISC-V real vectorized kernels covering roughly 24 kernel families. The author measured 2.7-2.9x speedups using LoongArch/aarch64 as a proxy (no RVV hardware was available to test), and no merge request has been opened against upstream as of 2026-10-01; the implementation exists only in the author’s personal fork. No RISE project involvement was found anywhere (blog, repositories, wheel builder, member list). If #2389 is merged with real RVV coverage of the primary kernels, the optimization gap would move from absent toward partial or full and the grade could rise.
14. Investment Analysis
RISE has no documented involvement with SVT-AV1; all work described below is currently uncovered by any funded effort.
14.1 Functional Enablement
The generic C fallback already builds and runs correctly on riscv64 and ships in multiple distributions (Debian, Ubuntu 24.04/26.04, Alpine, Chimera, EESSI). Functional enablement is complete; no work is required here. The historical libcpuinfo packaging blocker (issue #2239) was already resolved upstream in July 2025 at no RISE cost.
14.2 Performance Optimization
This is the dominant investment area. Every SIMD-accelerated encode path needs an RVV (or Highway-portable) equivalent. Two paths exist:
- Validate and upstream the existing #2389 Highway proposal. The author has a largely complete implementation (~27.5k lines, ~24 kernel families) with correctness already checked against the C reference via gtest (5,740 passing tests cited) and byte-identical encoder output on LoongArch64 and aarch64. The principal gap is that it has never been run on real RVV hardware and has no merge request. Providing RVV-capable hardware and engineering time to validate, benchmark, and shepherd this through upstream review would be substantially cheaper than a from-scratch native port.
- A native hand-written
ASM_RVVport, following the arm64 precedent, prioritized by encode-time contribution: DCT/transforms first, then SAD/variance (motion estimation), then CDEF and loop filtering, then temporal filtering/prediction/quantization/restoration. The arm64 port (84 NEON + 24 SVE files, multi-year sustained contribution) sets the order-of-magnitude scope for a comparably competitive native effort.
Validating the Highway route first is the lower-risk, lower-cost option given that most of the engineering is already written and self-tested; it does not preclude a native RVV tier later for kernels where Highway’s portable abstraction underperforms hand-tuned NEON (convolve and sub-pixel variance showed a 1.3-1.6x gap to NEON in the author’s M4 Pro data).
14.3 CI/CD Infrastructure
riscv64 CI does not exist. Minimum viable CI is a riscv64 cross-compile job added to .gitlab/workflows/linux/.gitlab-ci.yml following the existing aarch64/powerpc64le pattern, plus a cmake/toolchains/riscv64_toolchain.cmake file. A QEMU-based smoke-test job would catch correctness regressions; a hardware RVV runner (SiFive, SpacemiT, or similar) would be needed for reliable performance-regression testing of whatever SIMD tier is eventually merged, and is also the prerequisite for validating issue #2389 at all.
14.4 Ecosystem Enablement
SVT-AV1 has no significant dependent package ecosystem of its own (no plugin registry, no extension marketplace; it is a standalone C library and CLI tool). Its downstream consumers (FFmpeg, libavif, GStreamer) have their own RISC-V status tracked in separate reports and are out of scope here.
14.5 Summary Table
| Area | Work Item | Effort (person-weeks) | Owner | Priority |
|---|---|---|---|---|
| Functional | None required (C fallback already correct and packaged) | 0 | N/A | N/A |
| Performance | Provide RVV hardware and validate/benchmark the existing #2389 Highway fork | 4-6 | RISC-V vendor / RISE | Critical |
| Performance | Shepherd #2389 through upstream review and merge (CI, docs, maintainer sign-off) | 3-5 | RISC-V vendor / RISE, with upstream maintainers | Critical |
| Performance | Native ASM_RVV kernels for paths that underperform the Highway tier (convolve, sub-pixel variance) |
8-12 | RISC-V vendor | Medium |
| Performance | Native ASM_RVV for remaining kernels, if the Highway tier is rejected or insufficient |
30-45 | RISC-V vendor | Low (contingent) |
| CI/CD | Add riscv64 cross-compile job to GitLab CI (cmake/toolchains/riscv64_toolchain.cmake, QEMU smoke test) |
2 | RISC-V vendor / RISE | High |
| CI/CD | Hardware riscv64 CI runner for performance-regression testing | 3-4 | RISE or silicon vendor | High |
Total estimated effort to validate and land the #2389 Highway tier plus baseline CI: approximately 12-17 person-weeks, substantially less than a from-scratch native RVV port (30-45 additional person-weeks) because most of the Highway implementation already exists and is self-tested; it simply needs RVV hardware access and upstream engagement, neither of which currently exists.
15. References
- SVT-AV1 canonical repository (GitLab)
- SVT-AV1 GitHub mirror
- GitLab issue #2239 - libcpuinfo riscv64 packaging blocker
- MR !2384 - cpuinfo FetchContent/USE_CPUINFO option
- MR !2453 - libcpuinfo removal
- GitLab issue #2389 - Google Highway portable-SIMD tier proposal
- wszqkzqk/SVT-AV1 Highway fork (GitLab)
- wszqkzqk/SVT-AV1-HWY (GitHub)
- GitLab releases page
- CMakeLists.txt (architecture gating)
- Debian buildd riscv64 build status for svt-av1
- Ubuntu 24.04 Noble package: svt-av1
- Ubuntu 26.04 resolute package search: SVT-AV1
- Ubuntu 26.04 resolute riscv64 download: svt-av1_2.3.0+dfsg-1build1_riscv64.deb
- Debian tracker: svt-av1
- Alpine Linux svt-av1 riscv64 package
- EESSI RISC-V software page for SVT-AV1
- FreshPorts multimedia/svt-av1 (riscv64 LTO disabled)
- RISE Project blog
- RISE wheel builder package index
- SVT-AV1 ARM Build Guide
- SVT-AV1 Build Guide
- SVT-AV1 System Requirements