안녕하세요,
Avalonia UI 를 이용해서 프로그램을 개발하고 있습니다.
구동하려는 장비는 arm64 (aarch64) 기반 rk3568 ubuntu 18.04와
arm64 raspberry pi cm4 입니다.
PC에서 개발할 떄는 큰 문제가 없었는데, 실제 그래픽을 그릴 때 arm64 기반 장비에서는 cpu에 부하가 생각보다 많이 걸려서 board에 장착된 GPU를 이용하려 합니다.
(rk3568 에는 arm mali g-52, raspberry pi cm4 에는 VideoCore VI가 있네요.)
문제는, dotnet 으로 publish 할 때 생성되는 libSkiaSharp.so 가 nuget 기본 패키지에서는 GPU 를 사용할 수가 없네요.
자료를 찾아보니, GPU 를 사용하려면 이에 맞춰 새로 build를 하라고 하는데,
Building on Linux · mono/SkiaSharp Wiki · GitHub 링크를 토대로 진행해본 결과, 전혀 진행이 되지 않습니다.
x86_64 기반 ubuntu 18.04 / ubuntu 22.04 / ubuntu 22.04 모두 안 되고,
arm64 기반도 마찬가지입니다.
일단 해당 메뉴얼이 아주 오래된 것 같아 다른 방법도 찾아보고 있습니다만,
계속 실패하는 상황입니다.
이에 질문드리는 점은 다음 2가지 입니다.
- linux 에서 libSkiaSharp.so 를 GPU_Enable 시켜 build 하려면 어찌해야 될까요?
- 해당 방법이 아니라 다른 방법으로 arm64 기반 기기에서 Avalonia UI 를 실행할 때 GPU 를 사용할 수 있을까요?
이에 대해 혹시 아시는 선배님들이 계시면 답변하여 주시면 감사하겠습니다.
정확하게는 리눅스 빌드가 아니라 arm64 linux빌드를 찾으셔야 하는데. 링크 거신곳에는 크로스 컴파일 관련 내용이 없어서 검색을 해 봤습니다.
몇년 지난대다 특정 리눅스용이라 될지는 모르겠지만 이거 하나 나오네요. 빌드 스크립트 입니다.
1개의 좋아요
답변 감사합니다.
달아주신 댓글 내용으로 다양한 시도를 한 끝에 성공했습니다.
일단, 공식 SkiaSharp 공식 git ( Building on Linux · mono/SkiaSharp Wiki · GitHub ) 의 메뉴얼은 완전 초창기 구버전 기준이더군요.
v1.60.1 버전 빌드법인데, tools/git-sync-deps는 python2 로 해야하고
depot_tools는 또 python3 로 실행해야하고 개판이네요.
실제 Avalonia UI 에서 사용하기 위해서는
native range 인 (88.1) (89.0) 에 맞추기 위해서
$ git clone GitHub - mono/skia: Skia is a complete 2D graphic library for drawing Text, Geometries, and Images. -b v2.88.1 을 사용했습니다.
또 그냥 최신버전을 git clone 하니 build는 잘 되는데
최종적으로 avalonia ui 에서 쓰려고 하니 버전 이슈 (119.0)으로 나와서 안됩니다.
가장 핵심적인건 gn이 무조건 x86_64 binary 로 생성되기 때문에
x86_64 기반 하드웨어에서 크로스 컴파일을 해야하네요.
args 설정에서 cc와 cxx를 aarch64-linux-gnu 로, target_cpu = "arm64"로 설정해서 크로스 컴파일 하니 arm64용 libSkiaSharp.so 빌드를 할 수 있네요.
gn을 arm64에서 따로 커스텀 빌드도 해봤습니다만, 이 경우에는 또 기존 스크립트들과 gn 버전이 안 맞는다고 안 넘어가더군요.
args 설정은 다음과 같이 했습니다.
//
./bin/gn gen ‘out/linux/arm64’ --args='is_official_build = true target_os = “linux” target_cpu = “arm64” skia_use_egl = true cc = “aarch64-linux-gnu-gcc” cxx = “aarch64-linux-gnu-g++” skia_enable_tools=false skia_use_icu=false skia_use_piex=true skia_use_system_expat=false skia_use_system_freetype2=false skia_use_system_libjpeg_turbo=false skia_use_system_libpng=false skia_use_system_libwebp=false skia_use_system_zlib=false skia_use_sfntly=false skia_enable_gpu=true skia_enable_pdf=false extra_cflags=[ “-DSKIA_C_DLL”,“-Wno-error” ] ’
//
5개의 좋아요