Notice
Recent Posts
Recent Comments
Graphics Programming
OpenGL에서 멀티쓰레딩하기 (2/3) 본문
https://codeonwort.tistory.com/367
멀티쓰레딩 1편.. 이런 글을 쓴 기억도 없었는데 블로그 정리하다 문득 발견했다;;
https://codeonwort.tistory.com/381
렌더링 관련 가장 최근 일지. 이후로 몇 달 주기로 자잘한 수정만 하다가 간만에 대규모 작업을 했다. 엔진 자체는 싱글쓰레드로 돌아갔지만 렌더 커맨드 리스트, 씬 프록시 등 멀티쓰레딩을 위한 아키텍처는 예전부터 쌓아올렸다.
메인 루프는 장기간 리팩토링을 거치며 이런 식으로 바뀌어왔고,
- 월드 업데이트 → 월드 정보를 가지고 바로 GPU 작업 실행
- 월드 업데이트 → 월드 정보를 가지고 렌더 커맨드를 생성해 리스트에 누적 → 리스트 실행 (GPU 작업)
- 월드 업데이트 → 씬 프록시 생성 → 씬 프록시 정보를 이용해 렌더 커맨드를 리스트에 누적 → 리스트 실행 (GPU 작업)
최종적으로 이런 식으로 돌아가고 있었다.
그래서 렌더 쓰레드만 만들어서 이렇게 돌리면 간단하게 멀티쓰레딩을 완성할 줄 알았지만 온갖 크래시, 데드락, 실행 순서 꼬임, 하이젠버그 등을 겪고 나서야 겨우 멀티쓰레딩이 제대로 돌아가게 되었다.
https://github.com/codeonwort/pathosengine/pull/24
이 토이 프로젝트에 todo가 수십 개 쌓여있지만 그 중에서도 가장 큰 todo를 처리했다. 멀티쓰레드 디버깅하다 때려치고 싶은 생각이 많이 들었는데 결국 완료하고 마스터에 머지하니 뿌듯하다.
Comments