2016-08-11 6 views
2

이 하드웨어가 실제로 어떻게 작동하는지에 대한 배경은 거의 없지만 이제는 Android 장치 용 Linux 프레임 버퍼 드라이버를 작성하는 방법을 배워야합니다.리눅스 프레임 버퍼 드라이버는 비디오 카드 드라이버입니까?

저는 리눅스 그래픽 스택에 혼란 스럽습니다. 필자가 이해하는 바에 따르면 데스크톱 컴퓨터에서 합성 윈도우 관리자는 DRM과 상호 작용하여 특정 비디오 카드 드라이버에 데이터를 보냅니다. 반면에 어떤 종류의 컨트롤러가 GPU's 메모리에서 DMA을 통해 검색하고 응답 here에서 제안한대로 모니터로 보냅니다. page 29this 책의 다이어그램으로도 프레임 버퍼 드라이버가 실제 그래픽 장치 위에 있기 때문에 특정 비디오 카드 드라이버 (예 : nVidia 드라이버)와 상호 작용해야 할 필요가 있다고 생각했습니다.

하지만 임베디드 장치 용 프레임 버퍼 드라이버를 작성할 때 드라이버가 LCD과 직접 접촉하는 것처럼 비디오 카드 드라이버 아래에있는 것처럼 보입니다.

프레임 버퍼 드라이버는 실제로 비디오 카드 드라이버입니까?

답변

2

는 프레임 버퍼 드라이버는

이 인터페이스를 제공하기 위해 (스크롤 등), 비디오 버퍼

  • 기본 2D 가속 조작에

    1. 모드 설정
    2. 메모리 액세스를위한 인터페이스를 제공한다 프레임 버퍼 드라이버는 일반적으로 하드웨어와 직접 대화한다.

      예를 들어 vesafb 프레임 버퍼 드라이버는 VESA 표준 인터페이스를 사용하여 비디오 하드웨어와 통신합니다. 그러나이 표준은 제한되어 있으므로 하드웨어 가속은 그리 많지 않으며 그리기가 느립니다. 또 다른 예는 intelfb 프레임 버퍼 드라이버입니다. 더 많은 가속 기능을 제공하는 독점적 인 인터페이스를 사용하는 일부 인텔 하드웨어와의 대화가 더 빠릅니다.

      요즘 대부분의 하드웨어에는 KMS 드라이버가 사용됩니다. 그들은 프레임 버퍼를 공개하고 다른 GPU 기능에 액세스 할 수 있습니다. DRM을 통한 OpenGL

      실제로 프레임 버퍼 드라이버와 X11 GPU 드라이버가 실제로 경쟁하고있는 것 같습니다.! KMS 시스템을 사용하는 경우 그래픽 콘솔과 텍스트 콘솔 간의 전환이 즉각적이지만 KMS가 아닌 시스템의 경우 fb 드라이버와 X11 드라이버가 비디오를 다시 초기화해야하므로 느립니다. 콘솔 스위치의 하드웨어. 응답에 대한 대 http://keyj.emphy.de/files/linuxgraphics_en.pdf

  • +0

    , 감사 :

    포괄적 인 이야기 마틴 Fiedler는에 의해 신화화 리눅스 그래픽에 대한 자세한 내용을 확인할 수 있습니다. 따라서 프레임 버퍼 드라이버는 GPU 드라이버가 적고 nVidia 카드조차도 이러한 종류의 드라이버를 사용할 수있는 공통 인터페이스가 있어야합니다. 단, 이러한 카드의 3D 가속 기능은 어두운 비밀입니다. 또한 이것은 LCD가 내장 된 장치에도 적용됩니다. 즉 프레임 버퍼 드라이버가 LCD의 IC를 제어하지 않지만 SoC의 GPU를 제어합니까? –

    +0

    KMS + fb를 제공하는 nvidia 카드 용 리버스 엔지니어링 '누보 (nouveau)'드라이버가 있지만 제한적이고 종종 불안정한 방식으로 3d 가속도가 있습니다.앞에서 언급했듯이 VESA가 가장 눈에 띄는 공용 인터페이스는 거의 없습니다. 임베디드 장치에서는 전용 GPU가 없을 수도 있습니다. LCD 컨트롤러와 직접 대화하는 드라이버의 예는 https://github.com/notro/fbtft/wiki를 참조하십시오. – ypnos