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 个步骤:

  1. 使用 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

  1. 使用 --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 一致性测试套件,请参阅

另请参阅