Magma 贡献和最佳做法
提交补丁
请参阅贡献。
源代码
核心 Magma 代码位于以下位置:
Magma 服务驱动程序位于以下位置:
Magma 客户端驱动程序是第三方代码库。开源客户端驱动程序通常位于 third_party/mesa。
编码规范和格式设置
- 对于源代码,请参阅 Google 样式指南。
- 对更改运行 clang-format,以保持格式一致。
测试用 build 配置
用于 L0 和 L1 测试的产品:
- 核心
用于 L0 和 L1 测试的软件包:
- src/graphics/lib/magma/tests:l1
用于 L2 测试的产品:
- 工作台 (workbench_eng)
用于 L2 测试的软件包:
- src/experiences/examples/spin_cube
提交前测试
如需详细了解 magma 的测试策略,请参阅测试策略。
Magma TPS 有多个级别。每个级别都包含之前的所有级别。
提交变更时,请指明所测试的 TPS 级别(以执行测试的硬件开头):
测试: nuc,vim2:go/magma-tps#L2 nuc,vim2:go/magma-tps#S1 nuc,vim2:go/magma-tps#C0 nuc,vim2:go/magma-tps#P0
负
包括所有单元测试和集成测试。此 tps 级别包含 2 个步骤:
- 使用 magma_enable_developer_build 进行构建并添加 magma-dev 软件包;这会运行在系统驱动程序启动时需要硬件的单元测试,然后照常公开设备。检查 syslog,查看测试结果。
示例:
fx set core.x64 --with-base=//src/graphics/lib/magma/gnbuild/magma-intel-gen:magma-dev --args magma_enable_developer_build=true
- 使用
--with-base //src/graphics/bundles:vulkan --with src/graphics/lib/magma/tests:l0
进行构建并运行测试脚本 src/graphics/lib/magma/scripts/test.sh。
第 1 关
如果您有已连接的显示屏,请执行旋转的 vkcube。此测试使用 imagepipe 交换链将帧传递给系统合成器。使用 --with-base //src/graphics/bundles:vulkan --with src/graphics/lib/magma/tests:l1
构建。
通过“ffx session add fuchsia-pkg://fuchsia.com/vkcube-on-scenic#meta/vkcube-on-scenic.cm
”使用演示进行测试。
南半球
夜间(12-24 小时)运行 vkcube-on-scenic。
S1
完整的界面压力测试。启动 s rotation_cube Flutter 示例的两个实例,并让它们在夜间运行。
C0
对于某些更改,最好在提交之前运行 Vulkan 一致性测试套件。 请参阅一致性。
P0
对于某些更改,可以运行基准来验证效果指标。请参阅基准化分析。
一致性
如需详细了解 Vulkan 一致性测试套件,请参阅