外观
Rendering Diagnostics 渲染诊断候选与验证边界
本页收纳 Perfowl 在 ActivityTrace / CoreAnimation 逆向过程中发现、有诊断价值但尚未升级为正式产品指标的图形数据。它与 Display Performance 分离:前者描述已冻结或准备冻结的用户指标,本文记录研究候选、字段语义与验证边界。
研究状态
本页中的字段不能因为“能抓到”就直接展示成产品指标。任何字段在进入工作台、报告或 Registry 前,都必须重新完成原始字段、单位、scope、聚合方式、missing 语义与真机 E4 验证。
1. RenderInterval
真机 ActivityTrace 已观察到:
text
subsystem = com.apple.coreanimation
category = WindowServer
name = RenderInterval观察字段包括:
text
refresh_interval
display_id
pass_count
compile_count
cache_misses
fallback_draws潜在用途:
| 字段 | 潜在诊断价值 | 当前边界 |
|---|---|---|
pass_count | 观察渲染 pass 复杂度变化 | 未确认是逐帧、区间还是累计语义 |
compile_count | 观察渲染编译行为与长帧是否同窗 | 不提前命名为 Shader Compile Count |
cache_misses | 观察缓存失效与 FrameTime spike 的相关性 | 单位与累计方式待验证 |
fallback_draws | 观察 fallback rendering 行为 | 触发条件与业务含义待验证 |
2. CAImageQueue / ImageQueueSample
已观察到 CAImageQueue / ImageQueueSample,包含类似:
text
surfaceID
serverSamplingTime
updateSeed
queueGeneration
sampleSurface
sampleState潜在研究方向:视频、Camera、IOSurface、图片队列更新与 presentation stall 的关联。当前不把任何字段命名为“Queue Depth”“Image Stall”等正式指标,除非完成事件序列和状态机验证。
3. Surface / Display Metadata
surface_id、display_id 以及 Display.Performance / HotPlug 能帮助建立:
- 内屏与外接显示器身份;
- 分辨率和 best refresh rate;
- 不同 Surface 的事件关联;
- 系统 UI、视频 Surface 与目标前台画面的后续归因研究。
第一阶段仅把这些字段作为 metadata / correlation key,不做性能评分。
4. skip_request 与 buffer_count
FrameLifetime 中已经观察到:
text
skip_request
buffer_count它们很有价值,因为可能帮助区分“应用没有新内容需要更新”和“本应产生新帧但 pipeline 迟到”。但当前尚未建立跨版本、跨场景的严格语义映射,因此只作为高价值研究字段保存。
5. Apple Hitch 对齐研究
Perfowl 现有 Jank 是自身的 FrameTime 派生算法,不直接等同 Apple Hitch。只有在能够稳定恢复并验证:
text
Expected Frame Lifetime
Actual Frame Lifetime
Frame Overrun / Hitch Interval以后,才允许新增:
text
Hitch Count
Hitch Duration
Hitch Rate在此之前,不用 FrameTime > RefreshInterval 冒充 Hitch。
6. 候选进入产品的硬门禁
每一个 Rendering Diagnostics 候选至少必须完成:
- 字段 schema 与类型冻结;
- iOS 版本兼容矩阵;
- 真实负载变化响应;
- 单位和累计/瞬时语义确认;
- scope 与目标 App 归因边界;
- 前后台、重连与多 Display 行为;
- 数据量与长期稳定性;
- 与 FrameTime spike 的同窗对照;
- E4 真机证据;
- 对应知识页公式先行,再进入 Registry / UI / Report。
7. 与正式知识页的关系
text
Display Performance
→ 回答“画面现在表现怎样”
Frame Experience
→ 回答“用户体验损害有多严重”
Rendering Diagnostics
→ 研究“为什么可能出现这种画面表现”正式排查流程见 卡顿诊断与渲染归因。