기하 도형을 그리기 위해 GPU로 전송할 경우 입력 데이터가 해석 및 렌더링되는 방식을 결정하는 다양한 하드웨어 설정이 있다. 종합적으로 이러한 설정을 Pipeline State Objects 라고 한다.
ID3D12PipelineState
로 대표됨
rendering pipeline의 상태를 제어하는 대부분의 객체를 지정하는데 사용함
During initialization time
→ create many of these Pipeline State Objects
→ then setting them with a Command List takes very little CPU overhead
생성할 수 있는 개수에는 제한이 없다
PSO를 생성할 때는 D3D12_GRAPHICS_PIPELINE_STATE_DESC 구조를 사용
→ PSO가 설정될 때 pipeline state를 결정
대부분의 pipelin state가 PSO로 지정되지만 Command List(ID3D12GraphicsCommandList)에 의해 지정되는 경우도 존재
✔ 기본 개념은 GPU가 혼합 상태 설정과 같은 관련 설정을 한 번에 모두 지정하여 효율성을 얻는다는 것
→ 오늘날의 그래픽 하드웨어를 사용할 경우 여러 하드웨어 장치 간에 종속성이 존재
→ Direct3D 12의 PSO는 GPU가 일반적으로 초기화 중에 각 파이프라인 상태의 모든 종속 설정을 미리 처리하여 렌더링 시에 가능한 한 효율적으로 상태 간을 전환할 수 있도록 디자인되었다.