| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- .. _display_todos:
- ==============================
- AMDGPU - Display Contributions
- ==============================
- First of all, if you are here, you probably want to give some technical
- contribution to the display code, and for that, we say thank you :)
- This page summarizes some of the issues you can help with; keep in mind that
- this is a static page, and it is always a good idea to try to reach developers
- in the amdgfx or some of the maintainers. Finally, this page follows the DRM
- way of creating a TODO list; for more information, check
- 'Documentation/gpu/todo.rst'.
- Gitlab issues
- =============
- Users can report issues associated with AMD GPUs at:
- - https://gitlab.freedesktop.org/drm/amd
- Usually, we try to add a proper label to all new tickets to make it easy to
- filter issues. If you can reproduce any problem, you could help by adding more
- information or fixing the issue.
- Level: diverse
- IGT
- ===
- `IGT`_ provides many integration tests that can be run on your GPU. We always
- want to pass a large set of tests to increase the test coverage in our CI. If
- you wish to contribute to the display code but are unsure where a good place
- is, we recommend you run all IGT tests and try to fix any failure you see in
- your hardware. Keep in mind that this failure can be an IGT problem or a kernel
- issue; it is necessary to analyze case-by-case.
- Level: diverse
- .. _IGT: https://gitlab.freedesktop.org/drm/igt-gpu-tools
- Compilation
- ===========
- Fix compilation warnings
- ------------------------
- Enable the W1 or W2 warning level in the kernel compilation and try to fix the
- issues on the display side.
- Level: Starter
- Fix compilation issues when using um architecture
- -------------------------------------------------
- Linux has a User-mode Linux (UML) feature, and the kernel can be compiled to
- the **um** architecture. Compiling for **um** can bring multiple advantages
- from the test perspective. We currently have some compilation issues in this
- area that we need to fix.
- Level: Intermediate
- Code Refactor
- =============
- Add prefix to DC functions to improve the debug with ftrace
- -----------------------------------------------------------
- The Ftrace debug feature (check 'Documentation/trace/ftrace.rst') is a
- fantastic way to check the code path when developers try to make sense of a
- bug. Ftrace provides a filter mechanism that can be useful when the developer
- has some hunch of which part of the code can cause the issue; for this reason,
- if a set of functions has a proper prefix, it becomes easy to create a good
- filter. Additionally, prefixes can improve stack trace readability.
- The DC code does not follow some prefix rules, which makes the Ftrace filter
- more complicated and reduces the readability of the stack trace. If you want
- something simple to start contributing to the display, you can make patches for
- adding prefixes to DC functions. To create those prefixes, use part of the file
- name as a prefix for all functions in the target file. Check the
- 'amdgpu_dm_crtc.c` and `amdgpu_dm_plane.c` for some references. However, we
- strongly advise not to send huge patches changing these prefixes; otherwise, it
- will be hard to review and test, which can generate second thoughts from
- maintainers. Try small steps; in case of double, you can ask before you put in
- effort. We recommend first looking at folders like dceXYZ, dcnXYZ, basics,
- bios, core, clk_mgr, hwss, resource, and irq.
- Level: Starter
- Reduce code duplication
- -----------------------
- AMD has an extensive portfolio with various dGPUs and APUs that amdgpu
- supports. To maintain the new hardware release cadence, DCE/DCN was designed in
- a modular design, making the bring-up for new hardware fast. Over the years,
- amdgpu accumulated some technical debt in the code duplication area. For this
- task, it would be a good idea to find a tool that can discover code duplication
- (including patterns) and use it as guidance to reduce duplications.
- Level: Intermediate
- Make atomic_commit_[check|tail] more readable
- ---------------------------------------------
- The functions responsible for atomic commit and tail are intricate and
- extensive. In particular `amdgpu_dm_atomic_commit_tail` is a long function and
- could benefit from being split into smaller helpers. Improvements in this area
- are more than welcome, but keep in mind that changes in this area will affect
- all ASICs, meaning that refactoring requires a comprehensive verification; in
- other words, this effort can take some time for validation.
- Level: Advanced
- Documentation
- =============
- Expand kernel-doc
- -----------------
- Many DC functions do not have a proper kernel-doc; understanding a function and
- adding documentation is a great way to learn more about the amdgpu driver and
- also leave an outstanding contribution to the entire community.
- Level: Starter
- Beyond AMDGPU
- =============
- AMDGPU provides features that are not yet enabled in the userspace. This
- section highlights some of the coolest display features, which could be enabled
- with the userspace developer helper.
- Enable underlay
- ---------------
- AMD display has this feature called underlay (which you can read more about at
- 'Documentation/gpu/amdgpu/display/mpo-overview.rst') which is intended to
- save power when playing a video. The basic idea is to put a video in the
- underlay plane at the bottom and the desktop in the plane above it with a hole
- in the video area. This feature is enabled in ChromeOS, and from our data
- measurement, it can save power.
- Level: Unknown
- Adaptive Backlight Modulation (ABM)
- -----------------------------------
- ABM is a feature that adjusts the display panel's backlight level and pixel
- values depending on the displayed image. This power-saving feature can be very
- useful when the system starts to run off battery; since this will impact the
- display output fidelity, it would be good if this option was something that
- users could turn on or off.
- Level: Unknown
- HDR & Color management & VRR
- ----------------------------
- HDR, Color Management, and VRR are huge topics and it's hard to put these into
- concise ToDos. If you are interested in this topic, we recommend checking some
- blog posts from the community developers to better understand some of the
- specific challenges and people working on the subject. If anyone wants to work
- on some particular part, we can try to help with some basic guidance. Finally,
- keep in mind that we already have some kernel-doc in place for those areas.
- Level: Unknown
|