V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
begeekmyfriend
V2EX  ›  Android

经测试, OpenGL ES 在 arm64-v8a 上的指令优化不完美,特别是 glReadPixels()

  •  
  •   begeekmyfriend · 2016-11-10 11:52:52 +08:00 · 10070 次点击
    这是一个创建于 2939 天前的主题,其中的信息可能已经有所发展或是发生改变。

    测试方法就是用 System.nanotime()的 benchmark , arm64-v8a 的执行时间是 armeabi-v7a 的一倍多。在 640x480 的 RGBA 格式上, arm64-v8a 是 40ms 以上, armeabi-v7a 是 20ms 以下。

    第 1 条附言  ·  2016-11-10 17:18:13 +08:00
    感谢大家回复,本人是安卓直播开源项目[yasea]( https://github.com/begeekmyfriend/yasea)作者,目前 native 都是 armeabi-v7a 架构,运行良好。当编译 arm64-v8a 时,美颜滤镜出现 5~6 帧的掉帧,虽然不算严重,但体验上总不如 24 帧设定那样流畅。问题已经定位到 glReadPixels 这个函数,通过 benchmark 发现时间比 v7a 要慢一倍,原因可能是驱动对 64 支持不够完美的缘故,无能为力,所以犹豫是否放出 arm64-v8a 。目前看来不存在有效解决手段。
    7 条回复    2016-11-12 12:41:46 +08:00
    binsys
        1
    binsys  
       2016-11-10 12:30:11 +08:00
    这个在不同平台上差别比较大,不光是 ARCH 上的差别,比如 Qualcomm 自己的不同平台, Allwinner , MTK ,都不一样
    wsy2220
        2
    wsy2220  
       2016-11-10 14:27:06 +08:00
    厂商的显卡驱动太渣吧
    jaryguo2011
        3
    jaryguo2011  
       2016-11-10 14:40:40 +08:00
    求解释。用不同的指令集在同样的架构上速度不一样吗?还是说只是硬件架构不同导致的?
    begeekmyfriend
        4
    begeekmyfriend  
    OP
       2016-11-10 17:19:42 +08:00
    @jaryguo2011 原因可能是 @wsy2220 所说的 GLES 驱动适配问题,我也无能为力了。
    guoxx_
        5
    guoxx_  
       2016-11-11 13:27:57 +08:00 via Android   ❤️ 1
    和 GPU 架构有很大关系。是不是 Tiled based deferred rendering, powervr 的架构就是这样的。 Immediate mode GPU 应该没问题,例如 terga.
    kokutou
        6
    kokutou  
       2016-11-12 10:05:40 +08:00 via Android
    知乎上不是有个这个问题么。。。
    说就不该用这个 glReadPixels 函数。。。
    begeekmyfriend
        7
    begeekmyfriend  
    OP
       2016-11-12 12:41:46 +08:00
    @kokutou 就是我问的,但问题没描述清楚,答主的意思是不宜在渲染到屏幕的时候去 read ,这会导致同步阻塞。但我是渲染到 FBO 再去 read 的,这是教科书里所描述的用法。而且在 armeabi-v7a 架构下不存在掉帧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4101 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 05:15 · PVG 13:15 · LAX 21:15 · JFK 00:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.