요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
.. _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 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:
#. 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.
--------------
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:
.. 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
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
Display Core와 Display Manager
1-15AMD display engine code 일부는 여러 operating system이 공유합니다. 그래서 Display Core driver는 OS-agnostic한 Display Core(DC)와 Linux/DRM 의존적인 Display Manager(DM)의 두 부분으로 나뉩니다.
문제를 조사할 때 hardware policy와 Linux integration의 ownership을 먼저 나눕니다.
두 계층은 분리되어 있지만 하나의 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입니다.
원문이 명시한 architecture와 DCN configuration 조합입니다.
새 feature 또는 patch는 최신 `amd-staging-drm-next <https://gitlab.freedesktop.org/agd5f/linux>`를 기준으로 만들고 `DC Patches for <DATE>` prefix의 patchset으로 묶습니다. 모든 patch는 하나의 검증된 DC version 아래에서 다룹니다.
Series 전체와 patch 하나하나가 검증 대상입니다.
검증에 실패한 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-71DC team은 validation에 실패한 change를 merge하지 않는다고 명시합니다. 수동 test는 connector event, 여러 display topology, power transition과 display feature를 실제 UI 및 playback scenario에서 확인합니다.
원문 9개 수동 검증 항목입니다.
Hardware farm과 compiler matrix가 수동 test를 보완합니다.
재현 환경을 단순화하기 위한 공통 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-86Display pipe는 GPU memory에 rendering된 frame을 display로 scanout하는 경로입니다. GPU memory는 문맥에 따라 VRAM 또는 FrameBuffer라고도 부릅니다.
세부 block은 하위 DCN 문서에서 확장됩니다.
같은 경로를 설명할 때 자주 섞이는 용어를 구분합니다.
--------------
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:
요약·해설
index.rst:1-97AMDGPU Display Core 문서군의 시작 페이지입니다. DC/DM 책임 분리, patchset validation, 수동·자동 test matrix, display scanout과 여덟 하위 문서의 탐색 경로를 전문 번역했습니다.
Architecture와 운영 절차, navigation을 함께 제공합니다.