--- src/gallium/auxiliary/util/u_screen.c.orig 2024-03-13 23:59:54 UTC +++ src/gallium/auxiliary/util/u_screen.c @@ -26,6 +26,7 @@ #include "pipe/p_screen.h" #include "util/u_screen.h" #include "util/u_debug.h" +#include "util/log.h" #include "util/os_file.h" #include "util/os_time.h" #include "util/simple_mtx.h" @@ -597,14 +598,11 @@ equal_file_description(const void *key1, const void *k return (ret == 0); { - static bool has_warned; - if (!has_warned) - fprintf(stderr, "os_same_file_description couldn't determine if " + mesa_logw ("gallium: os_same_file_description couldn't determine if " "two DRM fds reference the same file description. (%s)\n" "Let's just assume that file descriptors for the same file probably" "share the file description instead. This may cause problems when" "that isn't the case.\n", strerror(errno)); - has_warned = true; } // Let's at least check that it's the same file, different files can't --- src/gallium/drivers/crocus/crocus_bufmgr.c.orig 2024-03-13 23:59:54 UTC +++ src/gallium/drivers/crocus/crocus_bufmgr.c @@ -59,6 +59,7 @@ #include "util/macros.h" #include "util/hash_table.h" #include "util/list.h" +#include "util/log.h" #include "util/os_file.h" #include "util/u_dynarray.h" #include "util/vma.h" @@ -103,14 +104,9 @@ get_time(void) #define PAGE_SIZE 4096 #endif -#define WARN_ONCE(cond, fmt...) do { \ +#define WARN(cond, fmt...) do { \ if (unlikely(cond)) { \ - static bool _warned = false; \ - if (!_warned) { \ - fprintf(stderr, "WARNING: "); \ - fprintf(stderr, fmt); \ - _warned = true; \ - } \ + mesa_logw("crocus: " fmt); \ } \ } while (0) @@ -1422,7 +1418,7 @@ crocus_bo_export_gem_handle_for_device(struct crocus_b */ struct crocus_bufmgr *bufmgr = bo->bufmgr; int ret = os_same_file_description(drm_fd, bufmgr->fd); - WARN_ONCE(ret < 0, + WARN(ret < 0, "Kernel has no file descriptor comparison support: %s\n", strerror(errno)); if (ret == 0) { --- src/gallium/drivers/iris/iris_bufmgr.c.orig 2024-03-13 23:59:54 UTC +++ src/gallium/drivers/iris/iris_bufmgr.c @@ -61,6 +61,7 @@ #include "util/macros.h" #include "util/hash_table.h" #include "util/list.h" +#include "util/log.h" #include "util/os_file.h" #include "util/u_dynarray.h" #include "util/vma.h" @@ -99,14 +100,9 @@ #define PAGE_SIZE 4096 #endif -#define WARN_ONCE(cond, fmt...) do { \ +#define WARN(cond, fmt...) do { \ if (unlikely(cond)) { \ - static bool _warned = false; \ - if (!_warned) { \ - fprintf(stderr, "WARNING: "); \ - fprintf(stderr, fmt); \ - _warned = true; \ - } \ + mesa_logw("iris: " fmt); \ } \ } while (0) @@ -2083,7 +2079,7 @@ iris_bo_export_gem_handle_for_device(struct iris_bo *b */ struct iris_bufmgr *bufmgr = bo->bufmgr; int ret = os_same_file_description(drm_fd, bufmgr->fd); - WARN_ONCE(ret < 0, + WARN(ret < 0, "Kernel has no file descriptor comparison support: %s\n", strerror(errno)); if (ret == 0) { --- src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c.orig 2024-03-13 23:59:54 UTC +++ src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c @@ -9,6 +9,7 @@ #include "amdgpu_cs.h" +#include "util/log.h" #include "util/os_file.h" #include "util/os_misc.h" #include "util/u_cpu_detect.h" @@ -334,15 +335,10 @@ are_file_descriptions_equal(int fd1, int fd2) return true; if (r < 0) { - static bool logged; - - if (!logged) { - os_log_message("amdgpu: os_same_file_description couldn't " + mesa_logw ("amdgpu: os_same_file_description couldn't " "determine if two DRM fds reference the same " "file description.\n" "If they do, bad things may happen!\n"); - logged = true; - } } return false; } --- src/gallium/winsys/virgl/drm/virgl_drm_winsys.c.orig 2024-03-13 23:59:54 UTC +++ src/gallium/winsys/virgl/drm/virgl_drm_winsys.c @@ -28,6 +28,7 @@ #include #include +#include "util/log.h" #include "util/os_mman.h" #include "util/os_file.h" #include "util/os_time.h" @@ -1347,15 +1348,10 @@ equal_fd(const void *key1, const void *key2) if (ret == 0) { return true; } else if (ret < 0) { - static bool logged; - - if (!logged) { - _debug_printf("virgl: os_same_file_description couldn't " + mesa_logw ("virgl: os_same_file_description couldn't " "determine if two DRM fds reference the same " "file description.\n" "If they do, bad things may happen!\n"); - logged = true; - } } return false; --- src/util/log.c.orig 2024-03-13 23:59:54 UTC +++ src/util/log.c @@ -81,7 +81,8 @@ mesa_log_init_once(void) #if DETECT_OS_ANDROID mesa_log_control |= MESA_LOG_CONTROL_ANDROID; #else - mesa_log_control |= MESA_LOG_CONTROL_FILE; + /* stderr from Xorg or greeter (like SDDM) may not be visible */ + mesa_log_control |= MESA_LOG_CONTROL_SYSLOG; #endif #if DETECT_OS_WINDOWS