맨틀 (API)
1. 개요
Mantle은 CPU 병목 현상을 완화하여 성능 향상을 목표로 AMD가 개발한 API(Application Programming Interface)이다. API 명령 처리 오버헤드를 줄이고, 멀티 코어 CPU 활용도를 높여 CPU 성능을 개선하며, 셰이더 컴파일 오버헤드를 감소시키는 특징이 있다. 2014년에 발표되었으며, AMD의 그래픽 카드 및 APU에서 지원되었다. Mantle API는 DirectX 12 및 Vulkan과 유사한 목표를 가지면서, Vulkan API 개발에 기여하고 2015년에 개발이 중단되었다.
| 이름 | 맨틀 |
|---|---|
| 로마자 표기 | Maenteul |
| 종류 | 렌더링API |
| 개발자 | AMD, DICE |
| 운영 체제 | 윈도우, 리눅스 (발표됨) |
| 플랫폼 | x86 및 x86-64 |
| 라이선스 | 프로프라이어터리 소프트웨어 및 프리웨어 |
| 상태 | 베타 |
|---|---|
| 대체 | Vulkan |
| 출시일 | 2013년 9월 25일 |
|---|---|
| 최신 버전 | 1.0 |
| 중단 여부 | 예 |
| 웹사이트 | AMD 맨틀 웹사이트 |
|---|
-
AMD 소프트웨어 -
GPUOpen
GPUOpen은 AMD가 개발한 오픈 소스 미들웨어 스택으로, 게임, CGI, 전문 컴퓨팅 분야 개발자들에게 다양한 도구와 라이브러리를 제공하며 소프트웨어 이식성을 향상시키는 것을 목표로 한다. -
AMD 소프트웨어 -
ROCm
ROCm은 AMD가 개발한 개방형 소프트웨어 스택으로, GPU를 활용한 컴퓨팅을 지원하며, HIP를 통해 CUDA 코드를 사용할 수 있도록 지원하고 머신 러닝, 슈퍼컴퓨팅 등 다양한 분야에서 활용된다. -
3차원 그래픽스 API -
WebGL
WebGL은 웹 브라우저에서 3차원 그래픽을 렌더링하기 위한 API이며, OpenGL ES를 기반으로 개발되어 다양한 웹 브라우저와 모바일 환경에서 지원된다. -
3차원 그래픽스 API -
Direct3D
Direct3D는 마이크로소프트가 개발한 3차원 그래픽스 API로, 그래픽 하드웨어 가속을 지원하며 렌더링 파이프라인을 통해 데이터를 화면의 이미지로 변환하며, 윈도우 운영체제 및 다른 플랫폼에서도 사용 가능하다. -
API -
Tk (소프트웨어)
Tk는 Tcl 스크립팅 언어의 크로스 플랫폼 GUI 툴킷으로, 다양한 플랫폼 이식과 여러 프로그래밍 언어 바인딩을 지원하며 사용자 정의 가능한 위젯들을 제공한다. -
API -
ASIO
ASIO는 독일 스타인버그에서 개발한 오디오 입출력 API 규격으로, 낮은 지연 시간과 멀티 채널 I/O를 지원하며 윈도우 운영체제에서 주로 사용된다.
2. 역사적 배경
Mantle이 개발된 배경에는 기존 PC용 실시간 3차원 컴퓨터 그래픽스 API로 사용되던 Direct3D 및 OpenGL이 콘솔(게임 전용기) 환경과 달리 추상화, 공통화, 표준화가 중시되면서 API 호출 오버헤드가 크고 렌더링에 멀티 코어 CPU를 최대한 활용할 수 없다는 문제점을 안고 있었던 점이 꼽힌다. 이러한 문제점은 특히 AAA급 타이틀의 게임 소프트웨어처럼 엄격한 최적화가 요구되는 경우에 큰 악영향을 미쳤다.
Mantle의 드로우 콜 개선으로 인해 CPU가 병목 현상이 되는 상황이 완화되었다. Mantle의 설계 목표는 게임 및 애플리케이션이 CPU와 GPU를 효과적으로 이용하고 API에 의한 명령어 평가, 검증(Validation)의 오버헤드를 줄이고 멀티 코어 CPU에서의 확장성을 향상시켜 CPU 병목 현상을 해소하는 것, 더욱 빠른 렌더링 루틴을 제공하는 것, 그리고 Direct3D나 OpenGL이 가진 하드웨어 추상화의 일부를 제거하여 더욱 상세한 그래픽스 파이프라인 제어를 가능하게 하는 것이다.
3. 주요 특징
Mantle은 CPU 병목 현상을 완화하고 성능을 향상시키기 위해 다음과 같은 특징을 가지고 있다.
* API 명령의 낮은 오버헤드 검증 및 처리
* 명시적인 명령 버퍼 제어
* 여러 CPU 코어에서 명령 버퍼 재정렬을 통해 선형에 가까운 성능 확장
* 런타임 셰이더 컴파일 오버헤드 감소
* AMD는 Mantle이 CPU 오버헤드를 줄여 동급 API보다 초당 최대 9배 더 많은 드로우 콜을 생성할 수 있다고 주장한다.
* 최소 8개의 코어에 대한 멀티 스레드 병렬 CPU 렌더링 지원
* 모놀리식 파이프라인
* 파이프라인 저장 및 로드
* 하이브리드 리소스 모델
* 일반화된 리소스
* 리소스 준비 제어
* CPU 개입 없이 동적 흐름 제어
* 직접적인 GPU 제어
* 하드웨어에 대한 더 나은 제어
* "모든 하드웨어 기능은 API를 통해 노출됩니다."
GDC 14에서 Oxide Games의 직원인 Dan Baker는 Mantle이 기존 API의 개조로는 해결할 수 없는 근본적인 개발 과제를 해결할 것이라고 언급했다. 그래픽 장치 드라이버에 대한 최적화는 어렵다.
2013년 11월 AMD 개발자 서밋(APU)에서 DICE의 Frostbite 엔진 기술 디렉터인 Johan Andersson은 Mantle이 개발을 더 쉽게 만들고 개발자가 혁신할 수 있도록 해준다고 칭찬했다.
Mantle의 등장 이후 로우 레벨을 지향하는 신세대 그래픽스 API로 애플의 Metal, 마이크로소프트의 DirectX 12, 그리고 Khronos의 Vulkan이 잇따라 발표되었다. DirectX 12는 Mantle에 영감을 받아 개발이 시작된 것으로 알려져 있으며, Vulkan 또한 Mantle의 기술을 요소로 포함한 것으로 발표되면서, Mantle은 신세대 로우 레벨 API의 선구자 역할을 수행했다.
3.1. CPU 성능 개선
Mantle은 CPU 병목 현상을 완화하고 성능을 개선하기 위해 설계되었다. 주요 특징은 다음과 같다:
* API 명령 검증 및 처리 오버헤드 감소
* 명시적인 명령 버퍼 제어
* 여러 CPU 코어에서 명령 버퍼 재정렬을 통한 선형에 가까운 성능 확장
* 런타임 셰이더 컴파일 오버헤드 감소
* AMD는 Mantle이 동급 API보다 초당 최대 9배 더 많은 드로우 콜을 생성할 수 있다고 주장한다.
* 최소 8개 코어에 대한 멀티 스레드 병렬 CPU 렌더링 지원
* 멀티 코어 CPU 가동률 향상에 따른 성능 향상
Mantle은 기존 PC용 실시간 3차원 컴퓨터 그래픽스 API인 Direct3D 및 OpenGL이 콘솔 환경과 달리 추상화, 공통화, 표준화가 중시되어 API 호출 오버헤드가 크고 렌더링에 멀티 코어 CPU를 최대한 활용할 수 없다는 문제점을 해결하고자 했다.
3.2. GPU 성능 개선
Mantle은 GPU 제한적인 성능을 개선하기 위해 여러 내장 기능을 제공한다. 이러한 개선은 게임 엔진이 Mantle의 기능과 최적화를 얼마나 잘 활용하는지에 따라 달라진다. Mantle의 주요 기능은 다음과 같다:
Mantle은 고해상도 및 "최대 세부 설정"과 같이 GPU 리소스를 많이 사용하는 환경에서도 성능 개선을 목표로 설계되었지만, 이러한 환경에서는 API 수준의 개선만으로는 한계가 있다.
4. 지원
Mantle API는 19.5.1 이전에는 AMD 카탈리스트의 일부로만 제공되었으며, 마이크로소프트 윈도우에서 사용할 수 있었다. AMD는 자사의 그래픽 코어 넥스트 마이크로아키텍처 기반의 그래픽 카드 및 APU에 대해서만 Mantle API를 지원한다고 발표했으며, 테라스케일 마이크로아키텍처 기반의 구형 제품은 지원하지 않았다.
Mantle은 원래 Windows 외에도 리눅스를 포함한 다른 플랫폼에서도 출시될 예정이었지만, 실현되지 않았다.
이 API는 공식적으로 중단되었지만, 2020년 중반에 GRVK라는 Mantle에서 Vulkan으로의 번역 레이어가 시작되었다. 이를 통해 API와 궁극적으로 게임은 Mantle이 그래픽 드라이버를 지원하지 않더라도 계속해서 작동할 수 있게 되었다.
마이크로소프트 윈도우용 드라이버 "AMD 카탈리스트"에서만 지원되며, 대상 하드웨어는 GCN(Graphics Core Next) 아키텍처를 채용한 APU 및 그래픽 카드에 한정된다.
지원되는 하드웨어는 다음과 같다.
| 종류 | 제품군 |
|---|---|
| 그래픽 카드 | |
| APU |
5. 지원 게임 엔진
다음은 Mantle을 지원하는 게임 엔진 목록이다.
| 엔진 이름 | 개발사 | 비고 |
|---|---|---|
| CryEngine | 크라이텍 | |
| Frostbite 3 | DICE | |
| Nitrous | Oxide Games | |
| 언리얼 엔진 3 (수정판) | Thief에 사용 | |
| LORE | Civilization: Beyond Earth에 사용 | |
| Asura | Sniper Elite III에 사용 |
6. 지원 게임
다음은 맨틀을 지원하는 게임 목록이다.
* 배틀필드 4
* 배틀필드 하드라인
* 괴도
* 플랜츠 vs. 좀비: 가든 워페어
* 시드 마이어의 문명: 비욘드 어스
* 드래곤 에이지: 인퀴지션
* 스나이퍼 엘리트 3
* 스타 시티즌
프로스트바이트 엔진을 사용하는 다른 게임들(15개)도 맨틀을 지원할 예정이었다. 니드 포 스피드: 라이벌, 매스 이펙트: 안드로메다, 미러스 엣지: 카탈리스트, 심즈 4, 스타워즈 배틀프론트 (2015) 등이 그 예시이다.
콜 오브 듀티: 어드밴스드 워페어, 다잉 라이트, 그랜드 테프트 오토 V, 라이즈 오브 더 툼 레이더 등도 맨틀을 지원할 수 있다는 소문이 있었으나, 확인되지는 않았다.
7. 유사 기술
* AZDO (Approaching Zero Driver Overhead): OpenGL의 기능 확장으로 드라이버 오버헤드를 줄이는 접근 방식이다. 엔비디아는 드라이버 오버헤드를 더욱 줄이는 여러 기능으로 OpenGL을 확장했다.
* DirectX 12: 마이크로소프트의 로우 레벨 API이다. Mantle에 영감을 받아 개발되었으며, Mantle에서 DirectX 12로 포팅하는 것이 Direct3D 11에서 DirectX 12로 포팅하는 것보다 더 쉽다고 알려져 있다.
* Vulkan: 크로노스 그룹의 로우 레벨 API이다. Mantle의 기술을 기반으로 개발되었다.
* Metal: 애플의 로우 레벨 API이다.
8. 개발 중단 및 영향
AMD는 DirectX 12 및 Vulkan(glNext에서 이름 변경)의 등장으로 인해 Mantle을 게임 API로 중단했다. AMD는 Mantle API를 Khronos 그룹에 기증했으며, 이 그룹은 이를 Vulkan API로 개발했다.
Mantle의 등장 이후, 애플의 Metal, 마이크로소프트의 DirectX 12, 그리고 Khronos의 Vulkan과 같이 로우 레벨을 지향하는 신세대 그래픽스 API가 잇따라 발표되었다. DirectX 12는 Mantle에 영감을 받아 개발이 시작된 것으로 알려져 있으며, Vulkan 또한 Mantle의 기술을 요소로 포함한 것으로 발표되면서, Mantle은 신세대 로우 레벨 API의 선구자 역할을 수행했다.