include/ui/shader.h and include/ui/surface.h are included by files that do not depend on Epoxy so they shouldn't include epoxy/gl.h. Otherwise, compilations of these files can fail because the path to the directory containing epoxy/gl.h may not be passed to the compiler.
Signed-off-by: Akihiko Odaki <[email protected]> --- include/ui/console.h | 4 ++-- include/ui/shader.h | 2 -- include/ui/surface.h | 5 +---- ui/console-gl.c | 27 ++++++++++++++------------- ui/shader.c | 1 + 5 files changed, 18 insertions(+), 21 deletions(-) diff --git a/include/ui/console.h b/include/ui/console.h index 98feaa58bdd1..9ac1e5b82daa 100644 --- a/include/ui/console.h +++ b/include/ui/console.h @@ -423,8 +423,8 @@ bool console_gl_check_format(DisplayChangeListener *dcl, void surface_gl_create_texture(QemuGLShader *gls, DisplaySurface *surface); bool surface_gl_create_texture_from_fd(DisplaySurface *surface, - int fd, GLuint *texture, - GLuint *mem_obj); + int fd, uint32_t *texture, + uint32_t *mem_obj); void surface_gl_update_texture(QemuGLShader *gls, DisplaySurface *surface, int x, int y, int w, int h); diff --git a/include/ui/shader.h b/include/ui/shader.h index 4c5acb2ce8b2..e82213263c47 100644 --- a/include/ui/shader.h +++ b/include/ui/shader.h @@ -1,8 +1,6 @@ #ifndef QEMU_SHADER_H #define QEMU_SHADER_H -#include <epoxy/gl.h> - typedef struct QemuGLShader QemuGLShader; void qemu_gl_run_texture_blit(QemuGLShader *gls, bool flip); diff --git a/include/ui/surface.h b/include/ui/surface.h index f16f7be8be81..d2542d3ace5f 100644 --- a/include/ui/surface.h +++ b/include/ui/surface.h @@ -8,7 +8,6 @@ #include "ui/qemu-pixman.h" #ifdef CONFIG_OPENGL -# include <epoxy/gl.h> # include "ui/shader.h" #endif @@ -19,9 +18,7 @@ typedef struct DisplaySurface { pixman_image_t *image; uint8_t flags; #ifdef CONFIG_OPENGL - GLenum glformat; - GLenum gltype; - GLuint texture; + uint32_t texture; #endif qemu_pixman_shareable share_handle; uint32_t share_handle_offset; diff --git a/ui/console-gl.c b/ui/console-gl.c index 73be35c1fc78..d4b9017b53de 100644 --- a/ui/console-gl.c +++ b/ui/console-gl.c @@ -25,6 +25,7 @@ * THE SOFTWARE. */ #include "qemu/osdep.h" +#include <epoxy/gl.h> #include "qemu/error-report.h" #include "ui/console.h" #include "ui/shader.h" @@ -66,6 +67,9 @@ bool console_gl_check_format(DisplayChangeListener *dcl, void surface_gl_create_texture(QemuGLShader *gls, DisplaySurface *surface) { + GLenum glformat; + GLenum gltype; + assert(gls); assert(QEMU_IS_ALIGNED(surface_stride(surface), surface_bytes_per_pixel(surface))); @@ -73,7 +77,7 @@ void surface_gl_create_texture(QemuGLShader *gls, return; } - assert(map_format(surface_format(surface), &surface->glformat, &surface->gltype)); + assert(map_format(surface_format(surface), &glformat, &gltype)); glGenTextures(1, &surface->texture); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, surface->texture); @@ -81,16 +85,12 @@ void surface_gl_create_texture(QemuGLShader *gls, surface_stride(surface) / surface_bytes_per_pixel(surface)); if (epoxy_is_desktop_gl()) { glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, - surface_width(surface), - surface_height(surface), - 0, surface->glformat, surface->gltype, - surface_data(surface)); + surface_width(surface), surface_height(surface), 0, + glformat, gltype, surface_data(surface)); } else { - glTexImage2D(GL_TEXTURE_2D, 0, surface->glformat, - surface_width(surface), - surface_height(surface), - 0, surface->glformat, surface->gltype, - surface_data(surface)); + glTexImage2D(GL_TEXTURE_2D, 0, glformat, + surface_width(surface), surface_height(surface), 0, + glformat, gltype, surface_data(surface)); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, GL_ONE); } @@ -150,17 +150,18 @@ void surface_gl_update_texture(QemuGLShader *gls, int x, int y, int w, int h) { uint8_t *data = (void *)surface_data(surface); + GLenum glformat; + GLenum gltype; assert(gls); + assert(map_format(surface_format(surface), &glformat, &gltype)); if (surface->texture) { glBindTexture(GL_TEXTURE_2D, surface->texture); glPixelStorei(GL_UNPACK_ROW_LENGTH_EXT, surface_stride(surface) / surface_bytes_per_pixel(surface)); - glTexSubImage2D(GL_TEXTURE_2D, 0, - x, y, w, h, - surface->glformat, surface->gltype, + glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, w, h, glformat, gltype, data + surface_stride(surface) * y + surface_bytes_per_pixel(surface) * x); } diff --git a/ui/shader.c b/ui/shader.c index ab448c41d4c6..76ee4c32785d 100644 --- a/ui/shader.c +++ b/ui/shader.c @@ -25,6 +25,7 @@ * THE SOFTWARE. */ #include "qemu/osdep.h" +#include <epoxy/gl.h> #include "ui/shader.h" #include "ui/shader/texture-blit-vert.h" -- 2.53.0
