로그인 해주세요.

리뷰 게시판 *IT 전자제품, 서비스, 가전, 차량 등의 리뷰 또는 강좌(팁)를 올리는 게시판입니다.

흡혈귀왕

강의 Termux 리눅스 강좌 4부 : 아드레노 GPU Vulkan 드라이버 설치

https://meeco.kr/Review/37391093

https://meeco.kr/Review/37393039

https://meeco.kr/Review/37397353

 

Termux 리눅스 강좌에 많은 관심 보여주셔서 감사합니다.

 

최근 Freedreno Turnip을 설치해서 이것저것 테스트 하였고

 

꽤 큰 성과가 있어서 강좌를 올리게되었습니다.

 

 

 

Q. Freedreno Turnip이 뭐임?

A. 아드레노의 오픈소스의 Vulkan 드라이버 입니다. 퀄콤이 보증하는 드라이버는 아니지만

   리눅스에서 Vulkan 하드웨어 가속이 가능합니다.

 

Q. 설치 후 뭘 할 수있음?

A. box64+wine에서 DXVK, VK3D3를 통해 게임 구동이 가능해집니다.

   또한 zink를 통해 OpenGL4.6 구현도 가능합니다.

 

Q. 성능은 어떤가?

A. 성능만 놓고보면 virgl과 큰 차이가 없습니다. 그 이유는 WSI 호환성 때문입니다.

    그럼에도 virgl보다 훨씬 나은 호환성과 안정성을 보여줍니다.

 

 

 

 

각설하고 바로 설치 들어가겠습니다.

 

 

 

우선 아드레노5xx/6xx 시리즈 기준의 설치 방법입니다.

디바이스는 갤럭시S20(스냅드래곤865 : 아드레노650)에 설치된 Ubuntu 22.04 LTS 기준입니다.

 

스크린샷_2023-07-29_02-46-19.png

 


 

$ sudo apt install vulkan*

$ sudo apt remove mesa-vulkan-drivers

 


 

터미널을 실행 후 위의 명령어를 차례로 입력해주세요.

mesa-vulkan-drivers을 설치한 이력이 없을 경우 두번째 명령어는 입력하지 않으셔도 됩니다.

 

 

 

https://drive.google.com/file/d/1zQnXSDI9LbE_FP8HAb63rC-F9Jx_JLCd/view?usp=sharing

 

위의 mesa-vulkan-kgsl.deb을 다운로드 받습니다.

해당 deb은 freedreno turnip이 활성화된 mesa vulkan driver입니다.

 

 

스크린샷_2023-07-29_02-49-50.png

 


 

$ cd 다운로드경로

$ sudo dpkg -i mesa-vulkan-kgsl_23.3.0-devel-20230714_arm64.deb

 


 

터미널로 다운받은 경로로 이동 후 deb 설치 명령어를 입력해주세요.

 

※ 해당 강좌는 바탕화면에 deb이 있다는 전제로 하였습니다.

 

 

 

 

 

스크린샷_2023-07-29_02-51-43.png

 


 

$ TU_DEBUG=noconform MESA_VK_WSI_DEBUG=sw VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/freedreno_icd.aarch64.json vkcube

 


 

vulkan 하드웨어 가속이 제대로 돌아가는 테스트를 위해 위의 명령어를 입력해주세요.

 

 

 

 

 

스크린샷_2023-07-29_02-52-06.png

turnip이 제대로 설치가 되었다면 vulkan api로 구동되는 vkcube가 실행되고 (vkcube가 마구마구 회전함)

GPU가 아드레노로 표시됩니다.

 

 

 

 

 

스크린샷_2023-07-29_02-52-51.png

 


 

MESA_LOADER_DRIVER_OVERRIDE=zink TU_DEBUG=noconform MESA_VK_WSI_DEBUG=sw VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/freedreno_icd.aarch64.json glmark2

 


 

zink+turnip으로 OpenGL4.6 테스트 해보겠습니다.

위의 명령어로 glmark2를 실행해주세요.

 

 

 

 

 

