Swap buffers with damage

This commit is contained in:
emersion 2018-02-09 22:54:14 +01:00
parent 34489dca16
commit bf6d245400
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48
11 changed files with 80 additions and 33 deletions

View file

@ -133,14 +133,13 @@ bool wlr_drm_surface_make_current(struct wlr_drm_surface *surf,
return wlr_egl_make_current(&surf->renderer->egl, surf->egl, buffer_damage);
}
struct gbm_bo *wlr_drm_surface_swap_buffers(struct wlr_drm_surface *surf) {
struct gbm_bo *wlr_drm_surface_swap_buffers(struct wlr_drm_surface *surf,
pixman_region32_t *damage) {
if (surf->front) {
gbm_surface_release_buffer(surf->gbm, surf->front);
}
if (!eglSwapBuffers(surf->renderer->egl.display, surf->egl)) {
wlr_log(L_ERROR, "eglSwapBuffers failed");
}
wlr_egl_swap_buffers(&surf->renderer->egl, surf->egl, damage);
surf->front = surf->back;
surf->back = gbm_surface_lock_front_buffer(surf->gbm);
@ -156,7 +155,7 @@ struct gbm_bo *wlr_drm_surface_get_front(struct wlr_drm_surface *surf) {
glViewport(0, 0, surf->width, surf->height);
glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
return wlr_drm_surface_swap_buffers(surf);
return wlr_drm_surface_swap_buffers(surf, NULL);
}
void wlr_drm_surface_post(struct wlr_drm_surface *surf) {
@ -244,7 +243,7 @@ struct gbm_bo *wlr_drm_surface_mgpu_copy(struct wlr_drm_surface *dest,
glClear(GL_COLOR_BUFFER_BIT);
wlr_render_with_matrix(dest->renderer->wlr_rend, tex, &matrix);
return wlr_drm_surface_swap_buffers(dest);
return wlr_drm_surface_swap_buffers(dest, NULL);
}
bool wlr_drm_plane_surfaces_init(struct wlr_drm_plane *plane, struct wlr_drm_backend *drm,