OS3.0 Skia Vulkan Pipeline Cache 方案适配与Bug流转说明

本说明文档用于指导TR4-PipelineCache帧间数据缓存技术方案及排期评估方案的预置及Bug流转流程的说明

  • 此说明只针对该方案生效,原有方案(OS3.0之前或hwui使用GLES)按该Skia Cache Miss 1.0方案适配更新说明执行
  • pipeline info与shade cache的spirv与机型、驱动无关,pipeline info与shader cache可复用
  • 为了避免分层造成的影响,建议运行cache 工具脚本运行所有场景提取pipeline info与shader cache

适配条件

  • UI形状改变(矩形圆角矩形)、新增效果(模糊,取色,更改透明度)、开发第一次CreateGraphicsPipeline时间变长,影响GPU相关的场景,需要运行预制脚本并提交预制cache
  • pad或phone UI 不一致

适配过程

这里以XXX平台适配为例,具体说明适配过程

  1. 检查是否hwui使用vulkan,若输出Pipeline=Skia (OpenGL),请按Skia Cache Miss 1.0方案适配更新说明适配

adb shell dumpsys gfxinfo com.miui.home | grep Pipeline
  1. 生成cache

    1. 刷机:建议刷最新版的daliy包

    2. 运行适配脚本https://git.n.xiaomi.com/zs15/cachemiss

    • 咨询@任晓蕾 加入开发权限或加入新场景

    • OS3.0预制,切换到分支 vulkan_cache,建立python虚拟环境

      • python -m venv .venv
        #激活虚拟环境
        source .venv/Script/activate
        #安装依赖
        pip install -r requirements.txt
      • 需配置src/cachemiss/config_1.yml 的设备号

#切换到git仓目库,执行
./pull_and_test_vulkan_cache.sh
  1. 非第一次适配,需用通过合并程序生成pipeline info与shader cache,咨询@袁林

https://git.n.xiaomi.com/ae-arch/graphics/pipelinecache

  1. 提交change

    参考该commit:https://gerrit.pt.mioffice.cn/c/device/xiaomi/dijun/+/5349513

    1. 下载代码

    需要下载的代码仓:device/xiaomi/[机型名称],比如对于O2S,其对应的仓为device/xiaomi/dijun

    所在分支可以通过步骤一中Rom的product组件下的manifest查询,如O2S的product下的manifest

    当前O2S的product组件下的device/xiaomi/dijun仓,使用master-25q2分支

    1. 修改mk文件

    在mk文件中加入代码

    # pipeline infos
    PRODUCT_COPY_FILES += \
        $(call find-copy-subdir-files,*,device/xiaomi/dijun/product/miui/cn/pipeline_infos,$(TARGET_COPY_OUT_PRODUCT)/etc/pipeline_infos)

  1. 提交change

    https://gerrit.pt.mioffice.cn/c/device/xiaomi/dijun/+/5349513

  2. 打包验证

    抓取trace,使用sql语句查询是否有相应条目存在:若无该条目,则change可合入

    SELECT * 
    FROM slice 
    WHERE name LIKE '%CreateGraphicsPipeline%' 
    AND dur > 1000000

预置责任

  • 测试: 测试人员,cache工具脚本开发人员
  • 业务:上层开发人员,包括:ROM包发布,锁屏,壁纸,桌面,systemui 等
  • 开发:底层开发人员,包括:性能,基础体验,架构等

适配 OS3.0 新机型

  1. 业务使用测试提供的脚本,拉取并生成数据,置入数据,提测
  2. 测试通过后,合入代码与数据即可
  3. 若测试不通过,转给开发修复bug,修复后,自测通过后,再转到第1步

Vulkna pipeline cache Bug jira 流转

  • 测试: 测试人员,cache工具脚本开发人员
  • 业务:上层开发人员,包括:ROM包发布,锁屏,壁纸,桌面,systemui 等
  • 开发:底层开发人员,包括:性能,基础体验,架构等

测试发现cache miss bug

  1. 测试通过Trace发现Skia vulkan cache miss,其中 CreateGraphicsPipeline Slice条目 大于1ms,明确复现场景后,jira提BUG给业务
  2. 业务明确是否为cache工具脚本新场景,若新场景,需要cache工具脚本开发人员(@王明 ,@任晓蕾 ,@张爽 ,@王红军 )加入新场景,若不是新场景,转到d

注:sf发生cachemiss暂不属于该BUG流程,若sf发生cache miss,可转给framework处理

  1. 相关场景业务运行cache 工具脚本后,按该文档预置入新数据至rom查看是否cache miss
  2. 若未发生cache miss 提交新数据后提测,若发生cache miss后,转到d
  3. Pipeline cache 开发人员(@王月 ,@袁林 )调试该cache miss问题,自测通过后,再执行b
  4. 测试确认无cache miss后,执行合关,结束 若发生cache miss,转到 d

后续规划

云数据库流程

开发阶段

  1. 通过feature flag开启上传pipeline info与shader cache
  2. 开发与测试过程中,无感上传分层Pipeline info与shader cache至内部云端数据库

发布阶段

  1. 按机型找到对应分层的Pipeline info与shader cache预置入rom,提测是否cache miss
  2. 若cache miss发生,由开发解决后,再发布

OS3.0 vulkan pipeline cache 新机适配&&Bug沟通