Daniel Vetter daniel@ffwll.ch 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.