index.rst 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. .. _amdgpu-display-core:
  2. ===================================
  3. drm/amd/display - Display Core (DC)
  4. ===================================
  5. AMD display engine is partially shared with other operating systems; for this
  6. reason, our Display Core Driver is divided into two pieces:
  7. #. **Display Core (DC)** contains the OS-agnostic components. Things like
  8. hardware programming and resource management are handled here.
  9. #. **Display Manager (DM)** contains the OS-dependent components. Hooks to the
  10. amdgpu base driver and DRM are implemented here. For example, you can check
  11. display/amdgpu_dm/ folder.
  12. ------------------
  13. DC Code validation
  14. ------------------
  15. Maintaining the same code base across multiple OSes requires a lot of
  16. synchronization effort between repositories and exhaustive validation. In the
  17. DC case, we maintain a tree to centralize code from different parts. The shared
  18. repository has integration tests with our Internal Linux CI farm, and we run a
  19. comprehensive set of IGT tests in various AMD GPUs/APUs (mostly recent dGPUs
  20. and APUs). Our CI also checks ARM64/32, PPC64/32, and x86_64/32 compilation
  21. with DCN enabled and disabled.
  22. When we upstream a new feature or some patches, we pack them in a patchset with
  23. the prefix **DC Patches for <DATE>**, which is created based on the latest
  24. `amd-staging-drm-next <https://gitlab.freedesktop.org/agd5f/linux>`_. All of
  25. those patches are under a DC version tested as follows:
  26. * Ensure that every patch compiles and the entire series pass our set of IGT
  27. test in different hardware.
  28. * Prepare a branch with those patches for our validation team. If there is an
  29. error, a developer will debug as fast as possible; usually, a simple bisect
  30. in the series is enough to point to a bad change, and two possible actions
  31. emerge: fix the issue or drop the patch. If it is not an easy fix, the bad
  32. patch is dropped.
  33. * Finally, developers wait a few days for community feedback before we merge
  34. the series.
  35. It is good to stress that the test phase is something that we take extremely
  36. seriously, and we never merge anything that fails our validation. Follows an
  37. overview of our test set:
  38. #. Manual test
  39. * Multiple Hotplugs with DP and HDMI.
  40. * Stress test with multiple display configuration changes via the user interface.
  41. * Validate VRR behaviour.
  42. * Check PSR.
  43. * Validate MPO when playing video.
  44. * Test more than two displays connected at the same time.
  45. * Check suspend/resume.
  46. * Validate FPO.
  47. * Check MST.
  48. #. Automated test
  49. * IGT tests in a farm with GPUs and APUs that support DCN and DCE.
  50. * Compilation validation with the latest GCC and Clang from LTS distro.
  51. * Cross-compilation for PowerPC 64/32, ARM 64/32, and x86 32.
  52. In terms of test setup for CI and manual tests, we usually use:
  53. #. The latest Ubuntu LTS.
  54. #. In terms of userspace, we only use fully updated open-source components
  55. provided by the distribution official package manager.
  56. #. Regarding IGT, we use the latest code from the upstream.
  57. #. Most of the manual tests are conducted in the GNome but we also use KDE.
  58. Notice that someone from our test team will always reply to the cover letter
  59. with the test report.
  60. --------------
  61. DC Information
  62. --------------
  63. The display pipe is responsible for "scanning out" a rendered frame from the
  64. GPU memory (also called VRAM, FrameBuffer, etc.) to a display. In other words,
  65. it would:
  66. #. Read frame information from memory;
  67. #. Perform required transformation;
  68. #. Send pixel data to sink devices.
  69. If you want to learn more about our driver details, take a look at the below
  70. table of content:
  71. .. toctree::
  72. display-manager.rst
  73. dcn-overview.rst
  74. dcn-blocks.rst
  75. mpo-overview.rst
  76. dc-debug.rst
  77. display-contributing.rst
  78. dc-glossary.rst