mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2025-12-21 14:30:11 +01:00
gl: fix y-axis origin when map_to_image() for non texture GL surface
We need to fix y-axis origin when map a GL surface to image surface for non-texture GL surface. Test cases: extended-blend-alpha-mask, extended-blend-mask. Although the image outputs is not right, but the image on the first grid (upper-left corner) is correct comparing to image output.
This commit is contained in:
parent
af6e084dd7
commit
a965b0f95f
1 changed files with 7 additions and 1 deletions
|
|
@ -985,6 +985,7 @@ _cairo_gl_surface_map_to_image (void *abstract_surface,
|
|||
unsigned int cpp;
|
||||
cairo_bool_t invert;
|
||||
cairo_status_t status;
|
||||
int y;
|
||||
|
||||
/* Want to use a switch statement here but the compiler gets whiny. */
|
||||
if (surface->base.content == CAIRO_CONTENT_COLOR_ALPHA) {
|
||||
|
|
@ -1065,7 +1066,12 @@ _cairo_gl_surface_map_to_image (void *abstract_surface,
|
|||
glPixelStorei (GL_PACK_ROW_LENGTH, image->stride / cpp);
|
||||
if (invert)
|
||||
glPixelStorei (GL_PACK_INVERT_MESA, 1);
|
||||
glReadPixels (extents->x, extents->y,
|
||||
|
||||
y = extents->y;
|
||||
if (! _cairo_gl_surface_is_texture (surface))
|
||||
y = surface->height - extents->y - extents->height;
|
||||
|
||||
glReadPixels (extents->x, y,
|
||||
extents->width, extents->height,
|
||||
format, type, image->data);
|
||||
if (invert)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue