我可以构建自己的 libEGL.so 吗?
Can I build my own libEGL.so?
我在我的 opengl 应用程序上遇到了一个错误,有时 在应用程序运行期间 运行 发生了 EGL 错误:
E/libEGL: validate_display:255 error 3008 (EGL_BAD_DISPLAY)
这非常令人沮丧,因为大多数 EGL_BAD_DISPLAY 类错误都发生在 EGLContext 创建时。
但在我的情况下,EGL 似乎突然失去了显示,这怎么可能?不幸的是,我无法升级我设备的操作系统(它是 android 7.1 的自定义版本,与设备供应商一起发货)
我能想到的唯一原因是随 OS 一起提供的 libEGL 有问题,因此如果我可以从源代码构建自己的 libEGL 来替换旧的,那么也许我可以解决这个问题。所以我的问题是 是否可以构建我自己的 EGL 库来替换 Android 库?如果是我该怎么办?
这取决于EGL的哪一部分有错误; Android有两层。
底层 "real" EGL 实现不太可能被替换 - 它通常是图形堆栈的一部分,并且与 GPU 供应商的 OpenGL ES 是同一个库,因此是闭源的。
Android 本身实现了一个处理缓冲区管理的薄垫片 EGL,因此如果错误出在这部分,那么您可能对 AOSP 中的版本有一些运气。
我在我的 opengl 应用程序上遇到了一个错误,有时 在应用程序运行期间 运行 发生了 EGL 错误:
E/libEGL: validate_display:255 error 3008 (EGL_BAD_DISPLAY)
这非常令人沮丧,因为大多数 EGL_BAD_DISPLAY 类错误都发生在 EGLContext 创建时。
但在我的情况下,EGL 似乎突然失去了显示,这怎么可能?不幸的是,我无法升级我设备的操作系统(它是 android 7.1 的自定义版本,与设备供应商一起发货)
我能想到的唯一原因是随 OS 一起提供的 libEGL 有问题,因此如果我可以从源代码构建自己的 libEGL 来替换旧的,那么也许我可以解决这个问题。所以我的问题是 是否可以构建我自己的 EGL 库来替换 Android 库?如果是我该怎么办?
这取决于EGL的哪一部分有错误; Android有两层。
底层 "real" EGL 实现不太可能被替换 - 它通常是图形堆栈的一部分,并且与 GPU 供应商的 OpenGL ES 是同一个库,因此是闭源的。
Android 本身实现了一个处理缓冲区管理的薄垫片 EGL,因此如果错误出在这部分,那么您可能对 AOSP 中的版本有一些运气。