diff options
-rw-r--r-- | libweston/gl-renderer.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/libweston/gl-renderer.c b/libweston/gl-renderer.c index 6fd3641f..8726c340 100644 --- a/libweston/gl-renderer.c +++ b/libweston/gl-renderer.c @@ -1388,6 +1388,18 @@ gl_renderer_read_pixels(struct weston_output *output, return 0; } +static GLenum gl_format_from_internal(GLenum internal_format) +{ + switch (internal_format) { + case GL_R8_EXT: + return GL_RED_EXT; + case GL_RG8_EXT: + return GL_RG_EXT; + default: + return internal_format; + } +} + static void gl_renderer_flush_damage(struct weston_surface *surface) { @@ -1436,7 +1448,7 @@ gl_renderer_flush_damage(struct weston_surface *surface) gs->pitch / gs->hsub[j], buffer->height / gs->vsub[j], 0, - gs->gl_format[j], + gl_format_from_internal(gs->gl_format[j]), gs->gl_pixel_type, data + gs->offset[j]); } @@ -1458,7 +1470,7 @@ gl_renderer_flush_damage(struct weston_surface *surface) gs->pitch / gs->hsub[j], buffer->height / gs->vsub[j], 0, - gs->gl_format[j], + gl_format_from_internal(gs->gl_format[j]), gs->gl_pixel_type, data + gs->offset[j]); } @@ -1486,7 +1498,7 @@ gl_renderer_flush_damage(struct weston_surface *surface) r.y1 / gs->vsub[j], (r.x2 - r.x1) / gs->hsub[j], (r.y2 - r.y1) / gs->vsub[j], - gs->gl_format[j], + gl_format_from_internal(gs->gl_format[j]), gs->gl_pixel_type, data + gs->offset[j]); } |