libdrm 및 GPU 장치 드라이버에 대한 질문

libdrm 및 GPU 장치 드라이버에 대한 질문

기사OpenGL을 사용한 3D 렌더링과 관련된 단계를 요약합니다.

  1. 그리기에 "OpenGL"을 사용하여 프로그램이 시작됩니다.
  2. "Mesa" 라이브러리는 OpenGL API를 구현합니다. 카드별 드라이버를 사용하여 API를 하드웨어별 형식으로 변환합니다. 드라이버가 내부적으로 Gallium을 사용하는 경우 OpenGL API를 공통 중간 표현 TGSI로 변환하는 공유 구성 요소가 있습니다. API는 Gallium을 통해 전달되며 모든 장치별 드라이버는 TGSI에서 하드웨어 명령으로 변환됩니다.
  3. libdrm은 특수 비밀 카드별 ioctl을 사용하여 Linux 커널과 통신합니다.
  4. Linux 커널에는 카드에 메모리를 할당할 수 있는 특별한 권한이 있습니다.
  5. Mesa 수준으로 돌아가서 Mesa는 DRI2를 사용하여 Xorg와 통신하여 버퍼 롤오버 및 창 위치와 같은 동기화를 보장합니다.

3단계가 이해가 안가네요. 2단계에서는 커널 공간의 GPU 장치 드라이버가 "하드웨어 명령"을 생성합니다. 그런 다음 이러한 하드웨어 명령이 사용자 공간의 libdrm에 제공됩니까? ! 나는 장치 드라이버가 GPU 자체와 직접 상호 작용한다고 생각합니다. 여기서 libdrm의 역할은 무엇입니까?

관련 정보