CPU와 GPU는 각각의 렌더링 명령을 동기화 할 필요가 있다.
- CPU에서 렌더링 명령들을 만들고 GPU에게 전달하는데, GPU에서 아직 다 처리하기 전에 CPU에서 다음 프레임에 해당하는 명령어들을 만들때 Command Allocator, Buffer들과 같은 자원에 접근할 때, GPU에서 사용하는 State혹은 GPU에서 사용중인 경우 문제가 발생하기 때문에.
문제점
- CPU는 GPU가 모든 렌더링 커맨드를 처리 완료할때까지 기다린다.
- GPU작업 완료 이후 다시 CPU가 렌더링 커맨드를 작성한다.
- CPU가 렌더링 커맨드를 작성하는동안 GPU가 놀게 된다.
간단한 해결방안
- 프레임마다 수정되거나 접근되어야 하는 자원들에 한해서 여러개를 만들어 둔다.
- CPU는 프레임마다 활용되지 않고 있는 자원들을 이용해서 렌더링 명령어들을 작성한다.
- 2~3프레임 정도를 미리 작성할 수 있도록 한다.
- GPU가 쉼없이 돌아갈 수 있게 된다.
- 만약, CPU가 2~3프레임 작성을 완료했는데도 GPU가 밀리고 있다면 CPU는 기다린다.