讨论广场 问答详情
请问openharmony4.1版本如何使用mesa3d驱动gpu
我在看你呵呵笑 2024-06-21 15:27:40
528 评论 分享

我这边使用mesa3d驱动gpu的话无法运行render_server服务,手动运行的话直接报错如下信息,请问这个是mesa端的问题还是ohos的问题啊,麻烦知道的大佬指点下迷津

render_service
Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglCreateImageKHR: symbol not found
Error relocating /system/lib/platformsdk/librender_service_base.z.so: glEGLImageTargetTexture2DOES: symbol not found
Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglDestroyImageKHR: symbol not found

 

528 评论 分享
写回答
全部评论(9)

img

需要将以上文件都进行以下修改

build.gn

img

cpp 

img

  

2024-07-02 17:10:22

修改后运行的结果

Error relocating /system/lib/librender_service.z.so: eglCreateSyncKHR: symbol not found
Error relocating /system/lib/librender_service.z.so: eglWaitSyncKHR: symbol not found
Error relocating /system/lib/librender_service.z.so: eglDestroySyncKHR: symbol not found
Error relocating /system/lib/platformsdk/librender_service_base.z.so: glEGLImageTargetTexture2DOES: symbol not found
 

2024-06-21 17:24:47
2024-06-24 11:50:45
检查一下设备与帖子上的不同
2024-06-24 11:50:45

diff --git a/include/EGL/eglext.h b/include/EGL/eglext.h
index a3a4e3c7ab7..3f08bed412d 100644
--- a/include/EGL/eglext.h
+++ b/include/EGL/eglext.h
@@ -188,10 +188,10 @@ typedef void *EGLImageKHR;
 #define EGL_NO_IMAGE_KHR                  EGL_CAST(EGLImageKHR,0)
 typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
 typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image);
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image);
-#endif
+//#ifdef EGL_EGLEXT_PROTOTYPES
+__attribute ((visibility("default"))) EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
+__attribute ((visibility("default"))) EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image);
+//#endif
 #endif /* EGL_KHR_image */

 #ifndef EGL_KHR_image_base
diff --git a/include/GL/gl.h b/include/GL/gl.h
index e2f5408a5d5..93c6aaa6cd3 100644
--- a/include/GL/gl.h
+++ b/include/GL/gl.h
@@ -2085,10 +2085,8 @@ typedef void* GLeglImageOES;

 #ifndef GL_OES_EGL_image
 #define GL_OES_EGL_image 1
-#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image);
+__attribute ((visibility("default"))) GLAPI void APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image);
 GLAPI void APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image);
-#endif
 typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image);
 typedef void (APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image);
 #endif
 

diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c
index c1a1d8540af..c1561255b72 100644
--- a/src/egl/main/eglapi.c
+++ b/src/egl/main/eglapi.c
@@ -1764,7 +1764,7 @@ _eglCreateImageCommon(_EGLDisplay *disp, EGLContext ctx, EGLenum target,
    RETURN_EGL_EVAL(disp, ret);
 }

-static EGLImage EGLAPIENTRY
+__attribute ((visibility("default"))) EGLImage EGLAPIENTRY
 eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target,
                   EGLClientBuffer buffer, const EGLint *attr_list)
 {
@@ -1820,7 +1820,7 @@ eglDestroyImage(EGLDisplay dpy, EGLImage image)
    return _eglDestroyImageCommon(disp, img);
 }

