2017년 6월 23일

ARM의 Mali Graphics Debugger를 활용한 언리얼 엔진 모바일 어플리케이션 최적화

저자: Alexander Paschall

ARM 말리 그래픽 디버거(ARM Mali Graphics Debugger)는 모바일 플랫폼 어플리케이션의 그래픽 최적화를 도와주는 툴입니다. 말리 그래픽 디버거는 언리얼 엔진 4.15로 제작한 프로젝트에서 프로젝트 내 설정 창의 옵션을 하나 선택하는 것만으로도 간단하게 활용할 수 있습니다. 에픽게임즈는 언리얼 엔진 4.15 에디터에서 직접 모바일 디바이스 상의 프로파일링 작업을 할 수 있는 기능을 소개해 드린 바 있습니다. 이 블로그 포스트에서는 지난 4.15 버전의 엔진에서 이 기능을 사용하는 방법에 대해 다루었습니다. 위 포스트는 언리얼 엔진 4.15 버전에 적용되는 것이며, 말리 그래픽 디버거 4.5 버전을 사용해 작성한 것입니다.

ARM의 엔지니어들은 언리얼 엔진 라이브 스트림에서 말리 그래픽 디버거를 언리얼 엔진 4에 통합 및 활용하여, 안드로이드 디바이스를 디버그하는 방법을 정확하게 보여주었습니다. 이들은 삼성 갤럭시 S7의 모바일 디바이스 상에서 디버거가 실시간으로 구동되며 프로젝트를 최적화하는 것을 보여줄 수 있었습니다.
 

말리 그래픽 디버거의 활성화는 정말 쉬워졌습니다. 현재는 그저 프로젝트 세팅 메뉴에서 해당 옵션을 선택하기만 하면 됩니다. 우선 언리얼 엔진 상에서 프로젝트를 연 다음, 편집 메뉴의 프로젝트 세팅 창을 엽니다. 그런 다음 왼쪽 메뉴에서 플랫폼 부분의 목록 중 안드로이드를 선택하고, 안드로이드 메뉴에서 Graphics Debugger를 찾아줍니다. 마지막으로 드롭다운 메뉴를 열고 Mali Graphics Debugger 롬을 선택합니다.
 
Project Settings

이렇게 선택한 후에는 호스트가 될 컴퓨터에 말리 그래픽 디버거 설치 경로를 입력해야 합니다. 이 작업을 위해서는 먼저 컴퓨터의 시스템에 제대로 작동하는 버전의 말리 그래픽 디버거가 선행 설치 되어있어야 합니다. 이 설치 방법과 관련된 자세한 정보는 이 링크에서 찾아볼 수 있습니다.
 
Settings

다음은 대상 디바이스에 MGD 데몬 (MGD Daemon)을 설치합니다. MGD 설치 폴더를 설정한 다음, target\android\arm 경로 내에 다음 명령을 사용하여 MGD 데몬을 설치해 줍니다:
 

adb install -r MGD.apk


어플리케이션을 실행하기 전에 호스트 PC에서 아래 명령을 실행해야 합니다(그 전에 먼저 "adb devices" 명령을 실행해 대상 디바이스가 보이는지 확인하시기 바랍니다.):
 

adb forward tcp:5002 tcp:5002


대상 디바이스 상에서 MGD 데몬 어플리케이션을 실행한 다음, 데몬 자신을 활성화 합니다:
 
blogAssets%2F2017%2FJUNE+2017%2FARM+Mali+Graphics+Debugger%2FMALI_03-320x210-7e86bc8fd2479e24c233f50700f517cf87746029

이 시점에서 디바이스를 호스트 PC의 MGD로 연결하고, 어플리케이션을 실행한 다음 디버깅을 시작할 수 있습니다. MGD 매뉴얼을 참고하여 사용 방법에 대한 더 자세한 정보를 얻어보시기 바랍니다.
blogAssets%2F2017%2FJUNE+2017%2FARM+Mali+Graphics+Debugger%2FMALI_04-320x179-5be378c8e481d239e3386e90be947ce82142328b
Mali

정말 복잡한 어플리케이션의 경우, 게임 스레드가 렌더 스레드를 기다리다 타임아웃을 일으킬 수도 있습니다. 이는 로그에서 확인이 가능합니다. (로그는 'adb logcat –s “UE4”' 명령어로 액세스해 볼 수 있습니다):

GameThread timed out waiting for RenderThread after 30.01 secs


이 경우에는 간단하게 언리얼 엔진 콘솔로 다시 실행해서(기본 설정으로는 4 손가락 동시 탭입니다) 타임아웃을 끌 수 있습니다:
 

g.TimeoutForBlockOnRenderFence 9999999


위 단계를 따라한다면 그 어떤 말리 기반 플랫폼 상에서든 언리얼 어플리케이션과 함께 말리 그래픽 디버거를 사용할 수 있을 것입니다. 문제가 발생했을 경우 커뮤니티 페이지에 제보해 주시면, 위 과정 진행에 대한 도움을 받을 수 있을 것입니다.