• D
    drm/i915: rip out crtc prepare/commit indirection · eae307a5
    Daniel Vetter 提交于
    Just impendance matching with the the crtc helper stuff.
    
    ... and somehow the design of this all ended up in this commit here,
    too ;-)
    
    The big plan is that this new set of crtc display_funcs take full
    responsibility of modeset operations for the entire display output
    pipeline (by calling down into object-specific callbacks and
    functions). The platform-specific callbacks simply know best what the
    proper order is.
    
    This has the drawback that we can't do minimal change-overs any more
    if a modeset just disables one encoder in a cloned configuration
    (because we will only expose a disable/enable action that takes
    down/sets up the entire crtc including all encoders). Imo that's the
    only sane way to do it though:
    - The use-case for this is pretty minimal, even when presenting (at
      least sane people) should use a dual-screen output so that you can
      see your notes on your panel. Clone mode is imo BS.
    - With all the clone mode constrains, shared resources, and special
      ordering requirements (which differ even on the same platform
      sometimes for different outputs) there's no way we'd get this right
      for all cases. Especially since this is a under-used feature.
    - And to top it off: On haswell even dp link re-training requires us
      to take down the entire display pipe - otherwise the chip dies.
    
    So the only sane way is to do a full modeset on every crtc where the
    output config changes in any way.
    
    To support global modeset (i.e. set the configuration for all crtcs at
    once) we'd then add one more function to allocate global and shared
    objects in the best ways (e.g. fdi links, pch plls, ...). The crtc
    functions would then simply use the pre-allocated stuff (and shouldn't
    be able to fail, ever). We could even do all the object pinning in
    there (and maybe try to defragment the global gtt if we fail)!
    Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org>
    Signed-Off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
    eae307a5
intel_display.c 194.8 KB