bestsource

그래픽 드라이버 "헬로 월드" 예시?

bestsource 2023. 10. 31. 22:27
반응형

그래픽 드라이버 "헬로 월드" 예시?

디스플레이에서 픽셀을 렌더링하는 GPU 드라이버를 만드는 데 필요한 단계는 무엇입니까?기본적으로 화면을 빨간색으로 만들거나 픽셀 하나만 보여주는 것과 같은 GPU 드라이버를 만드는 가장 간단한 "헬로 월드" 예입니다.어디서부터 시작합니까?

저는 C나 OpenGL 추상화나 그 어떤 것도 하지 않고 직접 GPU를 직접 해킹하고 싶습니다.Mac OSX를 사용하고 있는데 Intel HD i7 그래픽 카드가 있는 것 같아서 이 문서들이 잘 맞는 것 같습니다.

메사3D 프로젝트는 수많은 오픈소스 그래픽 드라이버가 있다고 말하고 위키피디아는 인텔이 이러한 문서를 제작하여 원하는 경우 오픈소스 드라이버를 작성할 수 있지만 방법에 대해서는 설명하지 않는다고 말합니다.

마이클 에이브래쉬의 그래픽스 프로그래밍 블랙북을 접했는데, 이 책은 많은 설명을 해줍니다.

하지만 그것은 한꺼번에 물어뜯기에는 좀 무리가 있습니다.그리고 "헬로 월드" 프로젝트인 GPU 드라이버에 대한 해킹을 시작하는 방법에 대한 정보는 없는 것 같습니다.

예를 들어,

  • 조립을 배우려면, 당신은 단지brew install nasm, 일부 어셈블리를 작성하고 컴파일한 후 실행하여 "hello world"를 인쇄합니다.
  • 아두이노를 배우기 위해서는 USB 케이블을 통해 아두이노 보드를 컴퓨터에 꽂고 소프트웨어를 설치한 후 C 코드를 보드에 직접 업로드하여 실행하면 LED가 깜박입니다.

그래픽 카드에 대해 어떻게 같은 종류의 일을 합니까?

hello world의 예는 반드시 효과가 있을 필요는 없지만(효과가 있다면 멋지겠지요!), 높은 수준의/실무적인 의미에서 필요한 것을 간단히 설명하는 것도 도움이 될 것입니다.맥이나 리눅스에서 가능하지 않다면 알아두는 것이 좋을 것입니다.하지만 그럼에도 그래픽 드라이버를 작성할 때 어디서부터 시작해야 합니까?

  • 1단계: 대상이 되는 특정 GPU(아키텍처, 레지스터 및 스트림 세부 정보)를 이해합니다.많은 GPU의 경우 이러한 세부 사항은 독점 사항일 수 있으며 이해하지 못할 수도 있습니다. (하지만 언급하신 대로 사양이 제공됩니다.)
  • 2단계: 드라이버에서 레지스터/세부 정보를 쿼리할 수 있는 일부 호출을 드라이버에 추가합니다.
  • 3단계: 드라이버에 일부 호출을 추가하여 레지스터를 수정합니다. (모드 변경 등)
  • 4단계: 일정한 색상으로 GPU에 삼각형/쿼드를 그리는 방법을 확인할 수 있습니다.화면의 큰 4각형 또는 2개의 삼각형 또는 1개의 차원의 2배의 삼각형을 그리거나 일부 명확한 명령을 전송하여 화면 클리어(glClear와 유사한 기능)를 구현해 보십시오.(GPU에서 지원하는 방식 중 어느 방식을 사용하든) 삼각형이나 쿼드를 그리는 경우 NDC(normalized device coordinate) 시스템을 사용하고 Raw windowing system 또는 NWS(Null windowing system)에서 작업하는 것을 선호합니다.윈도우 설정 시스템은 합성 또는 일부 후처리 후 출력 프레임 버퍼를 표시하는 역할을 합니다.Raw 또는 NWS는 프레임 버퍼를 화면에 직접 표시하는 것을 의미합니다.
  • 5단계(대부분의 항목이 선택 사항임):복잡한 도면을 구현합니다.이것은 픽셀, 선, 삼각 스트립, 삼각 팬 등과 같은 다른 드로잉 모드의 지원과 텍스처, 조명, 변환, 다른 윈도잉 시스템과의 상호 작용의 지원을 포함할 수 있습니다.이 단계에서는 조립에 대해 학습해야 합니다.하지만 이것은 x86이나 암(CPU) 어셈블리가 아니라 SIMD를 다루는 데 특화된 GPU 어셈블리입니다.
  • 6단계: 스텐실 기능을 구현합니다.프로그램에 hello world의 스텐실을 준비합니다.컬러 1로 화면을 지웁니다.스텐실을 바른 후 색상 2로 다시 화면을 클리어합니다.이제 색상 1을 배경으로 색상 2로 쓰여진 헬로 월드가 있습니다.

이 모든 것을 할 동기는 다음과 같습니다.그리고 이것은 멋질 것입니다.

이를 위한 동기부여는 다음과 같습니다. GPU 사양의 가용성, GPU 어셈블리에 대한 학습 곡선, 그래픽의 복잡성.

나의 추천:GPU 사양(어셈블리와 함께)을 사용할 수 있다면, 예를 들어 사용 가능한 모든 API 세트(open vg 및 open GLES 1.1)의 서브셋을 구현할 것을 제안합니다.이 API 세트에 대한 자세한 내용은 khronos 웹사이트를 방문해 보세요.

언급URL : https://stackoverflow.com/questions/27812098/graphics-driver-hello-world-example

반응형