|
|
This page summarises the state of the VLC port to the StarFive JH7100 system-on-chip, as used in their VisionFive (version 1) single board computer.
|
|
|
|
|
|
**WARNING**: This remains preliminary work. The performance is not representative of the capabilities of the architecture or the platform.
|
|
|
|
|
|
[[_TOC_]]
|
|
|
|
|
|
## Port status
|
|
|
|
|
|
This effort is based exclusively on VLC version **4.0**, which was the main development branch at the time when the port was started, in early 2022.
|
|
|
|
|
|
There are no plans to back-port the support code to version 3.0.x was branched in 2017, and from which version 4.0 has diverged a lot.
|
|
|
**All work has been merged upstream and the port is considered terminated.**
|
|
|
|
|
|
Some RISC-V support fixes were back-ported to VLC 3.0.18, but there are no plans to perform further and more systematic back-porting as version 3.0.x was branched in 2017, and the development branch has diverged a lot since then.
|
|
|
|
|
|
### RISC-V architecture
|
|
|
|
... | ... | @@ -28,28 +28,16 @@ Support for the RISC-V Vector extension (V) is very partial. Support for the RIS |
|
|
|
|
|
### Audio
|
|
|
|
|
|
The port is currently tested with ALSA. It should also be possible to use SALSA, PulseAudio, PipeWire or JACK.
|
|
|
|
|
|
* Output
|
|
|
* [x] Analog
|
|
|
* [ ] HDMI linear **waiting** for kernel support
|
|
|
* [ ] HDMI pass-through not planned yet
|
|
|
* [ ] S/PDIF **not** planned (add-on board required)
|
|
|
* [x] USB
|
|
|
* Input
|
|
|
* [ ] Analog **not** planned (add-on board required)
|
|
|
* [x] USB
|
|
|
|
|
|
Notes:
|
|
|
* The PWM DAC device driver only supports 16 kHz output yet.
|
|
|
* Optional add-on boards for audio I/O exist but there are no plans to test them with VLC at this time.
|
|
|
There are no particular concerns for audio support in VLC proper. Linux kernel audio driver support for analog input, output and HDMI output was very poor and incomplete when this port was done (early 2022).
|
|
|
|
|
|
### Video
|
|
|
|
|
|
Given the lack of GPU on the JH7100, video should be output directly in full-screen mode and with YUV pixel formats through DRM/KMS. There are currently no plans for Wayland in this port.
|
|
|
Given the lack of GPU on the JH7100, video should be output directly in full-screen mode and with YUV pixel formats through DRM/KMS. X11 is supported with software rendering but extremely slow. Wayland is not supported
|
|
|
|
|
|
The SoC board includes a Wave511 decoder and Wave521 encoder for AVC and HEVC from Chips&Media. Collabora has been working on a [V4L2 codec driver](https://gitlab.collabora.com/chipsnmedia/kernel) for the hardware.
|
|
|
|
|
|
* Output
|
|
|
* [x] Kernel Mode Setting
|
|
|
* [x] Kernel Mode Setting for TDA19988
|
|
|
* [x] HDMI
|
|
|
* [ ] MIPI DSI **not** planned
|
|
|
* [x] Direct Rendering Manager dumb buffers
|
... | ... | @@ -61,42 +49,50 @@ Given the lack of GPU on the JH7100, video should be output directly in full-scr |
|
|
* [x] RGB
|
|
|
* [x] RGBA
|
|
|
* [x] X11
|
|
|
* [ ] DRM Leasing
|
|
|
* [x] OpenGL software rasterisation (untested)
|
|
|
* [x] RENDER software rasterisation (untested)
|
|
|
* [x] Raw images (untested)
|
|
|
* [ ] DRM Leasing (full-screen mode) **not** planned
|
|
|
* DSP
|
|
|
* V4L2 M2M decoder
|
|
|
* [ ] AVC
|
|
|
* [ ] HEVC
|
|
|
* V4L2 M2M encoder
|
|
|
* [ ] AVC
|
|
|
* [ ] HEVC
|
|
|
* V4L2 M2M decoder for Wave511
|
|
|
* [ ] AVC **cancelled** due to driver immaturity
|
|
|
* [ ] HEVC **cancelled** due to driver immaturity
|
|
|
* V4L2 M2M encoder for Wave521
|
|
|
* [ ] AVC **cancelled** due to missing driver
|
|
|
* [ ] HEVC **cancelled** due to missing driver
|
|
|
* [ ] JPEG **not** planned at this time
|
|
|
* Input
|
|
|
* [x] USB
|
|
|
* [ ] MIPI CSI **not** planned
|
|
|
* V4L2 capture
|
|
|
* [x] USB
|
|
|
* [ ] MIPI CSI **not** planned
|
|
|
|
|
|
### Misc
|
|
|
|
|
|
* [ ] HDMI CEC
|
|
|
* [ ] HDMI CEC **cancelled** due to driver immaturity
|
|
|
|
|
|
## Board info
|
|
|
## Troubleshooting
|
|
|
|
|
|
More info about the boards and OS support can be found at [RVspace](https://rvspace.org).
|
|
|
### DRM video output does not work
|
|
|
|
|
|
### Processor
|
|
|
The JH7100 chipset features a dual-core SiFive U74-MC RISC-V 64-bit processor supporting the RV64GC ABI.
|
|
|
The DRM output currently requires frame buffers allocated
|
|
|
through the Linux kernel's Contiguous Memory Allocator (CMA).
|
|
|
The default CMA size is inadequate, so it must be increased
|
|
|
via the **kernel** boot command line or the Device Tree.
|
|
|
|
|
|
Note that there is no vector unit. There is obviously no packed SIMD support either since that extension was not ratified at the time.
|
|
|
For instance, with the Grub bootloader
|
|
|
(as provided in the StarFive Fedora disk image)
|
|
|
append `cma=64M` to the `linux` lines in `/boot/grub/grub.cfg`.
|
|
|
|
|
|
### DRM video output colours are shifted
|
|
|
|
|
|
This is a known bug in the Starfive DRM driver. Try to update your kernel to see if it has been fixed.
|
|
|
|
|
|
### X11 video output is slow
|
|
|
|
|
|
### Codecs
|
|
|
For lack of GPU, rendering video with X11 (or Wayland) requires the CPU to perform YUV to RGB colour space conversion, which is way too computationally intensive.
|
|
|
|
|
|
The board includes a Wave511 decoder and Wave521 encoder for AVC and HEVC from Chips&Media. Collabora is working on a [V4L2 codec driver](https://gitlab.collabora.com/chipsnmedia/kernel) for the hardware.
|
|
|
**Use the DRM video output instead.**
|
|
|
|
|
|
### Display
|
|
|
### Video decoding is slow
|
|
|
|
|
|
The board has an TDA19988 display controller from NXP support HDMI 1.4, and its adjunct TDA9950 controller for HDMI CEC.
|
|
|
The Wave5xx VPU is not supported yet, so this is expected. There are no known workarounds.
|
|
|
|
|
|
## Build instruction (summary)
|
|
|
|
... | ... | @@ -152,29 +148,3 @@ Note that some essential modules cannot easily be built in such setup, |
|
|
notably the KMS modules which are dependent on `libdrm`.
|
|
|
Also Simple ALSA (SALSA) will be used instead of the fully fledged ALSA.
|
|
|
|
|
|
## Troubleshooting
|
|
|
|
|
|
### DRM video output does not work
|
|
|
|
|
|
The DRM output currently requires frame buffers allocated
|
|
|
through the Linux kernel's Contiguous Memory Allocator (CMA).
|
|
|
The default CMA size is inadequate, so it must be increased
|
|
|
via the **kernel** boot command line or the Device Tree.
|
|
|
|
|
|
For instance, with the Grub bootloader
|
|
|
(as provided in the StarFive Fedora disk image)
|
|
|
append `cma=64M` to the `linux` lines in `/boot/grub/grub.cfg`.
|
|
|
|
|
|
### DRM video output colours are shifted
|
|
|
|
|
|
This is a known bug in the Starfive DRM driver. Try to update your kernel to see if it has been fixed.
|
|
|
|
|
|
### X11 video output is slow
|
|
|
|
|
|
For lack of GPU, rendering video with X11 (or Wayland) requires the CPU to perform YUV to RGB colour space conversion, which is way too computationally intensive.
|
|
|
|
|
|
**Use the DRM video output instead.**
|
|
|
|
|
|
### Video decoding is slow
|
|
|
|
|
|
The Wave5xx VPU is not supported yet, so this is expected. There are no known workarounds. |
|
|
\ No newline at end of file |