diff --git a/glamor/glamor_egl.c b/glamor/glamor_egl.c index c1142e34d..8ccca1402 100644 --- a/glamor/glamor_egl.c +++ b/glamor/glamor_egl.c @@ -46,6 +46,7 @@ #include "glamor.h" #include "glamor_priv.h" +#include "glamor_glx_provider.h" #include "dri3.h" struct glamor_egl_screen_private { @@ -886,6 +887,9 @@ glamor_egl_screen_init(ScreenPtr screen, struct glamor_context *glamor_ctx) glamor_egl_get_screen_private(scrn); #ifdef DRI3 glamor_screen_private *glamor_priv = glamor_get_screen_private(screen); +#endif +#ifdef GLXEXT + static Bool vendor_initialized = FALSE; #endif const char *gbm_backend_name; @@ -927,6 +931,13 @@ glamor_egl_screen_init(ScreenPtr screen, struct glamor_context *glamor_ctx) } } #endif +#ifdef GLXEXT + if (!vendor_initialized) { + GlxPushProvider(&glamor_provider); + xorgGlxCreateVendor(); + vendor_initialized = TRUE; + } +#endif } static void glamor_egl_cleanup(struct glamor_egl_screen_private *glamor_egl) diff --git a/hw/xfree86/glamor_egl/meson.build b/hw/xfree86/glamor_egl/meson.build index 7eae05812..dd1cafcd9 100644 --- a/hw/xfree86/glamor_egl/meson.build +++ b/hw/xfree86/glamor_egl/meson.build @@ -15,7 +15,7 @@ shared_module( dependency('libdrm', version: '>= 2.4.46'), gbm_dep, ], - link_with: glamor, + link_with: [glamor, libxserver_glx], install: true, install_dir: module_dir,