Message ID | 20230313200134.503083-19-marcandre.lureau@redhat.com |
---|---|
State | New |
Headers | show |
Series | [PULL,v2,01/18] ui/dbus: initialize cursor_fb | expand |
marcandre.lureau@redhat.com writes: > From: Marc-André Lureau <marcandre.lureau@redhat.com> > > We can enable EGL later for non-GBM hosts. > > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> > Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> > --- > ui/dbus-listener.c | 10 +++++----- > ui/dbus.c | 12 +++++++++++- > 2 files changed, 16 insertions(+), 6 deletions(-) > > diff --git a/ui/dbus-listener.c b/ui/dbus-listener.c > index 85692f1b27..911acdc529 100644 > --- a/ui/dbus-listener.c > +++ b/ui/dbus-listener.c > @@ -50,7 +50,7 @@ struct _DBusDisplayListener { > > G_DEFINE_TYPE(DBusDisplayListener, dbus_display_listener, G_TYPE_OBJECT) > > -#ifdef CONFIG_OPENGL > +#ifdef CONFIG_GBM > static void dbus_update_gl_cb(GObject *source_object, > GAsyncResult *res, > gpointer user_data) > @@ -239,7 +239,7 @@ static void dbus_refresh(DisplayChangeListener *dcl) > graphic_hw_update(dcl->con); > } > > -#ifdef CONFIG_OPENGL > +#ifdef CONFIG_GBM > static void dbus_gl_gfx_update(DisplayChangeListener *dcl, > int x, int y, int w, int h) > { > @@ -302,7 +302,7 @@ static void dbus_gfx_update(DisplayChangeListener *dcl, > DBUS_DEFAULT_TIMEOUT, NULL, NULL, NULL); > } > > -#ifdef CONFIG_OPENGL > +#ifdef CONFIG_GBM > static void dbus_gl_gfx_switch(DisplayChangeListener *dcl, > struct DisplaySurface *new_surface) > { > @@ -369,7 +369,7 @@ static void dbus_cursor_define(DisplayChangeListener *dcl, > NULL); > } > > -#ifdef CONFIG_OPENGL > +#ifdef CONFIG_GBM > const DisplayChangeListenerOps dbus_gl_dcl_ops = { > .dpy_name = "dbus-gl", > .dpy_gfx_update = dbus_gl_gfx_update, > @@ -417,7 +417,7 @@ dbus_display_listener_constructed(GObject *object) > DBusDisplayListener *ddl = DBUS_DISPLAY_LISTENER(object); > > ddl->dcl.ops = &dbus_dcl_ops; > -#ifdef CONFIG_OPENGL > +#ifdef CONFIG_GBM > if (display_opengl) { > ddl->dcl.ops = &dbus_gl_dcl_ops; > } > diff --git a/ui/dbus.c b/ui/dbus.c > index 904f5a0a6d..0513de9918 100644 > --- a/ui/dbus.c > +++ b/ui/dbus.c > @@ -47,8 +47,10 @@ static DBusDisplay *dbus_display; > static QEMUGLContext dbus_create_context(DisplayGLCtx *dgc, > QEMUGLParams *params) > { > +#ifdef CONFIG_GBM > eglMakeCurrent(qemu_egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE, > qemu_egl_rn_ctx); > +#endif > return qemu_egl_create_context(dgc, params); > } > > @@ -56,7 +58,11 @@ static bool > dbus_is_compatible_dcl(DisplayGLCtx *dgc, > DisplayChangeListener *dcl) > { > - return dcl->ops == &dbus_gl_dcl_ops || dcl->ops == &dbus_console_dcl_ops; > + return > +#ifdef CONFIG_GBM > + dcl->ops == &dbus_gl_dcl_ops || > +#endif > + dcl->ops == &dbus_console_dcl_ops; > } > > static void > @@ -459,7 +465,11 @@ early_dbus_init(DisplayOptions *opts) > DisplayGLMode mode = opts->has_gl ? opts->gl : DISPLAYGL_MODE_OFF; > > if (mode != DISPLAYGL_MODE_OFF) { > +#ifdef CONFIG_OPENGL > egl_init(opts->u.dbus.rendernode, mode, &error_fatal); > +#else > + error_report("dbus: GL rendering is not supported"); > +#endif > } > > type_register(&dbus_vc_type_info); With this patch I get: FAILED: libcommon.fa.p/ui_dbus-listener.c.o cc -m64 -mcx16 -Ilibcommon.fa.p -Iui -I../ui -I/usr/include/pixman-1 \ -I/usr/include/libpng16 -I/usr/include/spice-server \ -I/usr/include/cacard -I/usr/include/nss3 -I/usr/include/nspr4 -I/usrc ../ui/dbus-listener.c: In function ‘dbus_call_update_gl’: ../ui/dbus-listener.c:74:5: error: implicit declaration of function ‘glFlush’; did you mean ‘fflush’? [-Werror=implicit-function-declaration] glFlush(); ^~~~~~~ fflush I don't have libepoxy, only virgl installed. Did we miss something in meson perhaps?
diff --git a/ui/dbus-listener.c b/ui/dbus-listener.c index 85692f1b27..911acdc529 100644 --- a/ui/dbus-listener.c +++ b/ui/dbus-listener.c @@ -50,7 +50,7 @@ struct _DBusDisplayListener { G_DEFINE_TYPE(DBusDisplayListener, dbus_display_listener, G_TYPE_OBJECT) -#ifdef CONFIG_OPENGL +#ifdef CONFIG_GBM static void dbus_update_gl_cb(GObject *source_object, GAsyncResult *res, gpointer user_data) @@ -239,7 +239,7 @@ static void dbus_refresh(DisplayChangeListener *dcl) graphic_hw_update(dcl->con); } -#ifdef CONFIG_OPENGL +#ifdef CONFIG_GBM static void dbus_gl_gfx_update(DisplayChangeListener *dcl, int x, int y, int w, int h) { @@ -302,7 +302,7 @@ static void dbus_gfx_update(DisplayChangeListener *dcl, DBUS_DEFAULT_TIMEOUT, NULL, NULL, NULL); } -#ifdef CONFIG_OPENGL +#ifdef CONFIG_GBM static void dbus_gl_gfx_switch(DisplayChangeListener *dcl, struct DisplaySurface *new_surface) { @@ -369,7 +369,7 @@ static void dbus_cursor_define(DisplayChangeListener *dcl, NULL); } -#ifdef CONFIG_OPENGL +#ifdef CONFIG_GBM const DisplayChangeListenerOps dbus_gl_dcl_ops = { .dpy_name = "dbus-gl", .dpy_gfx_update = dbus_gl_gfx_update, @@ -417,7 +417,7 @@ dbus_display_listener_constructed(GObject *object) DBusDisplayListener *ddl = DBUS_DISPLAY_LISTENER(object); ddl->dcl.ops = &dbus_dcl_ops; -#ifdef CONFIG_OPENGL +#ifdef CONFIG_GBM if (display_opengl) { ddl->dcl.ops = &dbus_gl_dcl_ops; } diff --git a/ui/dbus.c b/ui/dbus.c index 904f5a0a6d..0513de9918 100644 --- a/ui/dbus.c +++ b/ui/dbus.c @@ -47,8 +47,10 @@ static DBusDisplay *dbus_display; static QEMUGLContext dbus_create_context(DisplayGLCtx *dgc, QEMUGLParams *params) { +#ifdef CONFIG_GBM eglMakeCurrent(qemu_egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE, qemu_egl_rn_ctx); +#endif return qemu_egl_create_context(dgc, params); } @@ -56,7 +58,11 @@ static bool dbus_is_compatible_dcl(DisplayGLCtx *dgc, DisplayChangeListener *dcl) { - return dcl->ops == &dbus_gl_dcl_ops || dcl->ops == &dbus_console_dcl_ops; + return +#ifdef CONFIG_GBM + dcl->ops == &dbus_gl_dcl_ops || +#endif + dcl->ops == &dbus_console_dcl_ops; } static void @@ -459,7 +465,11 @@ early_dbus_init(DisplayOptions *opts) DisplayGLMode mode = opts->has_gl ? opts->gl : DISPLAYGL_MODE_OFF; if (mode != DISPLAYGL_MODE_OFF) { +#ifdef CONFIG_OPENGL egl_init(opts->u.dbus.rendernode, mode, &error_fatal); +#else + error_report("dbus: GL rendering is not supported"); +#endif } type_register(&dbus_vc_type_info);