Daniel Vetter writes: > Hm, I can't see v1 anywhere, but I think it'd be better. You can't store > any transient state related to the current update in struct drm_plane. In > this case the cleanup_buffers from a previous update might overlap (for > nonblocking atomic commits) with the prepare_planes for the next one. > Either we need special cleanup vs. error-path code, or some flag somewhere > in the drm_plane_state. Ok, here's pretty much the previous version, which works now that I've fixed the intel driver. Instead of just comparing the fb's, I'm using the framebuffer_changed function, which seems like a nice bit of documentation if nothing else.