OPPO K13 Turbo全面评测:性能与全能的完美平衡
|
亲历现场。那个大版本封版前四十八小时,我蹲在B12-3测试间里盯K13 Turbo的热插拔稳定性——不是插拔充电线,是插拔Type-C转HDMI拓展坞,接显示器再切回原生投屏,切十次,每切一次跑一帧OpenGL ES渲染校验。结果第七次切回来,状态栏没弹出“已连接显示器”通知,但SurfaceFlinger的layer树里明明有那个DisplayDevice节点,连log都打了两行:一行DEBUG说“hotplug detected”,一行ERROR说“notification suppress due to policy”。我当场把log拖进Sublime,光标悬停在policy那行上面——手抖了,没敢点进去看是哪个policy。组长路过时问我“稳不稳”,我说“切屏流程过”,他点头走了。我没提通知没弹这事。现在想想,我原以为这算边缘case,结果上周用户舆情日报里,十七个ID重复刷“投屏成功但没提示”,截图全带时间戳,全是那个大版本OTA后七十二小时内。 测试间的灯管闪。不是整排,就左起第二根,滋啦滋啦响,但亮着,光是绿的,偏青。桌上三杯没喝的咖啡,最左那杯冷透了,杯沿一圈褐色渍,中间那杯浮着层油膜,最右那杯还冒热气——我根本没碰过第三杯,是开发小陈自己泡的,坐我斜后方,凌晨两点他还在改SurfaceFlinger的policy_filter逻辑,键盘敲得像打桩,咔、咔、咔,停顿三秒,再咔。他工位隔板上贴着张便利贴,字是蓝墨水写的:“@小陈:别动HAL层migrate_display接口,上一版留的坑,别填。”落款日期是上周四。我瞥见时正把第十三轮热插拔脚本手动kill掉,发现adb shell dumpsys SurfaceFlinger | grep -A5 “DisplayDevice” 输出里,“status: ON”下面多了一行空行,空行后面才是“type: EXTERNAL”。空行。没内容。就一行空白。这玩意儿在log里出现过三次,三次都在不同机器上,同一轮脚本执行中,同一时间戳前后三百七十二毫秒内。
外观展示图,仅供参考 产品经理老李下午三点冲进来,拍我桌子问“K13 Turbo那个性能与全能平衡评测能不能压一压”,我说“评测?我没写评测”。他愣住,说“宣传部给你的任务单啊,OPPO K13 Turbo全面评测:性能与全能的完美平衡”。我盯着他手里那张A4纸,打印边距不对,左边宽了两毫米——我们部门从来没用过那种纸。我说“哦,那个标题?它优点在优胜劣汰”。他皱眉:“汰什么?”我说“汰掉所有没法扛住三轮极限压测的调度策略,汰掉所有不敢在DisplayPowerController里开双buffer的驱动分支,汰掉所有在thermal-throttling临界点还敢报‘cooling device inactive’的固件模块”。老李没接话,转身走了,走到门口又回头,“你刚说的‘双buffer’是哪个层级的?”我没答。这个我说不准。SurfaceFlinger下头是HAL,HAL下头是driver,driver下头……谁记得清。其实真让我吐不快的不是这个。是那天凌晨三点十七分,我打包最后一批日志往FTP传,发现有个crash文件夹少了一个dump:kernel_panic_20240708_031642,路径对,size是零字节。我立刻去查设备端dmesg buffer,翻到三小时五十二分钟前,最后一行是“[ 1198.337121] PM: suspend exit”,然后没了。没有panic call trace,没有Oops,没有die()入口。干干净净,就像系统自己删掉了死因。而就在同一台机器上,同一个时间点前后,隔壁组的兄弟跑MediaCodec stress test,录屏显示解码器连续崩了五次,每次崩前GPU频率都卡死在八百兆赫兹不动,崩后reset recovery耗时十九秒——这事儿我敢打包票,因为我就站在他工位边上看了全过程,看他手指悬在键盘上,没按下去,就那么看着屏幕灰掉,再亮,再灰,再亮。但他报告里没写GPU锁频。他说“写了也没人信”。 凌晨打车回家的司机在听评书,是《杨家将》,正说到金沙滩,潘仁美撤兵那段。我盯着窗外倒退的路灯,想的是那个空行——display device status后面那行空行。为什么留空?是不是有人故意留的?还是log buffer写溢出后自动补的?我没查。封版截止钟在四小时后响,我点了提交按钮。现在想想,那个标题里“完美平衡”的“完”字,右边“元”字底下那个“儿”写歪了,向左撇得太狠,像条要断的线。 对了,小陈昨天在茶水间遇见我,递来半包糖:“上次那杯咖啡,我喝错了你的杯子。”我没接糖。我说:“你改policy_filter的时候,试过把display_state_change的callback挪到onDisplayConfigChanged之前吗?”他摇头。我说:“试一试。就当练手。”他点点头,转身去了。我没告诉他,我昨晚复现过——挪过去之后,第七次插拔,通知弹出来了。但第八次,SurfaceFlinger整个卡死十八秒,dump出来,backtrace第一行是binder_thread_read。这个我敢打包票。可要不要报?报给谁?开发说这是“跨层依赖”,产品经理说“用户感知不到”,组长说“等下一版”。我今天打算先把那个空行的log样本截个图,发给安卓底层组的熟人,看看他认不认识那个格式。不带任何说明,就一张图。 (编辑:171手机网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

