프레임 버퍼를 사용한 커널 모드 설정?

프레임 버퍼를 사용한 커널 모드 설정?

KMS를 사용하면 그래픽 드라이버가 커널로 이동됩니다. 프레임버퍼는 이미 커널에 있기 때문에 이것이 프레임버퍼 동작에 영향을 미칠 것이라고는 생각하지 않습니다. 그러나 KMS가 fb를 대체하고, fb를 향상시키며, fb가 필요하고, fb 지원을 제거해야 한다는 내용을 읽었습니다. 실수가 있었나요? 제가 찾고 있는 답변은 KMS와 프레임버퍼의 관계에 대한 설명입니다.

저는 tty에서 기본 해상도를 얻기 위해 uvesafb를 사용해 왔습니다. 여기서 나의 목적은 KMS가 있는 시스템에서 이것이 어떻게 작동하는지 이해하는 것입니다. 또한 다음과 같은 내용을 다루는 데 도움이 됩니다. KMS를 사용하면 스크롤 속도가 더 빨라지나요? fbterm 및 fbida와 같은 유틸리티는 동일한 방식으로 작동합니까? 더 안정적인가요?

답변1

첫째, 기본적으로 두 가지 유형의 클래식 프레임버퍼 드라이버가 있습니다.

  • 일반 하드웨어 및 펌웨어 드라이버(예: vga, vesafb/uvesafb, efifb)
  • 하드웨어 관련 드라이버(예: intelfb, rivafb, atyfb)

클래식 프레임 버퍼 드라이버는 모두 기본 모드 설정을 지원하지만 하드웨어 가속에 대한 지원은 거의 제공하지 않습니다.

클래식 X 디자인에서는 이것이 실제로 문제가 되지 않습니다. 2D 가속을 얻으려면 X 서버가 루트로 실행되고 하드웨어에 직접 액세스합니다. 기본적으로 프레임버퍼 드라이버를 완전히 우회합니다. 3D(및 최신 카드의 2D 지원)의 경우 커널 DRM 드라이버를 사용하여 비디오 메모리에 대한 액세스를 조정하고 관리합니다.

이 설정에서 모드 설정은 커널 프레임 버퍼 드라이버와 사용자 공간 X 서버의 두 위치에서 수행됩니다. 이 코드 중복(및 VT 스위치와 같은 드라이버 간의 간헐적인 충돌)은 이상적이지 않습니다.

또한 동일한 하드웨어에 대해 커널에는 프레임 버퍼 드라이버와 DRM 드라이버라는 두 가지 별도의 드라이버가 있습니다. 하드웨어별 프레임 버퍼 드라이버(예: intelfb)를 사용하는 경우 프레임 버퍼 드라이버나 DRM 드라이버 중 하나만 로드할 수 있지만 둘 다 로드할 수는 없습니다.

KMS는 이러한 문제에 대한 솔루션입니다. 그것:

  • 커널 하드웨어 관련 프레임 버퍼 드라이버와 drm 드라이버를 단일 드라이버로 병합했습니다.
  • X 서버, Wayland 컴포지터 또는 기타 애플리케이션에 대한 인터페이스를 제공하여 모드 설정을 제어하므로 사용자 공간 애플리케이션이 하드웨어에 직접 액세스할 필요가 없습니다. (실제로 KMS를 사용하면 X 서버에 더 이상 루트 권한이 필요하지 않습니다.)

몇 가지 흥미로운 참고 사항: 현재 KMS로의 마이그레이션은 실제로 2004년경에 시작되었습니다.콘솔 재설계에 관한 Jon Smirl의 이메일.

보다 구체적인 질문에 답하려면:

  • 속도는 일반적으로 가속되지 않은 일반 드라이버(예: VGA, vesafb) 중 하나보다 나쁘지 않지만 KMS 프레임 버퍼 텍스트 콘솔은 속도보다는 편의성과 긴급 사용을 위해 설계되었으며 콘솔은 완전히 가속되지 않은 일부 드라이버보다 더 나은 성능을 발휘합니다. . 예를 들어, Intel 카드에서는 긴 줄 바꿈이 끔찍합니다.
  • 이전 프레임 버퍼 인터페이스를 사용하도록 설계된 애플리케이션은 KMS 프레임 버퍼에서 계속 실행될 수 있습니다.

답변2

KMS는 사용자 공간이 아닌 커널 공간에서 디스플레이 해상도와 깊이를 설정합니다. 네, 교체했습니다. 프레임버퍼에서 기본 해상도를 활성화합니다.

커널 모드 설정

관련 정보