미니 ANGLE: 네이티브 OpenGL 드라이버 대체가 주 목적
- Section31
- 조회 수 477
- 2023.04.26. 10:51
즉, 이전에는 불칸 따로, OpenGL 따로, OpenCL 따로 이렇게 있었다면...
ANGLE을 OpenGL 드라이버를 대체하는 식으로 하게 되면
네이티브 Vulkan을 지원하는 프로그램 등은 ANGLE을 패스하고
바로 Vulkan 드라이버 → GPU 순으로 전달하고,
OpenGL만 지원하는 경우 또는 설정에서 OpenGL로 세팅된 경우라면
ANGLE 단에서 Vulkan으로 바꾼 뒤 Vulkan 드라이버로 넘겨서
그것을 GPU에 전달하는 식입니다.
여기서 오버헤드가 발생하게 됩니다. OpenGL → (ANGLE) → Vulkan이고
거기서 Vulkan 드라이버로 넘긴 뒤, 드라이버가 GPU에 전달하니까요.
구분 |
프레임 비(Frame rate) = 네이티브 GLES 1프레임당 시간 ÷ ANGLE 1프레임당 시간 |
2018년 | 42% |
2022년 | 60~70% |
2023년 | 90~110% |
위는 시기별 프레임 비(Frame rate)를 나타낸 것으로, 여기서는 프레임 비를
네이티브 GLES에서 1프레임당 시간을 ANGLE로 변환했을 때 1프레임당 시간으로 나눈 값으로
정의합니다. 이 값이,
- 1보다 높다: 네이티브 GLES가 FPS가 더 낮습니다.
- 1보다 낮다: ANGLE 변환 결과가 FPS가 더 낮습니다. ANGLE의 특성상 마지노선은 0.9 정도.
Galaxy Note9 512GB
- 이후 플랜: UNKNOWN
[Tablet]
Galaxy Tab S6 Lite
- 이후 플랜: iPad Air 6? 또는 mini 7?
[Laptop]
Dell XPS 13 9370 (이전) → (Galaxy Book3 (with ARC))
→ MacBook Air 15 M2 (2023년식)
사실 2018년에는 네이티브 GLES가 ~60FPS인데 ANGLE로 바꾸면 ~25FPS가 나왔다고 합니다.
거의 절망적인 퍼포먼스였죠.
그리고 OpenGL ES 3.2 → Vulkan 변환 프로세스는 사실상 삼성이 다 하고 있는
상태인 것 같다는 생각입니다. 이전 포스팅에서 출처로 올린 슬라이드를 봐도
삼성이 어떻게든 Vulkan이 OpenGL ES 3.2 지원을 위해 온갖 방법을 다 동원했으니...
그래서 드라이버 개발 초기엔 네이티브 GLES 대비 프레임비 중앙값이 60~70%였고,
거기에서 퍼포먼스 갭 줄이려고 온갖 방법을 다 동원했다고 하는데,
그 결과가 네이티브 GLES 대비 프레임비가 90~110% 까지 달성한 것 같군요.
Vulkan 호환성 이점 빼고
기존 네이티브 OpenGL ES 대비 퍼포먼스 저하가 발생한다는 점은
엄청 큰 리스크인듯합니다.
지금 엑시노스2200 벤치에서 3D 성능 곤두박질친게 이거 때문인가라는 생각이 들정도네요
결국 나쁘게 말하면 OpenGL ES 드라이버 개발할 깜냥과 인력이 없으니 땜빵한 것이니깐요