内容提要
文章借荣耀图显岗面试题,介绍AI协作编程术语:Skill是将特定能力打包成可被Agent调用的独立模块,定义用途与规范;Workflow是完成目标的执行流程,含顺序、分支、回环和中止条件,二者可互相组合复用。文章还解析Android图形:Surface是App绘制入口,不持有像素内存;GraphicBuffer承载像素内存;Layer是SurfaceFlinger的合成单元。HWC决定合成策略,SF负责执行。
延伸解读
Skill 与 Workflow:模块化与流程化的协作
文章将 Skill 定义为可被 Agent 调用的独立能力模块,明确“做什么、何时用、怎么做”;Workflow 则是完成目标的执行流程,包含顺序、分支、回环和中止条件。二者关系是:一个 Workflow 可由多个 Skill 组装,一个 Skill 也能被多个 Workflow 复用。这种设计让 AI 协作编程更接近软件工程中的模块化与流程编排,而非单次问答。
Android 图形三对象:Surface、GraphicBuffer 与 La
Surface 是 App 侧绘制入口,本身不持有像素内存,本质是 BufferQueue 生产者端句柄;GraphicBuffer 才是真正承载像素的内存对象,包含宽高、格式、usage、stride 等,由 Gralloc 分配并可被 CPU、GPU、显示控制器映射;Layer 是 SurfaceFlinger 侧的合成单元,持有消费者端并携带 Z 序、裁剪、变换、透明度等合成属性。三者分别对应绘制入口、内存载体与合成单元。
HWC 决定合成策略,SF 负责执行
文章强调合成策略由 HWC 决定,SurfaceFlinger 只负责执行。SF 收到 VSync-SF 后遍历可见 Layer,获取 buffer 并等待 fence,将各层信息打包调用 validateDisplay 交给 HWC 评估;HWC 逐层返回 DEVICE 或 CLIENT 类型,SF 再将所有 CLIENT 层用 RenderEngine 合成到 client target buffer,最后 presentDisplay 送显。这有助于理解硬件合成与 GPU 回退的协作机制。
Q&A
AI 协作编程中 Skill 和 Workflow 有什么区别?
Skill 是把特定能力打包成可被 Agent 调用的独立模块,定义做什么、何时用及规范;Workflow 是完成目标的执行流程,包含顺序、分支、回环和中止条件。一个 Workflow 可由多个 Skill 组装,一个 Skill 能被多个 Workflow 复用。
Android 中 Surface、GraphicBuffer 和 Layer 分别是什么?
Surface 是 App 侧绘制入口,不持有像素内存,是 BufferQueue 生产者端句柄;GraphicBuffer 是承载像素的内存对象,由 Gralloc 分配,可被 CPU、GPU、显示控制器映射;Layer 是 SurfaceFlinger 侧的合成单元,持有 BufferQueue 消费者端,携带 Z 序、裁剪等合成属性。
Android 的合成策略是由谁决定的?SurfaceFlinger 负责什么?
合成策略由 HWC 决定,SurfaceFlinger 只负责执行。SF 收到 VSync-SF 后遍历可见 Layer,打包 Layer 列表调用 validateDisplay 交给 HWC 评估;HWC 返回每层的 composition type(DEVICE 或 CLIENT),SF 再将 CLIENT 层用 RenderEngine 合成到 client target buffer,最后 presentDisplay 送显。
HWC 的 DEVICE 和 CLIENT 合成类型分别代表什么?
DEVICE 表示该层由硬件 overlay 直接叠加;CLIENT 表示 HWC 无法处理该层,需要退回 GPU 合成。
为什么说 Surface 本身不持有像素内存?
因为 Surface 本质是 BufferQueue 生产者端的句柄(IGraphicBufferProducer),App 通过 Canvas 或 EGLSurface 往上面绘制,但像素内存实际由 GraphicBuffer 承载。
AI 协作编程中 Workflow 通常包含哪些元素?
Workflow 包含顺序、分支、回环和中止条件,用于定义如何完成目标的执行流程。