Commit Graph

16 Commits

Author SHA1 Message Date
Quentin Schulz
91a694e250 enable HW VPU decoding for SoCs that have stateless VPUs
v4l2codecs is the gstreamer plugin for V4L2 stateless video hardware
decoding. The Rockchip SoCs that have a VPU all seems to be based on
Hantro, RKVDEC or RKVDECv2, all stateless encoding/decoding VPUs.

Therefore, let's enable VPU decoding in Gstreamer whenever possible,
when the SoC supports it.

PX30, RK3066, RK3188, RK3288, RK3328, RK3399, RK356x and RK3588(s) all
have at least one Hantro VPU.

RK3328, RK3399, RK356x and RK3588(s) all have at least one
RKVDEC/RKVDECv2 VPU (though not necessarily supported in the upstream
kernel just yet).

=== PX30
Tested on PX30 Ringneck with with Haikou+Haikou Video Demo adapter:

$ gst-launch-1.0 filesrc location=$FILE ! parsebin ! v4l2slh264dec ! waylandsink

with FILE storing the path to any h264 file, e.g.
https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_720p_h264.mov
https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_1080p_h264.mov

Needed packages are:
- weston
- gstreamer1.0-plugins-bad (for waylandsink and v4l2slh264dec)
- gstreamer1.0-plugins-base (for parsebin)

A few frames are dropped every other second for 1080p but otherwise
smooth.

=== RK3399
Tested on RK3399 Puma with Haikou:

$ gst-launch-1.0 filesrc location=$FILE ! parsebin ! v4l2slh264dec ! waylandsink

with FILE storing the path to any h264 file, e.g.
https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_1080p_h264.mov
https://download.blender.org/demo/movies/BBB/bbb_sunflower_2160p_30fps_normal.mp4.zip

Needed packages are:
- weston
- gstreamer1.0-plugins-bad (for waylandsink and v4l2codecs)
- gstreamer1.0-plugins-base (for parsebin)

=== RK3588

Tested on a RK3588 Tiger with Haikou+Haikou Video Demo adapter - on a
downstream v6.6 (upstream-based, not Rockchip BSP-based) with DSI
patches - :

$ gst-launch-1.0 filesrc location=$FILE ! parsebin ! v4l2slav1dec ! fakesink

with FILE storing the path to any AV1 file, e.g.
http://download.opencontent.netflix.com.s3.amazonaws.com/AV1/cmaf/spark-8b-59.94fps/spark_606kbps_432p.mp4
https://woolyss.com/f/av1-nosound-chimera.mp4
https://woolyss.com/f/av1-opus-sita.webm

Needed packages are:
- gstreamer1.0-plugins-bad (for fakesink and v4l2slav1dec)
- gstreamer1.0-plugins-base (for parsebin)

For some reason though, waylandsink is very choppy. Combining
fpsdisplaysink with fakesink shows a ~60fps when decoding the 432p file,
~24fps for the two others.
Note that 10b-depth isn't supported (at least in my setup).

Reviewed-by: Trevor Woerner <twoerner@gmail.com>
Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
2024-08-29 19:27:56 -04:00
Quentin Schulz
50fdb975cf add rockchip MACHINEOVERRIDES
Add "rockchip" to the MACHINEOVERRIDES so that it can be used to easily
identify things that apply only to Rockchip-based devices and keeping
other devices untouched.

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
2024-06-06 13:20:19 -04:00
Quentin Schulz
49ec226dc0 rk3066: fix MACHINEOVERRIDES order
The SOC_FAMILY OVERRIDES should come after the TUNE one, so it needs to
be defined before.

before:
MACHINEOVERRIDES="rk3066:armv7a:marsboard-rk3066"
after:
MACHINEOVERRIDES="armv7a:rk3066:marsboard-rk3066"

Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de>
2024-06-06 13:20:18 -04:00
Anthony Davies
265e8c3df2 allow KERNEL_IMAGETYPE override
Update machine include files to allow overriding of KERNEL_IMAGETYPE.

[
with the following 2 tweaks by Trevor:
- remove the "v3" from the commit's subject
- extended patch to rk3308 and rk3588s, which were added in between this patch
  being submitted, and this patch being applied
]

Signed-off-by: Anthony Davies <anthony.t.davies@gmail.com>
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
2023-11-16 17:34:24 -05:00
Trevor Woerner
dd1fc4abcf linux-yocto: remove non-rockchip archs
Remove the non-rockchip architectures from the kernel build since these are
all a waste of build time, filesystem space, and runtime memory.

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
2023-09-16 07:38:36 -04:00
Khem Raj
4ed72a368a machines: Adjust for new location of tune files in core
Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-08-19 10:14:35 -04:00
Trevor Woerner
8cd56cdcd8 console cleanup
Consolidate all the various console definitions to the common
conf/machine/include/rockchip-defaults.inc file and create
RK_CONSOLE_BAUD and RK_CONSOLE_DEVICE variables that can be
reused in the wks files.

