2014-05-14 3 views
1

내 linux 커널 소스에서 drm radeon 드라이버를보고 있습니다. 디스플레이가 실제로 작동하는 설정/모드에 대한 이해가 어렵습니다. (커널 메시지에서 사용 된 마이크로 코드, 내 화면의 커넥터 및 인코더를 알 수 있습니다.하지만 그래픽 콘텐츠의 출처와 저장 위치에 대한 힌트는 제공되지 않습니다. 그게 옳은 방법으로 이해할 수 있습니다.)Radeon 링 버퍼 사용 및 모드 설정

우선, gfx 카드를 작동시키기 위해 필요한 전체 링 버퍼는 무엇입니까? 아니면 링 버퍼가 일부 3D 그래픽 기능을 설정하겠다고 제안합니까?

링 버퍼는 사용자 모드 설정 유틸리티입니까? 아니면 링 버퍼가 커널 모드 설정에서도 (백그라운드 또는 타겟으로) 작동합니까? 부팅 중에 링 버퍼가 초기화됩니다 (커널 메시지에서 링 주소를 볼 수 있음). 그러나 실제로 어떤 응용 프로그램에서 사용하는지는 알 수 없습니다. X11과 같은 디스플레이 관리자입니까? (예인 경우 디스플레이 관리자가 링 버퍼를 사용하여 일반 디스플레이 또는 Xlib의 어딘가에있는 멋진 3D 기능을 사용하고 있습니까?)

디스플레이 관리자 (예 : X11)가 사용자 모드 설정에서 작동하고 콘솔 프레임 버퍼가 kms로 작동합니까? kms로 radeon 드라이버를 사용하기위한 그래픽 성능 제한이 있습니까?

감사합니다.

답변

0

반지와 관련해서는 기본적으로 그래픽 카드의 상태 변화를 처리하기위한 최적화입니다. 기본적으로 그래픽 카드의 모든 기능은 시리즈 레지스터 (프로그램의 변수와 같은)에 의해 제어됩니다. 이 레지스터는 커널에 의해 직접 쓰여질 수 있지만, 이것은 매우 느립니다. 그래서 그래픽 카드는 고리를 노출시킵니다. 서로 다른 링은 서로 다른 목적을 가지고 있으므로 하나는 그래픽 용이고 다른 하나는 비디오 디코딩 용입니다. 커널은 링 자체를 관리하고 응용 프로그램은 링에 넣기위한 일련의 명령을 제공합니다. 그래픽 카드를 사용하면 다른 버퍼에 명령을 넣은 다음 링으로 돌아 가기 전에 해당 명령을 실행할 링을 가리킬 수 있습니다.

KMS와 관련하여 KMS를 사용하는 경우 커널이 직접 그래픽 카드를 직접 관리합니다. X 나 다른 사용자 공간 응용 프로그램은 사용자가 보는 모드를 적용하지 않습니다. 대신 X는 커널 드라이버에게 모드를 조정하라는 요청을 보내고 커널은 변경을 구현합니다. 시스템이 안전하게 설정되었다고 가정 할 때 커널에 드라이버를 설치하는 데 오버 헤드가 없어야합니다.