环境:Mali 400 MP
应用场景:渲染2d rgb,yuv 图形/视频
测试linux下 基于 opengles 1024x768 1366x768 1920x1080 分辨率直接上RGB/yuv 2d纹理数据填充, fps 30~60之间徘徊,(补充1080p下帧率20);
部分资料提及如下:
TexSubImage2D cpu->gpu上载慢 ===>EGLImage
glDrawArrays ===>glDrawElements vbo
刚好今天看到《Foveated Rendering的可能技术实现》--Frank Li
讨论目的:
1.Mali 400 2d渲染性能优化方案
2.调整Mali 400工作频率 性能提升可行性
3.Mali400 Mp 单核 /4核 性能差异比对
Good, @一下
frankli
我觉得这里有好几个问题,能不能先理解一下然后一个个解决。
jingshaq,能不能帮忙先确认下我的理解有没有问题。问题比较多,能不能找出优先级高点的先解决你开发中遇到的问题?
针对频率&多核 由于看到的数据都是帖子中口头描述没有具体的官方来源(跳过讨论)
问题2 不同分辨率 ==〉基于全屏一帧,然后逐步调整分辨率测试,测试基于2d 纹理
问题1,3 glTexSubImage2D EGLImage - updating a texture without copying memory under Android sylwester 在里面提及过egl
具体参数:glTexSubImage2D( GL_TEXTURE_2D, 0, 0,0,1024,768,GL_RGBA, GL_BYTES, pixels);
应用场景就是使用opengles 渲染rgba视频
我的理解就是说glTexSubImage2D比较慢,能否问下pixels是怎么生成的?还有使用的ARM CPU支不支持NEON?
fread读取1024x768 rgba视频一帧;CPU 支持neon;
这样的话就看不到太大的优化空间了,因为CPU与GPU之间的交互始终存在。
试试能不能用glCopyTexSubImage2D直接读取rgba视频到texture。
glCopyTexSubImage2D到没尝试,我这边使用elg eglCreateImageKHR等接口 已经完成了填充(速度的确有提升),但是在始终glDrawElements这块耗时到了10~15ms;
相对这样的应用场景 感觉rgba to framebuffer可能更快些吧;
社区里面直接给你发消息咋玩的?
如果能用glCopyTexSubImage就可以省去先保存到CPU的步骤,应该可以提升性能。
glDraw花时较长比较费解,除非有大量的vertex/index数据需要处理。
互相关注先