From fd1c62be656e207bfcdb0402b0c590526d94ac00 Mon Sep 17 00:00:00 2001 From: Danylo Piliaiev Date: Thu, 11 Sep 2025 17:36:47 +0200 Subject: [PATCH] egl: Bring back util_cpu_trace_init Partially reverts "perfetto: unify init". EGL lib uses perfetto, but after the change, util_cpu_trace_init doesn't happen inside libEGL.so, so when it tries to use perfetto, it crashes. Perfetto initialization happens inside other Mesa's libs, but each lib that uses perfetto must initialize it. Fixes: c7045e3e633 ("perfetto: unify init") Signed-off-by: Danylo Piliaiev Part-of: (cherry picked from commit 715b8ba539dd04a6735411d0aae644272cf28ebf) --- .pick_status.json | 2 +- src/egl/main/eglapi.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 658e25de3e9..de3668fd45d 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -5894,7 +5894,7 @@ "description": "egl: Bring back util_cpu_trace_init", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "c7045e3e6331c207065b77285ea9e786276ca0d2", "notes": null diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index cccb66b09e1..76f6e4cd2df 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -406,6 +406,9 @@ eglGetDisplay(EGLNativeDisplayType nativeDisplay) _EGLDisplay *disp; void *native_display_ptr; +#if !DETECT_OS_ANDROID + util_cpu_trace_init(); +#endif _EGL_FUNC_START(NULL, EGL_OBJECT_THREAD_KHR, NULL); STATIC_ASSERT(sizeof(void *) >= sizeof(nativeDisplay)); @@ -470,6 +473,9 @@ eglGetPlatformDisplayEXT(EGLenum platform, void *native_display, EGLAttrib *attrib_list; EGLDisplay disp; +#if !DETECT_OS_ANDROID + util_cpu_trace_init(); +#endif _EGL_FUNC_START(NULL, EGL_OBJECT_THREAD_KHR, NULL); if (_eglConvertIntsToAttribs(int_attribs, &attrib_list) != EGL_SUCCESS) @@ -484,6 +490,9 @@ PUBLIC EGLDisplay EGLAPIENTRY eglGetPlatformDisplay(EGLenum platform, void *native_display, const EGLAttrib *attrib_list) { +#if !DETECT_OS_ANDROID + util_cpu_trace_init(); +#endif _EGL_FUNC_START(NULL, EGL_OBJECT_THREAD_KHR, NULL); return _eglGetPlatformDisplayCommon(platform, native_display, attrib_list); } @@ -657,6 +666,7 @@ eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor) { _EGLDisplay *disp = _eglLockDisplay(dpy); + util_cpu_trace_init(); _EGL_FUNC_START(disp, EGL_OBJECT_DISPLAY_KHR, NULL); _eglDeviceRefreshList();