AMDGPU - 显示贡献¶
首先,如果您来到这里,您可能想为显示代码做出一些技术贡献,为此,我们表示感谢:)
此页面总结了您可以提供帮助的一些问题;请记住,这是一个静态页面,并且始终最好尝试联系 amdgfx 中的开发人员或一些维护人员。最后,此页面遵循创建 TODO 列表的 DRM 方式;有关更多信息,请查看 ‘TODO 列表’。
Gitlab 问题¶
用户可以在以下位置报告与 AMD GPU 相关的问题
通常,我们尝试为所有新工单添加适当的标签,以便轻松过滤问题。如果您可以重现任何问题,则可以通过添加更多信息或修复问题来提供帮助。
难度级别:多样
IGT¶
IGT 提供了许多可以在您的 GPU 上运行的集成测试。我们总是希望通过大量测试来增加我们 CI 中的测试覆盖率。如果您希望为显示代码做出贡献,但不确定从哪里入手,我们建议您运行所有 IGT 测试,并尝试修复在您的硬件中看到的任何故障。请记住,此故障可能是 IGT 问题或内核问题;有必要逐个案例进行分析。
难度级别:多样
编译¶
修复编译警告¶
在内核编译中启用 W1 或 W2 警告级别,并尝试修复显示侧的问题。
难度级别:入门
修复使用 um 架构时的编译问题¶
Linux 具有用户模式 Linux (UML) 功能,并且内核可以编译为 um 架构。为 um 编译可以从测试的角度带来多种优势。我们目前在这方面存在一些编译问题,需要修复。
难度级别:中级
代码重构¶
为 DC 函数添加前缀,以使用 ftrace 改进调试¶
Ftrace 调试功能(请查看 ‘ftrace - 函数跟踪器’)是开发人员尝试理解错误时检查代码路径的好方法。Ftrace 提供了一种过滤机制,当开发人员对代码的哪一部分可能导致问题有所了解时,该机制会很有用;因此,如果一组函数具有适当的前缀,则很容易创建良好的过滤器。此外,前缀可以提高堆栈跟踪的可读性。
DC 代码不遵循某些前缀规则,这使得 Ftrace 过滤器更加复杂,并降低了堆栈跟踪的可读性。如果您想开始为显示做出贡献,并且希望做一些简单的事情,则可以创建补丁,将前缀添加到 DC 函数。要创建这些前缀,请使用文件名的一部分作为目标文件中所有函数的前缀。查看 ‘amdgpu_dm_crtc.c` 和 amdgpu_dm_plane.c 以获取一些参考。但是,我们强烈建议不要发送更改这些前缀的大型补丁;否则,将很难审查和测试,这可能会引起维护人员的顾虑。尝试小步骤;如果遇到疑问,您可以在投入精力之前询问。我们建议首先查看 dceXYZ、dcnXYZ、basics、bios、core、clk_mgr、hwss、resource 和 irq 等文件夹。
难度级别:入门
减少代码重复¶
AMD 拥有广泛的产品组合,包括 amdgpu 支持的各种 dGPU 和 APU。为了保持新硬件的发布节奏,DCE/DCN 采用模块化设计,使新硬件的启动速度很快。多年来,amdgpu 在代码重复区域积累了一些技术债务。对于此任务,找到一个可以发现代码重复(包括模式)的工具,并将其用作减少重复的指导,这将是一个好主意。
难度级别:中级
使 atomic_commit_[check|tail] 更具可读性¶
负责原子提交和尾部的函数是复杂且广泛的。特别是 amdgpu_dm_atomic_commit_tail 是一个很长的函数,可以受益于拆分为较小的辅助函数。非常欢迎在此方面的改进,但请记住,此区域中的更改将影响所有 ASIC,这意味着重构需要全面的验证;换句话说,这项工作可能需要一些时间进行验证。
难度级别:高级
文档¶
扩展 kernel-doc¶
许多 DC 函数没有适当的 kernel-doc;理解一个函数并添加文档是更多地了解 amdgpu 驱动程序的好方法,并且也可以为整个社区做出杰出的贡献。
难度级别:入门
超越 AMDGPU¶
AMDGPU 提供了用户空间尚未启用的功能。本节重点介绍一些最酷的显示功能,这些功能可以通过用户空间开发人员的帮助来启用。
启用底层¶
AMD 显示器具有一种称为底层的功能(您可以在 ‘多平面覆盖 (MPO)’ 中阅读更多相关信息),旨在在播放视频时节省功耗。基本思想是将视频放在底部的底层平面中,而将桌面放在其上的平面中,并在视频区域中开一个孔。此功能已在 ChromeOS 中启用,并且根据我们的数据测量,它可以节省功耗。
难度级别:未知
自适应背光调制 (ABM)¶
ABM 是一项根据显示的图像调整显示面板背光级别和像素值的功能。当系统开始使用电池运行时,这种节能功能可能非常有用;由于这将影响显示输出的保真度,因此如果用户可以打开或关闭此选项,那将是好事。
难度级别:未知
HDR 和色彩管理和 VRR¶
HDR、色彩管理和 VRR 是很大的主题,很难将它们概括为简洁的待办事项。如果您对这个主题感兴趣,我们建议您查看社区开发人员的一些博客文章,以更好地了解一些具体的挑战和正在研究该主题的人员。如果有人想研究某个特定部分,我们可以尝试提供一些基本指导。最后,请记住,我们已经为这些区域提供了一些 kernel-doc。
难度级别:未知