레거시 파이프라인
지난 20년 동안 그래픽 파이프라인은 진화하여 지금의 익숙한 상태에 도달했습니다. 독립 하드웨어 벤더(IHV)가 코어 수, 메모리 용량, 대역폭의 지속적인 확대 경쟁에 집중하면서 지오메트리 처리 모델에서 특정 고정 기능 병목 현상이 명백해졌습니다. 그림 1. 레거시 그래픽 파이프라인. 파란색 색조의 스테이지는 고정 기능입니다. 녹색 색조의 스테이지는 프로그래밍 가능한 셰이더입니다.
메시 셰이더 파이프라인
메시 셰이더 파이프라인은 이러한 레거시 그래픽 파이프라인 제한 사항을 대상으로 합니다. 우선, 파이프라인에서 IA와 테셀레이터를 제거합니다. 이는 셰이더 웨이브 시작 속도를 최대화하고 GPU와 함께 확장할 수 있는 셰이더 코드로 IA를 이동시키는 것을 목표로 합니다. 이는 GPU 코어를 포화시키고 PA에 대한 압력을 유지하는 데 도움이 될 수 있습니다. 이 파이프라인은 또한 파이프라인의 다양한 지점에서 워크로드를 컬링할 수 있는 기능을 제공합니다. 증폭 셰이더는 그룹화된 개체, 인스턴스 또는 메시렛과 같은 낮은 세분성 컬링을 수행하는 데 사용될 수 있습니다. 메시 셰이더는 프리미티브별 세분성으로 컬링을 수행할 수 있습니다. 이는 트리비얼하게 컬링 가능한 프리미티브를 조기에 자주 폐기할 수 있는 경로를 제공합니다 - 소중한 계산, 메모리 대역폭, PA 처리량을 절약합니다. 그림 2. 메시 셰이더 파이프라인의 스테이지. 녹색 색조의 스테이지는 프로그래밍 가능합니다. 파란색 색조의 스테이지는 고정 기능입니다.
메시 셰이더
메시 셰이더는 컴퓨트 셰이더에서만 찾을 수 있는 수준의 일반성을 지오메트리 파이프라인에 제공하도록 설계되었습니다. 이는 개발자가 각 스레드의 워크로드를 완전히 제어할 수 있게 합니다. 인덱스 및 정점 속성 페치를 셰이더 코드로 이동하면 고정 기능 하드웨어에 대한 의존성이 제거되고, 웨이브 시작 속도가 최대화되며 IA가 나머지 GPU와 함께 확장될 수 있습니다. 정점과 프리미티브 내보내기 개수를 동적으로 지정할 수 있는 기능은 프리미티브 컬링을 위한 효율적인 온칩 지원의 문을 엽니다. 이는 메시 셰이더 내의 임의의 컬링 기준에 대해 메시렛별 또는 프리미티브별로 수행할 수 있습니다. 이를 통해 셰이더는 여러 컬링 계층이 이미 수행된 후, 파이프라인 끝까지 정점 속성 페치와 셰이딩을 연기할 수 있습니다.증폭 셰이더
컴퓨트 셰이더는 정기적으로 리소스를 사전 처리하는 데 사용되며, 그 결과를 ExecuteIndirect를 사용하여 소비하는 드로우 호출이 뒤따릅니다. 이는 뷰별 컬링의 많은 형태에서 일반적인 기법입니다. 이는 적절한 하드웨어 지원으로 최적화될 수 있는 몇 가지 미묘한 단점이 있습니다. 우선, 컴퓨트 셰이더 인스턴스는 자신의 데이터를 글로벌 메모리에 써야 합니다. 이는 페치 지연 시간을 초래하고 GPU 전반의 메모리 대역폭 경합의 대상이 됩니다. 둘째, 컴퓨트 생산자와 그래픽 소비자가 연속적인 작업인 경우, GPU는 소비하는 드로우 호출을 시작하기 전에 모든 컴퓨트 셰이더 인스턴스가 종료될 때까지 기다려야 합니다. 이는 최종 UAV에 대한 모든 컴퓨트 셰이더 쓰기가 완료된 후에야 셰이더가 소비할 수 있도록 강제하는 순서 없는 액세스 뷰(UAV) 리소스 배리어에 의해 발생합니다. 그림 3. 즉시 이어지는 ExecuteIndirect “DispatchMesh” 드로우와 함께 컴퓨트 셰이더의 단순화된 웨이브 스케줄링 시각화. UAV 배리어로 인한 파이프라인 정지로 컴퓨트 셰이더 웨이브(노란색)와 메시 셰이더 웨이브(녹색) 실행이 분리됩니다. 번호가 매겨진 ID는 호출하는 컴퓨트 셰이더 스레드그룹을 메시 셰이더 자식의 클러스터와 연관시킵니다.

