Back to home page

OSCL-LXR

 
 

    


0001 ===============================================================================
0002 TODOs
0003 ===============================================================================
0004 
0005 1. Base this on drm-next - WIP
0006 
0007 
0008 2. Cleanup commit history
0009 
0010 
0011 3. WIP - Drop page flip helper and use DRM's version
0012 
0013 
0014 4. DONE - Flatten all DC objects
0015     * dc_stream/core_stream/stream should just be dc_stream
0016     * Same for other DC objects
0017 
0018     "Is there any major reason to keep all those abstractions?
0019 
0020     Could you collapse everything into struct dc_stream?
0021 
0022     I haven't looked recently but I didn't get the impression there was a
0023     lot of design around what was public/protected, more whatever needed
0024     to be used by someone else was in public."
0025     ~ Dave Airlie
0026 
0027 
0028 5. DONE - Rename DC objects to align more with DRM
0029     * dc_surface -> dc_plane_state
0030     * dc_stream -> dc_stream_state
0031 
0032 
0033 6. DONE - Per-plane and per-stream validation
0034 
0035 
0036 7. WIP - Per-plane and per-stream commit
0037 
0038 
0039 8. WIP - Split pipe_ctx into plane and stream resource structs
0040 
0041 
0042 9. Attach plane and stream reources to state object instead of validate_context
0043 
0044 
0045 10. Remove dc_edid_caps and drm_helpers_parse_edid_caps
0046     * Use drm_display_info instead
0047     * Remove DC's edid quirks and rely on DRM's quirks (add quirks if needed)
0048 
0049     "Making sure you use the sink-specific helper libraries and kernel
0050     subsystems, since there's really no good reason to have 2nd
0051     implementation of those in the kernel. Looks likes that's done for mst
0052     and edid parsing. There's still a bit a midlayer feeling to the edid
0053     parsing side (e.g. dc_edid_caps and dm_helpers_parse_edid_caps, I
0054     think it'd be much better if you convert that over to reading stuff
0055     from drm_display_info and if needed, push stuff into the core). Also,
0056     I can't come up with a good reason why DC needs all this (except to
0057     reimplement half of our edid quirk table, which really isn't a good
0058     idea). Might be good if you put this onto the list of things to fix
0059     long-term, but imo not a blocker. Definitely make sure new stuff
0060     doesn't slip in (i.e. if you start adding edid quirks to DC instead of
0061     the drm core, refactoring to use the core edid stuff was pointless)."
0062     ~ Daniel Vetter
0063 
0064 
0065 11. Remove dc/i2caux. This folder can be somewhat misleading. It's basically an
0066 overy complicated HW programming function for sendind and receiving i2c/aux
0067 commands. We can greatly simplify that and move it into dc/dceXYZ like other
0068 HW blocks.
0069 
0070 12. drm_modeset_lock in MST should no longer be needed in recent kernels
0071     * Adopt appropriate locking scheme
0072 
0073 13. get_modes and best_encoder callbacks look a bit funny. Can probably rip out
0074 a few indirections, and consider removing entirely and using the
0075 drm_atomic_helper_best_encoder default behaviour.
0076 
0077 14. core/dc_debug.c, consider switching to the atomic state debug helpers and
0078 moving all your driver state printing into the various atomic_print_state
0079 callbacks. There's also plans to expose this stuff in a standard way across all
0080 drivers, to make debugging userspace compositors easier across different hw.
0081 
0082 15. Move DP/HDMI dual mode adaptors to drm_dp_dual_mode_helper.c. See
0083 dal_ddc_service_i2c_query_dp_dual_mode_adaptor.
0084 
0085 16. Move to core SCDC helpers (I think those are new since initial DC review).
0086 
0087 17. There's still a pretty massive layer cake around dp aux and DPCD handling,
0088 with like 3 levels of abstraction and using your own structures instead of the
0089 stuff in drm_dp_helper.h. drm_dp_helper.h isn't really great and already has 2
0090 incompatible styles, just means more reasons not to add a third (or well third
0091 one gets to do the cleanup refactor).
0092 
0093 18. There's a pile of sink handling code, both for DP and HDMI where I didn't
0094 immediately recognize the standard. I think long term it'd be best for the drm
0095 subsystem if we try to move as much of that into helpers/core as possible, and
0096 share it with drivers. But that's a very long term goal, and by far not just an
0097 issue with DC - other drivers, especially around DP sink handling, are equally
0098 guilty.
0099 
0100 19. DONE - The DC logger is still a rather sore thing, but I know that the
0101 DRM_DEBUG stuff just isn't up to the challenges either. We need to figure out
0102 something that integrates better with DRM and linux debug printing, while not
0103 being useless with filtering output. dynamic debug printing might be an option.
0104 
0105 20. Use kernel i2c device to program HDMI retimer. Some boards have an HDMI
0106 retimer that we need to program to pass PHY compliance. Currently that's
0107 bypassing the i2c device and goes directly to HW. This should be changed.
0108 
0109 21. Remove vector.c from dc/basics. It's used in DDC code which can probably
0110 be simplified enough to no longer need a vector implementation.