Skip to content

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 候选至少必须完成:

  1. 字段 schema 与类型冻结;
  2. iOS 版本兼容矩阵;
  3. 真实负载变化响应;
  4. 单位和累计/瞬时语义确认;
  5. scope 与目标 App 归因边界;
  6. 前后台、重连与多 Display 行为;
  7. 数据量与长期稳定性;
  8. 与 FrameTime spike 的同窗对照;
  9. E4 真机证据;
  10. 对应知识页公式先行,再进入 Registry / UI / Report。

7. 与正式知识页的关系 ​

text
Display Performance
→ 回答“画面现在表现怎样”

Frame Experience
→ 回答“用户体验损害有多严重”

Rendering Diagnostics
→ 研究“为什么可能出现这种画面表现”

正式排查流程见 卡顿诊断与渲染归因。

Perfowl · Performance Observer