diff --git a/local/recipes/libs/mesa/source/src/egl/drivers/dri2/egl_dri2.h b/local/recipes/libs/mesa/source/src/egl/drivers/dri2/egl_dri2.h index 4d6df947d4..b075a65073 100644 --- a/local/recipes/libs/mesa/source/src/egl/drivers/dri2/egl_dri2.h +++ b/local/recipes/libs/mesa/source/src/egl/drivers/dri2/egl_dri2.h @@ -387,6 +387,7 @@ struct dri2_egl_surface { /* surfaceless and device */ struct dri_image *front; + struct dri_image *back; enum pipe_format visual; int out_fence_fd; diff --git a/local/recipes/libs/mesa/source/src/egl/drivers/dri2/platform_redox.c b/local/recipes/libs/mesa/source/src/egl/drivers/dri2/platform_redox.c index 27298c157d..67b8c3543a 100644 --- a/local/recipes/libs/mesa/source/src/egl/drivers/dri2/platform_redox.c +++ b/local/recipes/libs/mesa/source/src/egl/drivers/dri2/platform_redox.c @@ -43,6 +43,11 @@ redox_free_images(struct dri2_egl_surface *dri2_surf) dri2_surf->front = NULL; } + if (dri2_surf->back) { + dri2_destroy_image(dri2_surf->back); + dri2_surf->back = NULL; + } + free(dri2_surf->swrast_device_buffer); dri2_surf->swrast_device_buffer = NULL; } @@ -67,6 +72,13 @@ redox_image_get_buffers(struct dri_drawable *driDrawable, unsigned int format, buffers->front = dri2_surf->front; } + if (buffer_mask & __DRI_IMAGE_BUFFER_BACK) { + if (!dri2_surf->back) + dri2_surf->back = redox_alloc_image(dri2_dpy, dri2_surf); + buffers->image_mask |= __DRI_IMAGE_BUFFER_BACK; + buffers->back = dri2_surf->back; + } + return 1; }