Hi, On 21 July 2017 at 15:18, Pekka Paalanen <[email protected]> wrote: > On Tue, 18 Jul 2017 14:14:33 +0100 > Daniel Stone <[email protected]> wrote: >> @@ -1517,10 +1518,20 @@ drm_output_render(struct drm_output_state *state, >> pixman_region32_t *damage) >> if (scanout_state->fb) >> return; >> >> - if (b->use_pixman) >> + if (!pixman_region32_not_empty(damage) && >> + scanout_plane->state_cur->fb && >> + (scanout_plane->state_cur->fb->type == BUFFER_GBM_SURFACE || >> + scanout_plane->state_cur->fb->type == BUFFER_PIXMAN_DUMB) && >> + scanout_plane->state_cur->fb->width == >> + output->base.current_mode->width && >> + scanout_plane->state_cur->fb->height == >> + output->base.current_mode->height) { >> + fb = drm_fb_ref(scanout_plane->state_cur->fb); >> + } else if (b->use_pixman) { >> fb = drm_output_render_pixman(state, damage); >> - else >> + } else { >> fb = drm_output_render_gl(state, damage); >> + } >> >> if (!fb) { >> drm_plane_state_put_back(scanout_state); > > is there a reason to check the buffer type at all? You want to be sure > the previous buffer came from the renderer? But if there is no damage > and state_cur has a BUFFER_CLIENT, is there any harm in re-using that? > OTOH, if there is no damage, one would assume the BUFFER_CLIENT would > have been kept promoted to scanout... > > Shrug? :-)
I was mainly thinking of the case where we transition from planes enabled - with a client buffer promoted - to planes disabled. In that case, we need to repaint, but wasn't sure if we'd have damage or not by that point, since assign_planes is never run. Cheers, Daniel _______________________________________________ wayland-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/wayland-devel
