Sep 1, 2025
2025 Final Report: RISC-V Vector (RVV) Optimization for the dav1d AV1 Decoder

Project Overview and Goals

dav1d is an open-source AV1 video decoder that aims for the highest possible performance. The primary goal of this GSoC project was to optimize dav1d’s [1] core video processing functions by implementing hand-written assembly using the RISC-V Vector (RVV) Extension. The objective was to maximize performance to enable smooth playback of high-definition AV1 video on low-power RISC-V devices, thereby demonstrating and enhancing the multimedia capabilities of the RISC-V ecosystem.

Key Activities and Achievements

During the project, I performed the following key activities:

Current Project Status

The submitted Merge Requests have successfully accelerated key dav1d functions using RVV. The optimized code has passed all checkasm and argon conformance tests, ensuring its stability. These changes show significant performance gains across various block widths and on different hardware with VLEN=128 and VLEN=256.

Code Contributions & Merge Requests

The following are the main Merge Requests I worked on and submitted during this GSoC period. You can find detailed code changes, benchmark results, and the review process at each link.

Future Work

While significant progress was made during GSoC, the RISC-V optimization for dav1d is not yet complete. I plan to remain active in the community after GSoC and will continue contributing by addressing the following tasks:

Challenges and Key Learnings

Through this project, I gained a deep understanding of RISC-V vector assembly and experienced solving complex performance issues on real hardware. The initial process of understanding RVV was very challenging, but I finally had a breakthrough during a 15-hour flight to Bulgaria, where I could focus intensely on the documentation.

This entire journey would have been impossible without my excellent mentors, Nathan and Luca, and the helpful members of the community. I would like to express my sincere gratitude to everyone who helped me.

Resources

The following resources were extremely helpful throughout the project:

References

^[1]dav1d
^[2]crossdev-stages