• Daniel Vetter's avatar
    drm/atomic-helper: nonblocking commit support · 9f2a7950
    Daniel Vetter authored
    Design ideas:
    
    - split up the actual commit into different phases, and have
      completions for each of them. This will be useful for the future
      when we want to interleave phases much more aggressively, for e.g.
      queue depth > 1. For not it's just a minimal optimization compared
      to current common nonblocking implementation patterns from drivers,
      which all stall for the entire commit to complete, including vblank
      waits and cleanups.
    
    - Extract a separate atomic_commit_hw hook since that's the part most
      drivers will need to overwrite, hopefully allowing even more shared
      code.
    
    - Enforce EBUSY seamntics by attaching one of the completions to the
      flip_done vblank event. Side benefit of forcing atomic drivers using
      these helpers to implement event handlign at least semi-correct. I'm
      evil that way ;-)
    
    - Ridiculously modular, as usual.
    
    - The main tracking unit for a commit stays struct drm_atomic_state,
      and the ownership rules for that are unchan...
    9f2a7950
drm_crtc.h 103 KB