我们在做界面显示的时候,如果处理器内置硬件图形加速,那显示效果将会大大提升。STM32有DMA2D,新唐N32926有BLT和VPE,对于全志的片子(f1c100s或者V3S)则是display engine,实现的功能差不多(包括显示数据格式转换、图层叠加、透明混合等,高级点的带旋转缩放)。
荔枝派nano的系统有drm接口,可以实现硬件plane的混合叠加,但功能很有限,而荔枝派zero的系统则没有生成drm接口,不知道是不是哪里配置不对?另外我们要怎样才能利用display engine的价值?使用LittlevGL和QT做界面都是纯软件绘图,有点浪费。
离线
nano你是怎么做的呢?
离线
nano你是怎么做的呢?
我是自己加libdrm,然后就可以基于它的接口进行编程,我也只是试了一下libdrm内置的测试程序。
离线
nano你用的是 linux4.14?4.15?
zero用4.13?
离线
nano你用的是 linux4.14?4.15?
zero用4.13?
现在nano和zero都是5.2系统
离线
那没有理由没有drm,4.14以前的版本我记得就没有drm
离线
那没有理由没有drm,4.14以前的版本我记得就没有drm
对呀,我也是刚入门,不知道生成drm是依赖于哪些配置,对比了nano和zero的内核,相关配置是一样的,会不会是设备树的原因?但我看了设备树里面有display engine的节点。
离线
全志主线显卡都是软件驱动的,我觉得还是驱动配置和设备树的原因
离线
全志主线显卡都是软件驱动的,我觉得还是驱动配置和设备树的原因
我觉不是软件驱动的,在linux/driver/gpu/drm/sun4i/目录下有display engine的驱动,而且确实被调用了,实测plane叠加速度也不慢。
离线
我是自己加libdrm,然后就可以基于它的接口进行编程,我也只是试了一下libdrm内置的测试程序。
请教楼主,有没有 libdrm 的测试代码,我试一试,
还有,这个drm 是软件实现的吗?
离线
请假楼主,有没有 libdrm 的测试代码,我试一试,
还有,这个drm 是软件实现的吗?
libdrm是一个开源库,这里可以下载: http://www.linuxfromscratch.org/blfs/view/stable/x/libdrm.html ,
下载到的库里面就有测试程序,其实也可以在buildroot里面勾选libdrm,会自动帮你下载和编译。另外libdrm只是将linux的drm驱动包装一下,使接口更加友好而已,实际功能实现还是在内核驱动里面,我觉得它是硬件实现的。
离线
多谢指教,有空我也研究一下 libdrm,刚刚翻了一下驱动,真可能是硬件实现的。感觉bsp的实现更全一点,framebuffer都分层了fb0,fb1,fb2,应用程序切换非常方便,主线就没有实现.
离线
libdrm是一个开源库,这里可以下载: http://www.linuxfromscratch.org/blfs/view/stable/x/libdrm.html ,
下载到的库里面就有测试程序,其实也可以在buildroot里面勾选libdrm,会自动帮你下载和编译。另外libdrm只是将linux的drm驱动包装一下,使接口更加友好而已,实际功能实现还是在内核驱动里面,我觉得它是硬件实现的。
我可能有点知道为什么上次f1c100s debian 跑桌面出不来的原因了,报一堆 drm 错误,然后桌面就挂了。
离线
嗯嗯,大家一起学习,把芯片用起来。
离线
@zhouyu2019 因为早期荔枝派zero linux 4.13 LCD是用 simple-framebuffer 驱动的, 而不是drm
https://github.com/Lichee-Pi/linux/blob/zero-4.13.y/arch/arm/boot/dts/sun8i-v3s.dtsi
chosen {
#address-cells = <1>;
#size-cells = <1>;
ranges;
simplefb_lcd: framebuffer@0 {
compatible = "allwinner,simple-framebuffer",
"simple-framebuffer";
allwinner,pipeline = "de0-lcd0";
clocks = <&ccu CLK_BUS_TCON0>, <&display_clocks 0>,
<&display_clocks 6>, <&ccu CLK_TCON0>;
status = "disabled";
};
离线
那么请教一下,用DRM的话,Panel该怎么配置呢?谢谢
@拉轰的脚踏车
离线
请教一下,v3s主线现在能用DRM了吗?
嗯嗯,大家一起学习,把芯片用起来。
离线
@拉轰的脚踏车
请教一下licheepi-zero v5.2现在支持DRM了吗?我这边配上了且有/dev/dri/card0设备,但是modetest只有最后一个plane能显示。
离线
硬件视频加速要是搞通的话,那就爽YY了。
离线
大家好,我现在是在v3s zero上使用spi接口来驱动ili9341 lcd屏幕,5.2主线内核dts上禁用了RGB接口的LCD display engine, 内核中启用了tinydrm的配置,在系统中也存在/dev/dri/card0和fb0的设备接口,但是使用modetest,一直扫描不到设备,请问有什么排查思路?
# ./modetest
trying to open device 'i915'...failed
trying to open device 'amdgpu'...failed
trying to open device 'radeon'...failed
trying to open device 'nouveau'...failed
trying to open device 'vmwgfx'...failed
trying to open device 'omapdrm'...failed
trying to open device 'exynos'...failed
trying to open device 'tilcdc'...failed
trying to open device 'msm'...failed
trying to open device 'sti'...failed
trying to open device 'tegra'...failed
trying to open device 'imx-drm'...failed
trying to open device 'rockchip'...failed
trying to open device 'atmel-hlcdc'...failed
trying to open device 'fsl-dcu-drm'...failed
trying to open device 'vc4'...failed
trying to open device 'virtio_gpu'...failed
trying to open device 'mediatek'...failed
trying to open device 'meson'...failed
trying to open device 'pl111'...failed
no device found
#
#
# ls /dev/dri/card0
/dev/dri/card0
# ls /dev/fb0
/dev/fb0
#
dmesg
[ 0.750304] SPI speed: 16MHz
[ 0.753195] ili9341_probe mipi_dbi_spi_init
[ 0.757444] preferred_depth=16, rotation = 270
[ 0.761976] ili9341_probe mipi_dbi_spi_init success
[ 0.767522] [drm] Initialized ili9341 1.0.0 20180514 for spi0.0 on minor 0
[ 0.774492] ili9341_probe drm_dev_register
[ 0.780125] enter yx240qv29_enable
[ 0.780132] mipi_dbi_poweron_conditional_reset
[ 0.938414] start mipi_dbi_command
[ 1.178270] end mipi_dbi_command
[ 1.182549] random: fast init done
[ 1.262670] set addr mode, rotation 270, addr 0xe8
[ 1.311729] random: crng init done
[ 1.348402] Console: switching to colour frame buffer device 40x30
[ 1.469206] ili9341 spi0.0: fb0: ili9341drmfb frame buffer device
[ 1.475315] ili9341_probe success
离线