← Documents Documentation/gpu/amdgpu/display/index.rst GitHub 원문 ↗

Linux 6.18.37 · GPU

drm/amd/display - Display Core (DC)

DC/DM 구조, validation policy와 Display Core 하위 문서 8개의 전문 번역입니다.

Source pathDocumentation/gpu/amdgpu/display/index.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

index.rst:1-97

AMDGPU Display Core 문서군의 시작 페이지입니다. DC/DM 책임 분리, patchset validation, 수동·자동 test matrix, display scanout과 여덟 하위 문서의 탐색 경로를 전문 번역했습니다.

이 페이지의 네 역할
역할핵심 내용
Architecture entryOS-agnostic DC와 Linux-specific DM 분리
Quality policyDC Patches for <DATE> series의 compile, IGT, bisect와 feedback
Validation inventoryManual 9개, automated 3개, test environment 4개
Documentation hubDisplay Core 하위 RST 8개 연결

Architecture와 운영 절차, navigation을 함께 제공합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

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

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

Display Core와 Display Manager

1-15

AMD display engine code 일부는 여러 operating system이 공유합니다. 그래서 Display Core driver는 OS-agnostic한 Display Core(DC)와 Linux/DRM 의존적인 Display Manager(DM)의 두 부분으로 나뉩니다.

DC와 DM의 책임 분리
계층운영체제 의존성주요 책임대표 위치
Display Core (DC)OS-agnosticHardware programming, resource management와 DCN configurationdrivers/gpu/drm/amd/display/dc
Display Manager (DM)OS-dependentAMDGPU base driver와 DRM/KMS hook, state/event mappingdisplay/amdgpu_dm/

문제를 조사할 때 hardware policy와 Linux integration의 ownership을 먼저 나눕니다.

Linux display request의 계층 이동
Userspace compositor가 DRM/KMS atomic state 요청Display Manager가 Linux object와 event를 해석Display Core가 OS-independent resource configuration 계산ASIC별 hardware block programmingDM이 interrupt와 completion을 DRM/KMS에 전달

두 계층은 분리되어 있지만 하나의 display pipeline을 함께 구성합니다.

.. _amdgpu-display-core:

===================================
drm/amd/display - Display Core (DC)
===================================

AMD display engine is partially shared with other operating systems; for this
reason, our Display Core Driver is divided into two pieces:

#. **Display Core (DC)** contains the OS-agnostic components. Things like
   hardware programming and resource management are handled here.
#. **Display Manager (DM)** contains the OS-dependent components. Hooks to the
   amdgpu base driver and DRM are implemented here. For example, you can check
   display/amdgpu_dm/ folder.

DC patchset의 validation gate

16-46

여러 OS에서 같은 code base를 유지하려면 repository 사이의 synchronization과 폭넓은 validation이 필요합니다. DC는 여러 출처의 code를 중앙화하는 tree를 유지하고 Internal Linux CI farm의 integration test와 다양한 AMD GPU/APU의 IGT test를 실행합니다. 대상은 주로 최근 dGPU와 APU입니다.

Compilation CI는 DCN enabled와 disabled 구성을 모두 사용하며 ARM64/32, PPC64/32, x86_64/32를 확인합니다. 이는 feature code가 특정 architecture, word size 또는 DCN configuration만 우연히 통과하는 것을 막기 위한 gate입니다.

DC compilation matrix
Architecture familyBitnessDCN configuration
ARM64 / 32Enabled / disabled
PowerPC64 / 32Enabled / disabled
x8664 / 32Enabled / disabled

원문이 명시한 architecture와 DCN configuration 조합입니다.

새 feature 또는 patch는 최신 `amd-staging-drm-next <https://gitlab.freedesktop.org/agd5f/linux>`를 기준으로 만들고 `DC Patches for <DATE>` prefix의 patchset으로 묶습니다. 모든 patch는 하나의 검증된 DC version 아래에서 다룹니다.

DC patchset validation
최신 amd-staging-drm-next에서 patchset 구성Cover letter와 title에 DC Patches for <DATE> prefix 사용각 patch compile 확인Series 전체를 여러 hardware의 IGT set으로 검증Validation team용 branch 준비Failure 발생 시 series bisect로 bad patch 식별빠르게 수정할 수 없으면 bad patch drop며칠간 community feedback을 기다린 뒤 merge 판단

Series 전체와 patch 하나하나가 검증 대상입니다.

Validation failure의 결정
상태조치
재현 가능하고 수정이 단순함원인 patch를 고쳐 series를 다시 검증
수정이 쉽지 않음Bad patch를 patchset에서 drop
모든 gate 통과Community feedback 기간 후 merge
어떤 validation이라도 실패Merge 금지

검증에 실패한 change는 그대로 merge하지 않습니다.

------------------
DC Code validation
------------------

Maintaining the same code base across multiple OSes requires a lot of
synchronization effort between repositories and exhaustive validation. In the
DC case, we maintain a tree to centralize code from different parts. The shared
repository has integration tests with our Internal Linux CI farm, and we run a
comprehensive set of IGT tests in various AMD GPUs/APUs (mostly recent dGPUs
and APUs). Our CI also checks ARM64/32, PPC64/32, and x86_64/32 compilation
with DCN enabled and disabled.

When we upstream a new feature or some patches, we pack them in a patchset with
the prefix **DC Patches for <DATE>**, which is created based on the latest
`amd-staging-drm-next <https://gitlab.freedesktop.org/agd5f/linux>`_. All of
those patches are under a DC version tested as follows:

* Ensure that every patch compiles and the entire series pass our set of IGT
  test in different hardware.