스크린샷_2023-07-29_02-54-27.png

GL 렌더러가 zink (Turnip Adreno (TM) 650)으로 표시되고

GL 버전도 4.6으로 표시됩니다.

 

 

 

 

이상으로 아드레노500/600 디바이스에서 Vulkan 하드웨어 가속을 성공했습니다.

 

 

 

제일 큰 체감은 게임입니다.

 

 

 

 

스크린샷_2023-07-29_02-58-04.png

 

위가 virgl 환경에서 실행한 리눅스용 카트라이더라고 불리우는 SuperTuxKart 입니다.

이전부터 계속 언급했듯이 virgl은 호스트 GPU를 가상화하여 게스트 OS에서 2D/3D 가속을 하는 기술로

 

OpenGL ES를 가상화 할 경우 OpenGL2.1이 한계이고 오만가지 문제가 발생할 수 있습니다.

 

SuperTuxKart에서 확인된 문제는 다음과 같이

 

캐릭터 3D 모델링이 깨지고 (굉장히 그로테스크 ㄷㄷㄷㄷ)

애니메이션이 표시되지 않고

배경에 이펙트가 표시되지 않는

 

등등

 

오만가지 문제가 발생합니다.

 

 

 

 

 

 

 

하지만...

 

 

스크린샷_2023-07-29_03-00-15.png

 


 

MESA_LOADER_DRIVER_OVERRIDE=zink TU_DEBUG=noconform MESA_VK_WSI_DEBUG=sw VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/freedreno_icd.aarch64.json supertuxkart

 


 

zink+turnip 환경 변수로 SuperTuxKart 실행하니 OepnGL ES3.2으로 구동되고

 

캐릭터 깨짐도 없고 애니메이션이랑 이펙트도 아주 잘 출력됩니다.

 

 

 

 

스크린샷_2023-07-29_03-01-17.png

 

퍼포먼스도 미세하게 virgl 대비 나은 느낌입니다.

 

 

 

 

또다른 큰 변화는 Blender 3D 입니다.

 

 

스크린샷_2023-07-29_03-04-53.png

 

virgl 환경에서 Blender 3D 실행 시

저렇게 UI 텍스트들이 로드되지 않고 3D 오브젝트 선택 시 프로그램이 프리징되버리면서

사용이 불가능합니다.

 

 

 

스크린샷_2023-07-29_03-06-08.png

 


 

MESA_LOADER_DRIVER_OVERRIDE=zink TU_DEBUG=noconform MESA_VK_WSI_DEBUG=sw VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/freedreno_icd.aarch64.json blender

 


 

zink+turnip 환경 변수로 Blender 실행하니 UI의 텍스트들도 잘 표시되고

3D 오브젝트를 터치해도 프리징되는 이슈도 없습니다!

 

 

 

하지만 프로그램을 전체화면으로 실행하면 타이틀 바 하단에 저렇게

여백이 생기고 UI가 틀어지는 이슈가 발생합니다.

 

 

 

 

스크린샷_2023-07-29_03-06-48.png

 

그럴때는 전체화면을 풀고 그냥 창 사이즈를 꽉차게 한 상태로 사용하면 됩니다.

 

 

스크린샷_2023-07-29_03-08-57.png

스크린샷_2023-07-29_03-09-43.png

스크린샷_2023-07-29_03-10-14.png

 

스냅드래곤865 디바이스 기준으로 생각보다 잘 돌아갑니다.

하이폴리곤 모델링은 힘들겠지만 로우폴리곤 모델링으로 가지고 놀기 아주 좋아보이네요.

 

 

 

 

 

 

그런데 매번 저렇게 환경 변수로 프로그램 실행하기가 상당히 불편합니다.

 

 

 

 

 

해결 방법으로

터미널에 아예 환경 변수를 고정시켜주는 방법이 있습니다.

 

 

 

 

 

스크린샷_2023-07-29_03-13-49.png

하단 패널의 터미널 아이콘 오른쪽 클릭 후 '속성'을 클릭하세요.

 

 

 

 