-static EGLBoolean EGLAPIENTRY
+__attribute ((visibility("default"))) EGLBoolean EGLAPIENTRY
 eglDestroyImageKHR(EGLDisplay dpy, EGLImage image)
 {
    _EGLDisplay *disp = _eglLockDisplay(dpy);
 

2024-06-21 17:22:48
1 楼

可以参考基于开源mesa3d的GPU驱动,OpenHarmony-4.x版本图形适配要点_AlgoIdeas-Laval社区 (csdn.net),或者自行编译Mesa3D库,将相关符号导出,举个例子:

 

 

2024-06-21 16:14:17
2024-06-21 18:09:32
引用:“真是奇怪,这个也来越多了”
Error loading shared library libEGL.so: Invalid argument (needed by /system/lib/librender_service.z.so) Error loading shared library libEGL.so: Invalid argument (needed by /system/lib/platformsdk/librender_service_base.z.so) Error loading shared library libEGL.so: Invalid argument (needed by /system/lib/platformsdk/libskia_canvaskit.z.so) Error relocating /system/lib/librender_service.z.so: eglMakeCurrent: symbol not found Error relocating /system/lib/librender_service.z.so: eglDestroyContext: symbol not found Error relocating /system/lib/librender_service.z.so: eglCreateSyncKHR: symbol not found Error relocating /system/lib/librender_service.z.so: eglWaitSyncKHR: symbol not found Error relocating /system/lib/librender_service.z.so: eglGetError: symbol not found Error relocating /system/lib/librender_service.z.so: eglDestroySyncKHR: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglGetDisplay: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglCreateImageKHR: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglGetError: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: glEGLImageTargetTexture2DOES: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglDestroyImageKHR: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglMakeCurrent: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglDestroyContext: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglDestroySurface: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglTerminate: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglReleaseThread: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglQueryString: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglCreatePbufferSurface: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglInitialize: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglBindAPI: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglChooseConfig: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglCreateContext: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglSwapBuffers: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglCreateWindowSurface: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglQuerySurface: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: eglGetProcAddress: symbol not found Error relocating /system/lib/platformsdk/libskia_canvaskit.z.so: eglGetProcAddress: symbol not found Error relocating /system/lib/platformsdk/libskia_canvaskit.z.so: eglGetCurrentDisplay: symbol not found Error relocating /system/lib/platformsdk/libskia_canvaskit.z.so: eglQueryString: symbol not found
2024-06-21 18:09:32
2024-06-21 18:08:51
引用:“记得符号导出的方式,相关头文件一并更改掉”
真是奇怪,这个也来越多了
1718964466743.jpg
下载
2024-06-21 18:08:51
2024-06-21 17:22:22
引用:“记得符号导出的方式,相关头文件一并更改掉”
render_service Error relocating /system/lib/librender_service.z.so: eglCreateSyncKHR: symbol not found Error relocating /system/lib/librender_service.z.so: eglWaitSyncKHR: symbol not found Error relocating /system/lib/librender_service.z.so: eglDestroySyncKHR: symbol not found Error relocating /system/lib/platformsdk/librender_service_base.z.so: glEGLImageTargetTexture2DOES: symbol not found 这是修改后的运行结果,是我没修改对吗 修改的内容如下: diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index c1a1d8540af..c1561255b72 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -1764,7 +1764,7 @@ _eglCreateImageCommon(_EGLDisplay *disp, EGLContext ctx, EGLenum target, RETURN_EGL_EVAL(disp, ret); } -static EGLImage EGLAPIENTRY +__attribute ((visibility("default"))) EGLImage EGLAPIENTRY eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attr_list) { @@ -1820,7 +1820,7 @@ eglDestroyImage(EGLDisplay dpy, EGLImage image) return _eglDestroyImageCommon(disp, img); } -static EGLBoolean EGLAPIENTRY +__attribute ((visibility("default"))) EGLBoolean EGLAPIENTRY eglDestroyImageKHR(EGLDisplay dpy, EGLImage image) { _EGLDisplay *disp = _eglLockDisplay(dpy); diff --git a/include/EGL/eglext.h b/include/EGL/eglext.h index a3a4e3c7ab7..3f08bed412d 100644 --- a/include/EGL/eglext.h +++ b/include/EGL/eglext.h @@ -188,10 +188,10 @@ typedef void *EGLImageKHR; #define EGL_NO_IMAGE_KHR EGL_CAST(EGLImageKHR,0) typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image); -#ifdef EGL_EGLEXT_PROTOTYPES -EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); -EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image); -#endif +//#ifdef EGL_EGLEXT_PROTOTYPES +__attribute ((visibility("default"))) EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); +__attribute ((visibility("default"))) EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image); +//#endif #endif /* EGL_KHR_image */ #ifndef EGL_KHR_image_base diff --git a/include/GL/gl.h b/include/GL/gl.h index e2f5408a5d5..93c6aaa6cd3 100644 --- a/include/GL/gl.h +++ b/include/GL/gl.h @@ -2085,10 +2085,8 @@ typedef void* GLeglImageOES; #ifndef GL_OES_EGL_image #define GL_OES_EGL_image 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); +__attribute ((visibility("default"))) GLAPI void APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); GLAPI void APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image); -#endif typedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); typedef void (APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); #endif
2024-06-21 17:22:22
2024-06-21 16:15:41
记得符号导出的方式,相关头文件一并更改掉
2024-06-21 16:15:41