加载论坛时出错,请强制刷新页面重试。

龙芯7A1000桥片集成显卡3D功能变得好用啦

杜比

2022年06月09日晚对loongnix进行了系统更新,直观的感觉到集显上运行kde桌面环境变得顺畅了。默认的桌面特效里,透明已经打开,一探究竟,是龙芯提供的etnaviv gc1000内核驱动在起作用。

龙芯桥片7A1000上的内置显卡,一直以来是个备胎角色,性能也一直被人诟病,主要原因之一是它的驱动,一直处于“可用”状态,但并不好用,尤其是它的3D驱动,因为闭源的原因,在linux上工作不稳定。所以在使用集显的情况下,运行桌面环境只能满足显示,而不能使用到OpenGL的硬件加速特性。

现在龙芯提供的etnaviv驱动,基本上解决了这个问题,桌面使用流畅性感觉明显。

目前的驱动状态如下:

# dmesg 的内核引导相关信息
[    4.179243] etnaviv 0000:00:06.0: etnaviv drm private created
[    4.179247] etnaviv 0000:00:06.0: DMA mask and the coherent DMA mask: 32
[    4.179248] etnaviv 0000:00:06.0: dev->dma_parms->max_segment_size = 2G
[    4.179287] etnaviv 0000:00:06.0: IRQ registered, irq=41
[    4.179292] etnaviv 0000:00:06.0: Unbalanced pm_runtime_enable!
[    4.179405] etnaviv 0000:00:06.0: Number of GPU: 1
[    4.179415] etnaviv 0000:00:06.0: model: GC1000, revision: 5037
[    4.179447] etnaviv 0000:00:06.0: with MC2.0
[    4.179449] etnaviv 0000:00:06.0: with PIPE 3D
[    4.179450] etnaviv 0000:00:06.0: with PIPE 2D
[    4.179451] etnaviv 0000:00:06.0: dma mask: 0xffffffff
[    4.179452] etnaviv 0000:00:06.0: PHYS_OFFSET: 0x0
[    4.179454] etnaviv 0000:00:06.0: gpu memory base: 0x80000000
[    4.179592] etnaviv 0000:00:06.0: GPU Initialized
[    4.179718] [drm] Initialized etnaviv 1.2.0 20151214 for 0000:00:06.0 on minor 1
# 内核加载信息
etnaviv               278528  1
gpu_sched             147456  1 etnaviv
# 设备映射信息
/dev/dri
├── by-path
│   ├── pci-0000:00:06.0-card -> ../card1
│   ├── pci-0000:00:06.0-render -> ../renderD128
│   └── pci-0000:00:06.1-card -> ../card0
├── card0
├── card1
└── renderD128

也查看了下内核的config信息,在最新版内核里,包含有etnaviv编译选项,是以加载模块提供的,而上一个版本内核etnaviv编译选项并未配置。

cat config-4.19.0-17-loongson-3 | grep VIV
CONFIG_VIDEO_VIVID=m
CONFIG_VIDEO_VIVID_CEC=y
CONFIG_VIDEO_VIVID_MAX_DEVS=64
CONFIG_DRM_ETNAVIV=m
CONFIG_DRM_ETNAVIV_PCI_DRIVER=y
CONFIG_DRM_ETNAVIV_THERMAL=y

子扉

vivante的etna_viv驱动遵循GPL开源了。包括内核的etnaviv驱动,和用户空间的、Gallium的etnaviv驱动的libdrm库和mesa库。支持从vivante GC400、GC800、GC1000、GC2000、GC4000等的GPU IP核心。而且benchmark的成绩比较以前的专属闭源驱动有提高。且相关代码已经合并到了mesa、drm、linux的上游官方代码库,且早已经发布了。

详情访问:

https://github.com/etnaviv/etna_viv

https://gitlab.freedesktop.org/mesa/mesa

https://gitlab.freedesktop.org/mesa/drm

Linux内核

vivante GC1000 GPU IP应该支持OpenGL到2.1版本。(wikipedia)

所以,实非Loongson驱动之功;乃是etnaviv驱动之力。

说到底,让人对7A1000更有信心了,不一定非要等7A2000和7A2000的GPU的开放文档了,7A2000和其GPU的路太长。7A1000的GPU也是开源的么。

另外,图芯(vivante)被 芯原 (VeriSilicon)收购好久了。


杜比

子扉 7A1000的GC1000,在桥片里是pci总线设备,看之前的提交记录,龙芯对设备接口进行了pci封装。github上的驱动,是普遍性的SOC片上模块驱动,没法拿来就用。

CONFIG_DRM_ETNAVIV_PCI_DRIVER=y


淡炒番茄

龙芯在这个驱动的贡献就是在龙芯平台上使能gc1000,内核和mesa驱动的补丁还没有进入主线。


子扉

啊,原来如此。


时空质能

子扉 龙芯的显示控制器是自己写的,图形核心(gpu核)是gc1000


淡炒番茄

龙芯的显示器控制器有两个版本的驱动:

一个是loongson-drm: https://lore.kernel.org/lkml/202206251930.GbwGAcFG-lkp@intel.com/T/#m30a420cb8c4a8d8540e7ee7b988346135246b541

另一个是lsdc : https://lore.kernel.org/lkml/20220402090252.1700974-1-15330273260@189.cn/

不知道loongnix是哪个驱动?


杜比

淡炒番茄 看5.19上的代码,应该是第一个,在loongnix上能看到lsdc

还有一点,loongson-drm 在新固件环境ArchLinux上,实际观察看,已不做为一个可加载gpu drm模块。


知识共享许可协议
本站文章除其作者特殊声明外,一律采用CC BY-NC-SA 4.0许可协议进行授权。
进行转载或二次创作时务必以相同协议进行共享,严禁用于商业用途