* Prepare a branch with those patches for our validation team. If there is an
  error, a developer will debug as fast as possible; usually, a simple bisect
  in the series is enough to point to a bad change, and two possible actions
  emerge: fix the issue or drop the patch. If it is not an easy fix, the bad
  patch is dropped.
* Finally, developers wait a few days for community feedback before we merge
  the series.

It is good to stress that the test phase is something that we take extremely
seriously, and we never merge anything that fails our validation. Follows an
overview of our test set:

수동·자동 test와 실행 환경

47-71

DC team은 validation에 실패한 change를 merge하지 않는다고 명시합니다. 수동 test는 connector event, 여러 display topology, power transition과 display feature를 실제 UI 및 playback scenario에서 확인합니다.

Manual display test
번호검증 항목
1DP와 HDMI에서 multiple hotplug
2UI를 통한 multiple display configuration change stress test
3VRR behavior
4PSR
5Video playback 중 MPO
6동시에 연결된 세 개 이상의 display
7Suspend/resume
8FPO
9MST

원문 9개 수동 검증 항목입니다.

Automated validation
항목범위
IGT farmDCN과 DCE를 지원하는 GPU 및 APU
Native compilationLTS distribution의 최신 GCC와 Clang
Cross-compilationPowerPC 64/32, ARM 64/32, x86 32

Hardware farm과 compiler matrix가 수동 test를 보완합니다.

CI와 manual test 환경
요소사용 기준
DistributionLatest Ubuntu LTS
UserspaceDistribution 공식 package manager가 제공하는 fully updated open-source component
IGTLatest upstream code
Desktop수동 test 대부분은 GNOME, 일부 KDE

재현 환경을 단순화하기 위한 공통 baseline입니다.

Test team 담당자는 patchset cover letter에 항상 test report를 reply합니다. 따라서 merge 판단에는 code review뿐 아니라 해당 report의 hardware와 test 결과도 포함됩니다.

#. Manual test
    * Multiple Hotplugs with DP and HDMI.
    * Stress test with multiple display configuration changes via the user interface.
    * Validate VRR behaviour.
    * Check PSR.
    * Validate MPO when playing video.
    * Test more than two displays connected at the same time.
    * Check suspend/resume.
    * Validate FPO.
    * Check MST.
#. Automated test
    * IGT tests in a farm with GPUs and APUs that support DCN and DCE.
    * Compilation validation with the latest GCC and Clang from LTS distro.
    * Cross-compilation for PowerPC 64/32, ARM 64/32, and x86 32.

In terms of test setup for CI and manual tests, we usually use:

#. The latest Ubuntu LTS.
#. In terms of userspace, we only use fully updated open-source components
   provided by the distribution official package manager.
#. Regarding IGT, we use the latest code from the upstream.
#. Most of the manual tests are conducted in the GNome but we also use KDE.

Notice that someone from our test team will always reply to the cover letter
with the test report.

Display pipe와 scanout

72-86

Display pipe는 GPU memory에 rendering된 frame을 display로 scanout하는 경로입니다. GPU memory는 문맥에 따라 VRAM 또는 FrameBuffer라고도 부릅니다.

Display pipe의 세 기본 단계
GPU memory에서 frame 정보와 pixel data 읽기Scaling, color, blending, timing 등 필요한 transformation 수행Pixel data를 connector와 link를 통해 sink device로 전송

세부 block은 하위 DCN 문서에서 확장됩니다.

Scanout 용어
용어이 문서에서의 의미
VRAM / FrameBufferRendering된 frame data가 있는 GPU memory 영역
Display pipeMemory fetch부터 transformation과 output까지의 hardware path
ScanoutFrame을 memory에서 읽어 display timing에 맞춰 내보내는 과정
Sink devicePixel stream을 수신하는 monitor, panel 또는 display endpoint

같은 경로를 설명할 때 자주 섞이는 용어를 구분합니다.


--------------
DC Information
--------------

The display pipe is responsible for "scanning out" a rendered frame from the
GPU memory (also called VRAM, FrameBuffer, etc.) to a display. In other words,
it would:

#. Read frame information from memory;
#. Perform required transformation;
#. Send pixel data to sink devices.

If you want to learn more about our driver details, take a look at the below
table of content:

Display Core 하위 문서 탐색

87-97

Toctree는 Display Core 문서를 다음 여덟 항목 순서로 연결합니다. RST file 이름과 순서는 navigation 및 link audit를 위해 그대로 보존합니다.

AMDGPU Display Core toctree
순서RST path주제
1display-manager.rstDM lifecycle, interrupt, atomic, color와 blend mapping
2dcn-overview.rstDCN architecture, data flow, pipe split와 global sync
3dcn-blocks.rstDCHUBBUB, HUBP, DPP, MPC, OPP, DIO kernel-doc
4programming-model-dcn.rstDCN programming model과 resource configuration
5mpo-overview.rstMulti-Plane Overlay와 plane topology
6dc-debug.rstDmesg, debug option, visual confirm와 DTN/firmware trace
7display-contributing.rstIssue, test, refactor, documentation과 userspace 기여
8dc-glossary.rstDisplay Core 약어와 clock 용어

각 하위 문서의 주제를 빠르게 찾는 표입니다.

권장 학습 순서
전체 architecture: dcn-overview -> dcn-blocksLinux integration: display-managerProgramming 세부: programming-model-dcnPlane composition: mpo-overview문제 조사: dc-debug용어 확인: dc-glossary기여 시작: display-contributing

목적에 따라 toctree를 순서대로 읽지 않아도 됩니다.


.. toctree::

   display-manager.rst
   dcn-overview.rst
   dcn-blocks.rst
   programming-model-dcn.rst
   mpo-overview.rst
   dc-debug.rst
   display-contributing.rst
   dc-glossary.rst