The following variables were checked before and after this patch
to make sure they are sensible:
- SERIAL_CONSOLES
- RK_CONSOLE_DEVICE
- RK_CONSOLE_BAUD

A boot test was performed on the following boards to make sure
they all continue to boot to a cmdline:
- tinker-board
- rock-pi-e
- nanopi-m4-2gb
- rock64
- rock-pi-4b

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
2021-06-27 14:43:56 -04:00
Joshua Watt
01467664da rk3399: Add generic rk3399 support
Adds support for the rk3399 SoC. Notably:
 *) Split out the default kernel config and image type from
    rockchip-defaults.inc now that not all support chips are ARMv7
 *) Apply a patch to Arm Trusted Firmware to fix a compile issue
 *) Arm Trusted Firmware requires the arm-none-eabi-native compiler to
    compile the M0 firmware.
 *) Modify u-boot to pull in the ATF files when compiling
 *) The rk3399 is support by the panfrost driver in mesa, so enable it

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
2020-01-27 16:32:19 -05:00
Trevor Woerner
02f601cfee machine: cleanup
Create a conf/machine/include/rockchip-defaults.inc that includes
rockchip-wide defaults, then organize the conf/machine/include/rk*.inc and
individual machine files accordingly.

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
2018-04-25 23:00:39 -04:00
Trevor Woerner
ff495a3853 linux-rockchip: remove
There is no MACHINE that is using it.

This recipe should have really been called "linux-radxa" since that is from
where it is fetching the sources, i.e. github.com/radxa and not
github.com/rockchip-linux.

The conf/machine/include/rk3{066|188}.inc files were still using the old
kernel recipe name.

Now with RSS, the "prebuilt-gcc-linaro" no longer works. Although I could get
this recipe to work again, trying to build the kernel fails with "as:
unrecognized option -EL".

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
2018-04-15 00:57:37 -04:00
Trevor Woerner
b3c70ca0b6 machine: rk3066: Use SoC specific assignments
In this way the modifications will be used on all RK3066 boards.

Signed-off-by: Eddie Cai <eddie.cai.linux@gmail.com>
Reviewed-by: Trevor Woerner <twoerner@gmail.com>
Reviewed-by: Romain Perier <romain.perier@collabora.com>
2017-02-18 18:26:11 +01:00
Trevor Woerner
2fae057dfc machine: remove DEFAULTTUNEs
The DEFAULTTUNE configuration should not be set at the BSP layer but in a
DISTRO layer (or a user's conf/local.conf). Remove the two DEFAULTTUNEs that
are currently in the layer and add a note in the README to inform users of
this issue and potential settings.

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
Reviewed-by: Romain Perier <romain.perier@collabora.com>
2017-02-18 18:05:44 +01:00
Romain Perier
561f2a80b9 machine: Replace KERNEL_DEFCONFIG by KBUILD_DEFCONFIG
KBUILD_DEFCONFIG already existed in the yocto project. When it is used
with the kernel-yocto bbclass, it specifies an "in-tree" kernel
configuration file for use during a kernel build. So instead of use our
own variable we use the standard variable designed for that purpose

Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
2016-08-25 19:51:48 +02:00
Romain Perier
8e1caba550 machine: Introduce a new variable KERNEL_DEFCONFIG
This variable will hold the name of the in-tree defconfig to use
to configure the kernel before compile it. This is better to use
in-tree config file now, is we don't plan to maintain a defconfig
file per board and it is also synced with upstream.

Signed-off-by: Romain Perier <romain.perier@free-electrons.com>
Reviewed-by: Trevor Woerner <twoerner@gmail.com>
2016-08-08 07:58:46 -04:00
Trevor Woerner
5b764a3729 rk3066.inc: remove rockchip-update-img
None of the machines based on the RK3066 (or compatible) use an initrd image,
therefore an update image can't be successfully generated for them. Therefore
remove the request to try building this artifact.

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
Reviewed-by: Romain Perier <romain.perier@gmail.com>
2015-09-11 14:37:51 -04:00
Romain Perier
ac7c320104 machine: Rename rockchip.inc include file to rk3066.inc
This include file is used by rk3066 and rk3188 based devices. So this
is better to rename it rk3066.inc and to create another include file
rk3188.inc which simply includes it. In that way, we have one include
file for each SoC and it reduces confusions.

Signed-off-by: Romain Perier <romain.perier@gmail.com>
Reviewed-by: Trevor Woerner <twoerner@gmail.com>
2015-08-06 13:10:29 +02:00