스크린샷_2023-07-29_03-14-11.png

실행 아이콘 팝업에서 '편집' 버튼을 클릭해주세요.

 

 

 

 

 

 

 

스크린샷_2023-07-29_22-10-32.png

 


 

bash -c "env DISPLAY=:0 MESA_LOADER_DRIVER_OVERRIDE=zink TU_DEBUG=noconform MESA_VK_WSI_DEBUG=sw VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/freedreno_icd.aarch64.json exo-open --launch TerminalEmulator"

 


 

터미널 아이콘 명령어에 위의 명령어를 입력 후 저장해주세요.

 

 

 

이제 하단 패널에서 실행하는 터미널 아이콘에

zink+turnip 환경 변수가 적용되었습니다.

 

 

 

스크린샷_2023-07-29_03-15-25.png

 


 

$ glxinfo -B

 


 

하단에서 실행한 터미널에서 위의 명령어를 입력해주세요.

 

 

 

스크린샷_2023-07-29_03-16-16.png

환경 변수가 제대로 적용되어 있으면 GPU 정보가

zink (Turnip Adreno (TM) 650)로 표시됩니다.

 

 

 

 

스크린샷_2023-07-29_03-16-57.png

스크린샷_2023-07-29_03-17-33.png

스크린샷_2023-07-29_03-18-49.png

 

이제 환경 변수를 넣지않고 터미널에서 프로그램을 실행하면

turnip이 자동으로 적용되어서 실행됩니다.

 

 

터미널에서 프로그램 이름으로 실행하는 것도 불편하다면 하단 패널에 프로그램 실행 아이콘을

추가 후 오른쪽 우클릭 -> 속성 -> 편집에서 터미널 아이콘에 환경 변수 넣어주듯이

 


 

bash -c "env DISPLAY=:0 MESA_LOADER_DRIVER_OVERRIDE=zink TU_DEBUG=noconform MESA_VK_WSI_DEBUG=sw VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/freedreno_icd.aarch64.json 프로그램이름"

 


 

위의 명령어를 입력해주시면 됩니다.

 

 

여기까지나 아드레노5xx/6xx 시리즈에 대한 설정입니다.

 

 

 

아드레노7xx GPU를 쓰는 디바이스에선

위의 과정을 거쳐도 turnip이 전혀 작동하지 않을겁니다.

 

 

다음은 아드레노7xx GPU에서 turinp 드라이버를 설치하는 방법입니다.

디바이이스는 갤럭시S22 울트라에서 진행했습니다.

 

 

 

우선 위의 과정을 동일하게 진행 후 

 

https://drive.google.com/file/d/14TZiV7afkyA2yGY1F6d5p_ohynRG14lT/view?usp=sharing

 

zip파일 리눅스에서 다운로드 받아주세요.

제가 직접 빌드한 a7xx 지원 turnip 바이너리입니다.

 

 

 

Screenshot_2023-07-29_00-00-19.png

Screenshot_2023-07-29_00-00-42.png

libvulkan_freedreno.so파일을 /usr/lib/aarch64-linux-gnu/ 경로로 복사해주세요.

 

 

 

 

Screenshot_2023-07-29_00-20-27.png

Screenshot_2023-07-29_00-21-26.png

 

 

터미널에 환경 변수가 적용되어 있는 상태에서

vkcube나 glmark2를 실행하면 정상적으로 구동되고 GPU 정보도 Adreno 730으로 표시됩니다.

 

 

 

 

 

스크린샷_2023-07-27_14-59-49 - 복사본.png

스냅드래곤8 Gen2 탑재의 갤럭시S23 울트라에서도 잘 작동합니다.

 

리눅스에 설치된 mesa가 23.0.0 버전 이상이라면 GPU 정보가

 

zink (Turnip Adreno (TM) 740)가 아니라

