概述
(2020.08.24 ~ 2020.08.30)
导读:
- ION 将从 kernel 主线中彻底移除
- drm/property:为 CRTC & Plane 添加 scaling filter property 支持
- DRM MIPI DSI/DBI 驱动整合
- drm/vkms:添加 writeback 功能
- Google 开始对代码中的敏感词汇进行清理
- Vulkan 或新增 VK_EXT_physical_device_drm 扩展
- VALLIUM Merged Into Mesa 20.3
- xorg 发布 1.20.9
- weston 发布 8.0.93
一、DRM
1. ION 将从 kernel 主线中彻底移除
Linux 内核维护者 Greg Kroah-Hartman(linux-stable 分支 maintainer,linux-usb 子系统 maintainer,Linux 基金会成员)近日向社区提交了一笔 patch,直接删除了 drivers/staging/android/ion
整个目录。他的理由是:kernel mainline 上的 ion 驱动根本就没人用,vendor 厂商真正使用的 ION 驱动其实是 Android Common Kernel 版本,这两个版本的 ION 代码差异非常大。所以他认为,mainline 上的 ion 除了给他的 stable 分支维护工作带来痛苦外,没有任何实际价值,因此干脆直接删掉。如果后期有开发人员想要继续在 mainline 上使用残缺的 ion 驱动,可以直接在本地 revert 该 patch,然后再打上 Android 的相应补丁。
在本周的 Android MC 会议上,开发人员刚刚讨论了关于 ION 的话题,准备在下一个 Linux LTS(Long Term Support)release 发布之后再彻底移除 mainline 中的 ION,但很明显 Greg 有点心急了。另外按照 Google 的计划,他们会在下一个 Android release(应该是 Android S)中彻底废弃 ION 的使用,取而代之的将是 DMA-BUF Heaps 驱动。
详情:[PATCH] staging: ion: remove from the tree
2. drm-core:为 crtc/plane/encoder 新增 drmm_* 接口
之前曾在我的星球上报道过关于 DRM Managed Resource 的消息(https://t.zsxq.com/rjmufE6),
drmm_* 接口和 devm_* 接口很相似,如 drmm_kmalloc()
/ drmm_kfree()
。有了 DRM Managed Resource 接口,vendor 厂商的驱动代码将会得到进一步的简化,比如在 probe/bind 失败的时候,或是在驱动 remove/shutdown 的时候,不再需要繁琐的 cleanup 操作,而只需简单的调用一个 drm_dev_put()
就可以了(前提是你的内存资源都是通过 drmm_* 接口来分配的)。drmm_* API 由 Daniel Vetter(drm-misc maintainer,intel)提交,并合入到 kernel-5.8 中。
此次报道的 Patch 则由 Philipp Zabel 提交,他基于 drmm API,为 crtc/plane/encoder object 新增了 drmm 版的 alloc 接口,分别为 drmm_encoder_alloc()
、drmm_universal_plane_alloc()
和 drmm_crtc_alloc_with_planes()
。有了这些 API,我们在编写 drm 设备驱动时就不再需要显示的调用 kmalloc() + drm_encoder_init() 来创建和初始化 encoder object 了,直接一个 drmm_encoder_alloc() 就搞定了。
详情:[PATCH 1/4] drm: add drmm_encoder_alloc()
3. drm/property:为 CRTC & Plane 添加 scaling filter property 支持
做过 OpenGL 应用开发的同学都知道,在 OpenGL 中对纹理进行缩放时会设置一个采样精度,其中有两个典型的精度参数:GL_NEAREST
和 GL_LINEAR
。NEAREST 表示采样时取纹理坐标最近的像素颜色作为目标颜色,而 LINEAR 则表示采样时选取纹理坐标中多个像素颜色做加权平均后的值作为目标颜色。二者最终的效果就是,采用 NEAREST 方式放大后的图片更显得清晰(即锐度比较强,但颗粒感也会很强),而采用 LINEAR 方式放大后的图片显得更平滑(或者说模糊,因为增加了过渡色)。
而 Pankaj Bharadiya(Intel)最近提交的 scaling patch 则是对应上面的 NEAREST 采样方式。Pankaj 为 drm crtc 和 plane 添加了 SCALING_FILTER
property,该 property 用来设置 crtc 和 plane 输出图像的缩放精度(注意是精度而不是缩放倍数),为枚举类型,目前只支持 Default
和 Nearest Neighbor
两个值,且只支持整数倍缩放。
详情:[PATCH v5 0/5] Introduce drm scaling filter property
4. MIPI DSI/DBI 驱动整合
之前曾在我的星球中报道过关于 MIPI DSI 、DBI 和 tinydrm 的讨论(https://t.zsxq.com/jIqZFIQ),该讨论由 Paul Cercueil 发起,他认为现有的 MIPI DBI 驱动框架只支持 SPI 接口,且只能放在 tinydrm 目录下,这样的驱动有太多的局限性。而 MIPI DSI 驱动则相当成熟,功能也很完善。由于 MIPI DBI 和 DSI 有许多相似之处,Paul 认为可以把 DSI 和 DBI 整合到一起,提供一个通用的 MIPI DSI/DBI 接口,这样就能大大方便 MIPI DBI 驱动的扩展,以及支持更多的 DBI 接口(如 I8080/M6800 接口)。所以他提交了一组 patch,将 mipi dbi-spi 的功能整合到了 mipi_dsi_host
中,然后通过 mipi_dsi_driver
来对 dbi panel 进行注册。同时他还提供了两个 dbi-panel 的示例代码,一个是 SPI 接口的 NewVision NV3052C LCD,另外一个是 MCU 接口的 Ilitek ILI9341 LCD。
其实我个人是反对这样的 patch 的,因为它只考虑代码的复用,却忽略了代码的可读性。这样的 Patch 很明显会给开发人员带来困扰,因为他用 dsi 接口去操作一个非 dsi 的 panel,包括驱动注册都是用 dsi 接口来注册的,这很容易让人误以为该 panel 是个 DSI panel,但实际却是一个 DBI panel!
详情:[PATCH v2 0/6] DSI/DBI, panel drivers, & tinyDRM
5. drm/trace: 打印 log 到 ftrace
Sean Paul (drm-misc maintainer, Google) 提交了一组 patch,用于将 drm log 打印到 ftrace 中。操作方法同 /sys/module/drm/parameters/debug
,只是新增了个 trace
节点。这样做有什么好处?
- 大幅提高 debug 性能。大家都碰到过打开 log 开关后整个系统就变慢的问题,尤其是当你的 Log 还是打印到串口时,所有的性能问题都会随之而来,所以通常我们在产品发布时都是将 log 默认关闭的。但是当产品出问题时,我们又希望在不破坏现场时抓取 debug log,那么此时通过 ftrace 来抓取 drm log 将是个非常不错的方法,因为它几乎不会造成性能损失。
- 如果我们通过 module param 动态开启 drm debug 开关,将会有大量的 drm log 输出到 syslog 中,这样的信息太杂乱,不易于阅读。而如果让其输出到 ftrace 中,则信息会更加聚合,且易于阅读。
详情:[PATCH v6 00/14] drm/trace: Mirror DRM debug logs to tracefs
6. drm/vkms:添加 writeback 功能
关于 vkms 添加 writeback 功能,之前曾在我的星球上报道过(https://t.zsxq.com/7IUfAYB),该提交的作者为 Rodrigo Siqueira,如今已进入到第5轮 review 中,不过看起来该 patch 已经准备的相当充分了,有开发人员已经在 IGT(Intel GPU Tools)上对该 patch 做了测试,除了有两个 cursor 相关的测试受影响外,其它测试都没什么问题。
该 patch 基于 writeback connector 架构来实现 writeback 功能。writeback connector 框架是在 kernel-4.19 时引入的一个新 feature,用于将 CRTC Plane 合成后的结果回写到 DDR 上,它是基于 workqueue 来实现的,本质上是一个独立的 encoder + connector object。该功能对于 WIFI-Display、录屏等功能都非常有用。
详情:[PATCH v5 0/3] drm/vkms: Introduces writeback support
7. drm/vkms:添加 Premultiplied color blending 支持
当前的 vkms 驱动是不支持 pixel alpha 混合的,这会造成 IGT kms_cursor_crc/cursor-alpha-transparent 测试告警。为此,Melissa Wen 为 vkms 添加了 alpha-premultiplied color blending 支持。
详情:[PATCH] drm/vkms: add alpha-premultiplied color blending
8. drm/mst: 为 DisplayPort 添加 HDCP 1.4 支持
Sean Paul(drm-misc maintainer)最近为 Intel i915 DisplayPort 驱动添加 HDCP 1.4 MST 支持,已经进行到了第 8 轮 patch review 阶段。该组 patch 为 drm/mst 新增了 QUERY_STREAM_ENCRYPTION_STATUS
的接口,用于查询当前 MST stream 是否需要加密。
详情:[PATCH v8.5] drm/mst: Add support for QUERY_STREAM_ENCRYPTION_STATUS MST sideband message
二、AOSP
Google 开始对代码中的敏感词汇进行清理
受美国“政治正确”影响,Google 出台了 respectful-code 编码规范文档,用于修正代码中某些敏感词汇,并给出了建议性的替代名词,如 master/slave 使用 main/secondary 代替。更多详细的用词规范,请参考 Google 官方文档。
如下 patch 将 framework/native/libs/binder/ProcessState.cpp
中的 dummy
(哑巴)替换成了 unused
变量。
详情:aosp/native[master]: Update language to comply with Android’s inclusive language guidance
三、Vulkan
讨论:新增 VK_EXT_physical_device_drm 扩展
开发者们发现,在实现一个 Vulkan Wayland compositor 时,总是很难找到一种高效的方法将 Vulkan physical devices 和 DRM nodes 对应起来。目前已有的方案是使用 DRM 驱动导出的 PCI ID 来对应 Vulkan physical device,但是对于某些 GPU 平台来说(如移动平台),它们根本就没有 PCI 总线,因此无法有效对应 vulkan physical device。
介于以上原因,开发人员提出了新增 VK_EXT_physical_device_drm
Extension 的想法,用于从 GPU 驱动端获取逻辑上的 physical device。
更多详情:
-
[KhronosGroup/Vulkan-Docs] Add a way to identify the DRM node of a physical device (#1354)
-
[KhronosGroup/Vulkan-Docs] Add specification for VK_EXT_physical_device_drm (#1356)
四、Mesa
1. VALLIUM Merged Into Mesa 20.3 As Vulkan Front-End To Gallium3D
2. OpenGL 4.5 Now Enabled For LLVMpipe With Mesa 20.3, To Be Back-Ported For 20.2
3. Microsoft Doubles Their Commits To Mesa This Week
4. Radeon’s AMDVLK Driver Does Support FreeSync/VRR But The Option Isn’t Widely Known
5. AMDVLK 2020.Q3.4 Released With Image Robustness Support, Fixes
6. Experimental Zink Patches Get OpenGL 4.6 Running Atop Vulkan
7. Mesa Softpipe Set To See Better Performance, Introducing New NIR-To-TGSI Path
五、Xorg
[ANNOUNCE] xorg-server 1.20.9
六、Wayland
[ANNOUNCE] weston 8.0.93
精力有限,争取下一期能做的更完善。
最后
以上就是喜悦马里奥为你收集整理的Linux Graphics 周刊(第 3 期)的全部内容,希望文章能够帮你解决Linux Graphics 周刊(第 3 期)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复