현대의 표시 목록은 무엇입니까?


9

표시 목록은 이론적으로 나중에 사용하기 위해 명령 그룹을 저장하여 API의 모든 부분을 가속화 할 수있는 OpenGL 기능입니다. 내 이해에 따르면, 이것은 드라이버 오버 헤드를 줄이기위한 현재의 노력과 관련하여 많은 의미가 있습니다.

버전 3.1에서는 표시 목록이 더 이상 사용되지 않습니다. 최신 API는 무엇이며 DirectX는 비슷한 기능을 제공합니까? 더 이상 그러한 기능이 없다면 그 이유는 무엇입니까?

답변:


12

Nvidia는 최신 GL에서 명령 버퍼를 생성하기위한 확장 기능을 가지고 있습니다.

유사한 기능이 부족한 이유는 렌더링 방법과 관련된 상태가 많고 표시 목록이 많은 다른 상태의 영향을 받기 때문입니다. 예를 들어 블렌드 상태를 변경하려면 일부 하드웨어에서 조각 셰이더를 패치해야합니다.

NVidia는 모든 상태 를 캡처 하고 디스패치 후 상태로 재설정하여 문제를 해결했습니다 .

1) 디자인의 동기는 무엇입니까?

기본 목표는 사전 검증 된 명령 버퍼를 재사용 할 수 있도록하는 것입니다. 다른 API와 제안서에서는 다양한 명령 목록 또는 상태 객체를 사용하여이 문제를 해결했지만 반복되는 문제는 파이프 라인의 여러 단계 사이의 상호 작용이 이러한 사전 검증 및 재사용을 방해한다는 것입니다. 이러한 상호 작용은 종종 하드웨어에 따라 다르며 (공급 업체마다 또는 세대마다 다름) 사전 검증 체계가 제안되었을 때 상상하지 못한 새로운 기능에 의해 새로운 상호 작용이 도입됩니다.

우리는 (거의) 파이프 라인의 전체 상태를 포함하는 모 놀리 식 상태 객체를 가짐으로써이를 해결하려고 시도합니다. 이는 필요한 모든 교차 검증을 수행하기 위해 모든 구현에 충분한 정보를 제공해야합니다. 우리는 새로운 API 풋 프린트를 최소화하는 방식으로이를 생성하려고합니다. 모든 상태 (향후에 추가 된 것을 포함)를 원하기 때문에 컨텍스트의 현재 상태에서 캡처합니다.

[...]

23) 디스패치 호출 후 상태가 남아있는 상태, 즉 토큰에 의해 수정 된 상태는 무엇입니까?

해결 : 상태가 재설정됩니다.

(위의 링크 된 텍스트에서)

그러나 진정한 후속 작업은 DX12 및 vulkan의 명령 버퍼 기능입니다. 또한 명령 버퍼를 만들고 채울 때 사용할 모든 렌더링 상태를 단일 객체로 캡처합니다. NVidia 확장은 NVidia가 Vulkan 디자인에 참여한 결과 그 아키텍처를 기반으로합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.