zink Vulkan 1.3 (Turnip Adreno (TM) 740 (MESA TURNIP)으로 표시됩니다.

 

 

저의 경우 갤럭시S23 울트라에서 mesa 23.3.0 devel을 설치해서 사용중이고

a7xx 시리즈 지원 turnip도 23.3.0 debel 브렌치에서 빌드하였습니다.

 

 

https://meeco.kr/Review/37393039

 

mesa 컴파일은 위의 GPU 가속 강좌의 하단을 참고해주세요.

 

 

 

 

 

 

이상 아드레노 GPU에서 Vulkan 드라이버를 설치해보았습니다. 

리눅스 환경에서 게임을 돌릴 준비가 모두 끝난 셈입니다.

 

zink+turnip도 완벽하지 않아서 테스트하면서 여러 문제가 확인되었습니다.

제가 정밀 테스트를 통해 발견된 이슈들은 다음과 같습니다.

 

 

[발견된 공통 이슈]

1. XFCE4 세션 자체를 zink+turnip으로 실행 시 UI 깨짐 증상 발생

   (그래서 XFCE4는 virgl로 실행 후 프로그램은 개별로 환경 변수 zink+turnip 적용)

 

2. zink+turnip 환경 변수로 VLC 실행 후 영상을 풀스크린으로 전환하면 영상이 센터에 표시되지 않고

   상단에 쏠려서 표시

 

3. zink+turnip 환경 변수로 Kdenlive 실행 후 창 크기를 조절하면 UI 깨짐 발생

 

4. zink+turnip 환경 변수로 Blender 3D 실행 시 타이틀 이미지 깨짐 발생

   (mesa 22.0.0에선 해당 증상이 없고 mesa 23.0.0에서 증상 발생)

 

5. zink+turnip 환경 변수로 Blender 3D 실행 시 프로그램이 전체화면일 경우 UI 좌표 틀어짐 발생

   (전체화면이 아닐 경우 증상 없음)

 

6. zink+turnip 환경 변수로 Firefox-esr 실행 시 WebGL이 실행되지 않는 문제 발생

 

 

[아드레노730 한정 이슈]

1. zink+turnip 환경 변수로 Blender 3D 실행 시 3D 오브젝트를 선택하면 프리징되면서

  프로그램이 크래시남

  (zink 에러로 보임......S23U와 S20에선 발생하지 않는데 아드레노730인 S22U와 탭S8에서만 발생;;)

 

 

 

 

 

저 이슈들 빼고 다른 문제는 전혀 없었습니다.

저것들 해결되면 스냅드래곤 탑재 디바이스는 완벽한 리눅스 환경이 될듯합니다.

 

Kdenlive UI 깨짐 빼면 1080p@60fps랑 4K@30fps도 편집 가능한 수준으로 돌아가고

Blender 3D도 전체화면이 아닌 상태에서 창 크기로 전체화면 수준으로 키워서 사용하면

아~~~~무 문제없이 작동합니다.(아드레노740과 아드레노650에선 정상 작동 확인)

 

 

 

 

위의 이슈들만 해결되고 WSI 호환성 개선되면 스냅드래곤 디바이스는 완벽한 리눅스 환경이 될듯합니다.

 

 

그럼 여기서 마치겠습니다

뿅!

흡혈귀왕
퀄콤빠, AMD빠, 테그라빠
댓글
10
Why'zner
1등 Why'zner
2023.07.30. 00:25

최근에 탭S9플러스를 드디어 질렀습니다. 탭S9 시리즈도 S23시리즈와 같은 방법으로 설치하면 되죠?

[Why'zner]님의 댓글을 신고합니다. 취소 신고
흡혈귀왕
글쓴이
흡혈귀왕 Why'zner 님께
2023.07.30. 00:32

넵 모든 설치법은 동일합니다!

[흡혈귀왕]님의 댓글을 신고합니다. 취소 신고
슈테르네
2등 슈테르네
2023.07.30. 10:01

선생님 box64+wine 강좌도 부탁드리겠습니다 

[슈테르네]님의 댓글을 신고합니다. 취소 신고
냥냥18세
3등 냥냥18세
2023.08.01. 10:43

스크린샷_2023-08-01_10-36-04.png

zink+turnip 환경 변수로 실행하려고 하니 에러가 뜨고 작동하지 않네요.. 해당 경로에 파일이 없다는 거? 같은데 어떻게 해야 하나요?

[냥냥18세]님의 댓글을 신고합니다. 취소 신고
흡혈귀왕
글쓴이
흡혈귀왕 냥냥18세 님께
2023.08.01. 10:48

zink쪽 오류 같군요

 

$ sudo apt install mesa*

를 통해 관련 패키지 mesa 관련 모든 패키지를 설치하시면 될듯합니다.

[흡혈귀왕]님의 댓글을 신고합니다. 취소 신고
냥냥18세
냥냥18세 흡혈귀왕 님께
2023.08.01. 11:59

20230801_115545.jpg

패키지를 찾을 수 없다고 뜨는데 어떻게 하죠...?

[냥냥18세]님의 댓글을 신고합니다. 취소 신고
흡혈귀왕
글쓴이
흡혈귀왕 냥냥18세 님께
2023.08.01. 12:01

아아 혹시 mesa를 컴파일 하셨나요?

[흡혈귀왕]님의 댓글을 신고합니다. 취소 신고
냥냥18세
냥냥18세 흡혈귀왕 님께
2023.08.01. 12:02

네 2부에서 알려주신대로..

[냥냥18세]님의 댓글을 신고합니다. 취소 신고
흡혈귀왕
글쓴이
흡혈귀왕 냥냥18세 님께
2023.08.01. 12:11

아아 그게 원인이었네요

mesa를 다시 컴파일 하시면될듯합니다.

 

우분투에서 기본 제공되는 mesa 패키지는 zink가 활성화되었지만

2부 mesa 컴파일에선 zink 옵션이 빠져있거든요. (이게 필수가 아니다보니....)

 

다운로드 받으셨던 mesa 23.1.3 소스를 다시 압축 푸셔서 경로로 진입 후

 


 

$ meson build -Dgbm=enabled -Dopengl=true -Degl=enabled -Degl-native-platform=x11 -Dgles1=disabled -Dgles2=enabled -Ddri3=enabled -Dglx=dri -Dllvm=enabled -Dshared-llvm=disabled -Dplatforms=x11,wayland -Dgallium-drivers=swrast,virgl,zink -Dvulkan-drivers=swrast -Dosmesa=true -Dglvnd=true -Dxmlconfig=disabled

 

$ sudo ninja -C build install

 


 

윗 명령어를 차례로 입력해주세요

(meson -Dgallium-drivers= 옵션에 zink가 추가되었습니다.)

 

혹시 모르니

컴파일 후 turnip 드라이버를 경로에 다시 넣어주세요

[흡혈귀왕]님의 댓글을 신고합니다. 취소 신고
냥냥18세
냥냥18세 흡혈귀왕 님께
2023.08.01. 13:27

다시 컴파일하니 해결되었습니다! 정말 감사합니다 ㅠㅠ

[냥냥18세]님의 댓글을 신고합니다. 취소 신고
취소
1

추천 IT 소식 [1/]

스킨 기본정보

colorize02 board
2017-03-02
colorize02 게시판

사용자 정의

1. 게시판 기본 설정

게시판 타이틀 하단에 출력 됩니다.

일반 게시판, 리스트 게시판, 갤러리 게시판에만 해당

2. 글 목록

기본 게시판, 일반 게시판, 썸네일 게시판만 해당

썸네일 게시판만 해당

썸네일 게시판만 해당

썸네일 게시판만 해당

썸네일 게시판만 해당

3. 갤러리 설정

4. 글 읽기 화면

기본 10명 (11명 일 경우, XXXXX 외 1명으로 표시)

5. 댓글 설정

일정 수 이상의 추천을 받은 댓글에 표시를 합니다.

6. 글 쓰기 화면 설정

글 쓰기 폼에 미리 입력해 놓을 문구를 설정합니다.

서버에 요청 중입니다. 잠시만 기다려 주십시오...