Message ID | 1490009093-28083-1-git-send-email-kraxel@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 20 March 2017 at 11:24, Gerd Hoffmann <kraxel@redhat.com> wrote: > Use "unsigned int" instead of GLenum and GLuint, so we don't depend on > these types from opengl headers. Drop all CONFIG_OPENGL #ifdefs from > console.h > > Reported-by: Peter Maydell <peter.maydell@linaro.org> > Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> This isn't sufficient to fix the compile failure on OpenBSD, because there are still files which #include <epoxy/gl.h> but which aren't being compiled with OPENGL_CFLAGS: hw/lm32/milkymist.c (via milkymist-hw.h) ui/sdl2-gl.c ui/egl-context.c (via ui/egl-context.h and ui/egl-helpers.h) ui/gtk.c (via ui/gtk.h and ui/egl-helpers.h) just to take the first few I found via grep. (The OpenBSD build fails on egl-context.o.) Rather than trying to figure out exactly which .c files need to have the OPENGL_CFLAGS applied to them, I think it would be better if we just put them into the standard QEMU_CFLAGS that we use for building all objects, the same way we do for other library CFLAGS requirements. Or is there a reason we can't do that with OpenGL? thanks -- PMM
Hi, > This isn't sufficient to fix the compile failure on OpenBSD, > because there are still files which #include <epoxy/gl.h> but > which aren't being compiled with OPENGL_CFLAGS: > > hw/lm32/milkymist.c (via milkymist-hw.h) > ui/sdl2-gl.c > ui/egl-context.c (via ui/egl-context.h and ui/egl-helpers.h) > ui/gtk.c (via ui/gtk.h and ui/egl-helpers.h) > > just to take the first few I found via grep. (The OpenBSD > build fails on egl-context.o.) > > Rather than trying to figure out exactly which .c files need > to have the OPENGL_CFLAGS applied to them, I think it would > be better if we just put them into the standard QEMU_CFLAGS > that we use for building all objects, the same way we do > for other library CFLAGS requirements. Or is there a reason > we can't do that with OpenGL? I don't want do this for OPENGL_LIBS, so if we modularize UIs some day only the ui modules with opengl support depend on opengl libs, and I somehow dislike the asymmetry between OPENGL_LIBS and QEMU_CFLAGS. But other than that there are no reasons I'm aware of why this shouldn't work. Patch follows in a moment. cheers, Gerd
diff --git a/include/ui/console.h b/include/ui/console.h index d759338..2f4aae2 100644 --- a/include/ui/console.h +++ b/include/ui/console.h @@ -9,10 +9,6 @@ #include "qemu/error-report.h" #include "qapi/error.h" -#ifdef CONFIG_OPENGL -# include <epoxy/gl.h> -#endif - /* keyboard/mouse support */ #define MOUSE_EVENT_LBUTTON 0x01 @@ -136,11 +132,9 @@ struct DisplaySurface { pixman_format_code_t format; pixman_image_t *image; uint8_t flags; -#ifdef CONFIG_OPENGL - GLenum glformat; - GLenum gltype; - GLuint texture; -#endif + unsigned int glformat; + unsigned int gltype; + unsigned int texture; }; typedef struct QemuUIInfo { @@ -410,7 +404,6 @@ DisplaySurface *qemu_console_surface(QemuConsole *con); /* console-gl.c */ typedef struct ConsoleGLState ConsoleGLState; -#ifdef CONFIG_OPENGL ConsoleGLState *console_gl_init_context(void); void console_gl_fini_context(ConsoleGLState *gls); bool console_gl_check_format(DisplayChangeListener *dcl, @@ -427,7 +420,6 @@ void surface_gl_destroy_texture(ConsoleGLState *gls, void surface_gl_setup_viewport(ConsoleGLState *gls, DisplaySurface *surface, int ww, int wh); -#endif /* sdl.c */ #ifdef CONFIG_SDL diff --git a/include/ui/sdl2.h b/include/ui/sdl2.h index aaf226c..af86dfe 100644 --- a/include/ui/sdl2.h +++ b/include/ui/sdl2.h @@ -7,6 +7,10 @@ #include <SDL.h> #include <SDL_syswm.h> +#ifdef CONFIG_OPENGL +# include <SDL_opengl.h> +#endif + struct sdl2_console { DisplayChangeListener dcl; DisplaySurface *surface; diff --git a/ui/sdl2-gl.c b/ui/sdl2-gl.c index 1cd77e2..5bccdc9 100644 --- a/ui/sdl2-gl.c +++ b/ui/sdl2-gl.c @@ -29,10 +29,10 @@ #include "qemu-common.h" #include "ui/console.h" #include "ui/input.h" -#include "ui/sdl2.h" #include "sysemu/sysemu.h" #include <epoxy/gl.h> +#include "ui/sdl2.h" static void sdl2_set_scanout_mode(struct sdl2_console *scon, bool scanout) {
Use "unsigned int" instead of GLenum and GLuint, so we don't depend on these types from opengl headers. Drop all CONFIG_OPENGL #ifdefs from console.h Reported-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> --- include/ui/console.h | 14 +++----------- include/ui/sdl2.h | 4 ++++ ui/sdl2-gl.c | 2 +- 3 files changed, 8 insertions(+), 12 deletions(-)