Home | History | Annotate | Line # | Download | only in display
      1 ===============================================================================
      2 TODOs
      3 ===============================================================================
      4 
      5 1. Base this on drm-next - WIP
      6 
      7 
      8 2. Cleanup commit history
      9 
     10 
     11 3. WIP - Drop page flip helper and use DRM's version
     12 
     13 
     14 4. DONE - Flatten all DC objects
     15     * dc_stream/core_stream/stream should just be dc_stream
     16     * Same for other DC objects
     17 
     18     "Is there any major reason to keep all those abstractions?
     19 
     20     Could you collapse everything into struct dc_stream?
     21 
     22     I haven't looked recently but I didn't get the impression there was a
     23     lot of design around what was public/protected, more whatever needed
     24     to be used by someone else was in public."
     25     ~ Dave Airlie
     26 
     27 
     28 5. DONE - Rename DC objects to align more with DRM
     29     * dc_surface -> dc_plane_state
     30     * dc_stream -> dc_stream_state
     31 
     32 
     33 6. DONE - Per-plane and per-stream validation
     34 
     35 
     36 7. WIP - Per-plane and per-stream commit
     37 
     38 
     39 8. WIP - Split pipe_ctx into plane and stream resource structs
     40 
     41 
     42 9. Attach plane and stream reources to state object instead of validate_context
     43 
     44 
     45 10. Remove dc_edid_caps and drm_helpers_parse_edid_caps
     46     * Use drm_display_info instead
     47     * Remove DC's edid quirks and rely on DRM's quirks (add quirks if needed)
     48 
     49     "Making sure you use the sink-specific helper libraries and kernel
     50     subsystems, since there's really no good reason to have 2nd
     51     implementation of those in the kernel. Looks likes that's done for mst
     52     and edid parsing. There's still a bit a midlayer feeling to the edid
     53     parsing side (e.g. dc_edid_caps and dm_helpers_parse_edid_caps, I
     54     think it'd be much better if you convert that over to reading stuff
     55     from drm_display_info and if needed, push stuff into the core). Also,
     56     I can't come up with a good reason why DC needs all this (except to
     57     reimplement half of our edid quirk table, which really isn't a good
     58     idea). Might be good if you put this onto the list of things to fix
     59     long-term, but imo not a blocker. Definitely make sure new stuff
     60     doesn't slip in (i.e. if you start adding edid quirks to DC instead of
     61     the drm core, refactoring to use the core edid stuff was pointless)."
     62     ~ Daniel Vetter
     63 
     64 
     65 11. Remove dc/i2caux. This folder can be somewhat misleading. It's basically an
     66 overy complicated HW programming function for sendind and receiving i2c/aux
     67 commands. We can greatly simplify that and move it into dc/dceXYZ like other
     68 HW blocks.
     69 
     70 12. drm_modeset_lock in MST should no longer be needed in recent kernels
     71     * Adopt appropriate locking scheme
     72 
     73 13. get_modes and best_encoder callbacks look a bit funny. Can probably rip out
     74 a few indirections, and consider removing entirely and using the
     75 drm_atomic_helper_best_encoder default behaviour.
     76 
     77 14. core/dc_debug.c, consider switching to the atomic state debug helpers and
     78 moving all your driver state printing into the various atomic_print_state
     79 callbacks. There's also plans to expose this stuff in a standard way across all
     80 drivers, to make debugging userspace compositors easier across different hw.
     81 
     82 15. Move DP/HDMI dual mode adaptors to drm_dp_dual_mode_helper.c. See
     83 dal_ddc_service_i2c_query_dp_dual_mode_adaptor.
     84 
     85 16. Move to core SCDC helpers (I think those are new since initial DC review).
     86 
     87 17. There's still a pretty massive layer cake around dp aux and DPCD handling,
     88 with like 3 levels of abstraction and using your own structures instead of the
     89 stuff in drm_dp_helper.h. drm_dp_helper.h isn't really great and already has 2
     90 incompatible styles, just means more reasons not to add a third (or well third
     91 one gets to do the cleanup refactor).
     92 
     93 18. There's a pile of sink handling code, both for DP and HDMI where I didn't
     94 immediately recognize the standard. I think long term it'd be best for the drm
     95 subsystem if we try to move as much of that into helpers/core as possible, and
     96 share it with drivers. But that's a very long term goal, and by far not just an
     97 issue with DC - other drivers, especially around DP sink handling, are equally
     98 guilty.
     99 
    100 19. DONE - The DC logger is still a rather sore thing, but I know that the
    101 DRM_DEBUG stuff just isn't up to the challenges either. We need to figure out
    102 something that integrates better with DRM and linux debug printing, while not
    103 being useless with filtering output. dynamic debug printing might be an option.
    104 
    105 20. Use kernel i2c device to program HDMI retimer. Some boards have an HDMI
    106 retimer that we need to program to pass PHY compliance. Currently that's
    107 bypassing the i2c device and goes directly to HW. This should be changed.
    108 
    109 21. Remove vector.c from dc/basics. It's used in DDC code which can probably
    110 be simplified enough to no longer need a vector implementation.
    111