小米开发平台openGL ES glFinish使用规范

在高通最新的平台上,为了进一步提升性能,启用了 CompressTexturesOnUpload 功能,如果应用不遵循 openGL glFinish 规范,会​进一步增加应用渲染数据出现异常的概率。

小米开发平台openGL ES glFinish使用规范

1.背景

在高通最新的平台上,为了进一步提升性能,启用了 CompressTexturesOnUpload 功能,如果应用不遵循 openGL glFinish 规范,会​进一步增加应用渲染数据出现异常的概率。

2.规范说明

应用在修改更新纹理后,openGL 规范要求应用程序执行完 glFinish 后, 其他地方才能去操作使用此纹理(注意高通平台目前只需要 glFlush, 但对于 openGL 规范,需要执行 glFinish,详见 OpenGL ES 3 specification section D “Propagating changes to objects”)。

3.案例分析

  • 美图秀秀相机预览人像扭曲
小米开发平台openGL ES glFinish使用规范
  • 美颜相机预览画面偏暗
小米开发平台openGL ES glFinish使用规范
  • 问题原因

应用的 thread 6 和 thread 7 共享 GL Context,然后 thread 6 对 thread 7 上传的纹理(texture13)进行采样,但是在 thread7 中,纹理更新时没有 进行 glFinish 或 glFlush,导致数据渲染出现问题。所以 thread7 应该在纹理更新后调用 glFinish 或 glFlush,然后 thread 6 再使用 texture13 来渲染。

小米开发平台openGL ES glFinish使用规范

编辑:yimen,如若转载,请注明出处:https://www.yimenapp.com/kb-yimen/12691/

部分内容来自网络投稿,如有侵权联系立删

(0)
上一篇 2022年11月24日 下午3:16
下一篇 2022年11月24日 下午3:21

相关推荐