ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

第17章: 构建、调试与测试

第17章: 构建、调试与测试 前面十五章讲是什么、怎么工作。这一章讲怎么把它跑起来、出问题怎么查。内容以仓库的meson_options.txt、vtest、tracing 与日志设施为准。17.1 构建meson 选项全景virglrenderer 用 Meson 构建。核心选项见meson_options.txtmeson setup build\-Dplatformsegl\# winsys: egl/glx/auto-Dvenustrue\# Vulkan (venus) 后端-Ddrm-renderersamdgpu-experimental,msm,i915-experimental\# DRM native context-Dvideotrue\# 硬件视频加速-Drender-server-workerminijail\# worker 沙箱形态-Dtracingperfetto# 追踪后端ninja-Cbuild分类速记类别选项说明图形/平台platformsegl/glx/autoVulkanvenus,vulkan-dload,vulkan-preload后端 动态加载 预加载DRMdrm-renderersamdgpu-experimental/panfrost-experimental/asahi/msm/i915-experimental视频videoVIRGL_RENDERER_USE_VIDEOunstableRender Serverrender-server-mode,render-server-worker进程模型/worker 形态调试/测试tests,fuzzer,valgrind,check-gl-errors单测/模糊/内存检查/GL 错误致命追踪tracingperfetto/sysprof/stderr/noneAPIunstable-apis开启不稳定 API17.2 vtest不用虚拟机也能测vtest第2章是一个独立测试框架它模拟 VMM 的角色通过 socket 直接驱动 virglrenderer无需真实 Guest/QEMU。# 启动 vtest 服务器EGL surfaceless无需 X/显示器$ virgl_test_server --use-egl-surfaceless# 另一个终端让 Mesa 走 virpipe/vtest 后端跑一个 GL 程序$LIBGL_ALWAYS_SOFTWARE1VGL_DRIVERvtest glxgears用途功能测试快速验证某条命令路径开发调试改一行代码 → 重编 → 直接跑迭代快CI/CD无 GPU/无 VM 也能跑基础用例复现 bug把 Guest 命令流录下来在 vtest 里重放。17.3 日志与调试开关virglrenderer 用环境变量控制日志与调试行为配合vrend_debug.c等exportVIRGL_LOG_LEVELdebug# 日志级别排查后端初始化、CCMD 分发排查着色器开 shader dump 看 TGSI→GLSL 生成结果第9章排查命令命令 dump 看解码是否在预期命令上出错。VMM 侧也可用virgl_set_log_callback把日志重定向到 VMM 自己的日志系统。17.4 Tracing看清每一帧-Dtracing选择追踪后端把关键路径提交、解码、fence、blob 分配打点后端场景perfetto与系统级 Perfetto 时间线对齐图形化分析sysprofLinux 桌面性能分析stderr轻量直接打到标准错误none关闭默认用 tracing 能回答“每帧提交了几次命令fence 等待占了多少时间着色器编译卡在哪”——这些是第18章优化的依据。17.5 测试与质量工具meson setup build-Dteststrue-Dvalgrindtrue-Dfuzzertrue ninja-Cbuildtest# 跑单元测试tests单元测试valgrind在 valgrind 下跑单测抓内存错误fuzzer对命令解码做模糊测试专抓越界/整数溢出第16章check-gl-errors把 Host GL 错误当致命测试期尽早暴露。17.6 排查决策树退回软件渲染走了后端但异常virglvenus是现象Guest 是否用了加速?查 EGL/async-fence/flags哪个后端?shader dump / 格式表render server / seccomp 日志性能问题?tracing 看提交次数/fence 等待17.7 常见构建/运行问题后端not enabled漏了对应-D...选项如 drm-renderersvtest 黑屏--use-egl-surfaceless没加或 EGL 不可用DRM 后端起不来没 EGL display → async-fence 没开第15章单测挂在 valgrind某些 GPU 驱动路径与 valgrind 不兼容用软件路径跑。小结meson 选项决定编进哪些后端与特性注意-experimental命名与 NO-OP 占位坑vtest 让你脱离 VM 快速测/复现VIRGL_LOG_LEVEL、shader/命令 dump、virgl_set_log_callback是日志利器tracingperfetto/sysprof/stderr看清每帧是优化依据tests/valgrind/fuzzer/check-gl-errors 保质量。下一章用这些工具产出的数据谈性能与优化。
返回列表