RADV에서 최신 Vulkan을 사용하기 위해 메사의 필기를 컴파일합니다
배경.
최신 RADV(오픈 소스용 amdgpu Vulkan 설치)를 사용하려고 합니다.
ROCm의 RADV에서 Vulkan을 사용한 메모
https://qiita.com/syoyo/items/ce3943757281acbdba49
라는 속편이 실렸다.
Mesa 21.3 or later,
Ubuntu 20.04+AMD GPU(Radeon VII or later)를 가정합니다.
Meson
mesa는 scons(봉화 33;)이렇게 구축할 수 있지만 젊은이들이라면 메슨이라고 생각해요.
(Mesa(freedesktop project?)메슨에게 옮기는 것 같다)
그래서 메슨에서 구축했습니다.
Ubuntu app로 들어온 메슨은 구libdrm 때문에 메사를 구축할 수 없음https://github.com/mesonbuild/meson/releases에서 메슨 최신 버전(0.51 as of Dec20th, 2019)을 획득하여 경로를 미리 통과합니다.
libdrm
mesa의amdgpu 모듈은libdrm 2.40.100을 요구합니다.현재(2019/12/20) abpt로 들어온libdrm는 매우 낡았기 때문에libdrm 2.40.100을 먼저 컴파일합니다.이 단계는 Ubuntu에서libdrm 2.40.100으로 업데이트할 필요가 없습니다.
libdrm 빌딩에libpciaccess가 필요합니다.
$ sudo apt install libpciaccess-dev
$ cd $libdrm
$ mkdir build
$ cd build
$ meson ..
...
Message:
Message: libdrm will be compiled with:
Message:
Message: libkms true
Message: Intel API true
Message: vmwgfx API true
Message: Radeon API true
Message: AMDGPU API true
Message: Nouveau API true
Message: OMAP API false
Message: EXYNOS API false
Message: Freedreno API false (kgsl: false)
Message: Tegra API false
Message: VC4 API false
Message: Etnaviv API false
Message:
Build targets in project:
AMDGPU와 함께 철저하게 작업하십시오.$ sudo ninja install
/usr/local/
에 설치됩니다.$ pkg-config --libs libdrm
중/usr/local
의 라이브러리가 사용되었는지 여부입니다.local에 설치하려면
meson --prefix /path/to/dir
에 설치 위치를 지정하고 PKG_CONFIG_PATH
로 설정하면 후속mesa 구축에서도 찾을 수 있습니다.Mesa build
구축된 문서가 전혀 없습니다.
공식 문서는 전혀 쓸모가 없고 리눅스 빌딩에 대해서는 아무것도 쓰지 않았다.공식 문서를 무시하세요.
우선 의존고에 넣는다.
템플릿에서 C/C++ 코드 생성python mako를 사용했기 때문에 pip마다 넣습니다.
$ pip install mako
다른python과 관련된 의존 관계가 있을 수 있습니다. 현지 pip install로 이동하십시오.그리고 앱으로 빌딩에 필요한 물건을 넣으세요.
llvm는 11이 필요합니다.
Ubuntu 20.04.0.3은 현재 기본적으로 10입니다.메신저에서는
llvm-config
만 보는 것 같은데,$ sudo update-alternatives --install /usr/bin/llvm-config llvm-config /usr/bin/llvm-config-11 10
미리 준비하다.X11 관계의 의존 관계는 많고 고통스럽다
$ sudo apt install libelf-dev bison byacc flex
$ sudo apt install libx11-dev libxext-dev libxdamage-dev libxfixes-dev libxcb-glx0-dev libx11-xcb-dev libxcb-dri2-0-dev libxcb-dri3-dev libxcb-present-dev libxshmfence-dev libxxf86vm-dev libxrandr-dev
$ sudo apt install libwayland-dev wayland-protocols libwayland-egl-backend-dev
$ sudo apt install libxcb-shm0-dev libxcb-sync-dev
기타, 모자라면 적당히 앱 추가.gitlab/container/debian/
당 구성 스크립트 참조)Vulkan을 사용할 때는 dri3이 필요합니다.
노력하면 wayland는 disable가 될 수 있지만 문서가 없어서 어떻게 설정해야 할지 모르니 포기하고 wayland 형식으로 구축하세요.
만약 meson bootstrap이 성공한다면, 이후에는 닌자 일반 빌딩을 통과해야 한다.
mesa는 설치 후 GL과 Vulkan 등 헤더 파일을 설치할 수 있으므로 시스템 헤더 파일을 덮어쓰지 않도록 적당한local dir에 설치하십시오.적절하게 변경
$HOME/local
하십시오.$ mkdir build
$ cd build
$ meson --prefix $HOME/local ..
$ ninja
$ ninja install
현재 $HOME/local
에 설치되어 있습니다.이동
내부 핵 모듈의drm는 원형을 유지할 수 있다.
VK_ICD_FILENAMES
환경 변수는 사용된libvulkan을 이번에 구축된 것으로 설정합니다.$ export VK_ICD_FILENAMES=$HOME/local/share/vulkan/icd.d/radeon_icd.x86_64.json
그리고 vulkan 프로그램을 정상적으로 조작합니다.해볼게요.$ vulkaninfo
GPU0
VkPhysicalDeviceProperties:
===========================
apiVersion = 0x40106b (1.1.107)
driverVersion = 79704065 (0x4c03001)
vendorID = 0x1002
deviceID = 0x66af
deviceType = DISCRETE_GPU
deviceName = AMD RADV VEGA20 (LLVM 8.0.1)
...
VK_KHR_shader_float16_int8 : extension revision 1
...
Super cooool! VK_KHR_shader_float16_int8
사용할 수 있습니다!추기
Mesa20(2020년/Feb/19)에서는 Vulkan1.2를 RADV에서 사용할 수 있다.
HLSL을 사용하여 섀도우를 설명할 수 있습니다.
추기
21.3이면 experimental에서 시간 지연 훈련 기능을 사용할 수 있다.
VK_ICD_FILENAMES
에 사용될 Vulkan 드라이버를 지정해도 amdgpu-pro
가 들어가면 32비트 버전의amdvlk32를 왜 보러 갔을까.amdgpur-Pro(closed source 버전 Vulkan 드라이버)를 넣으면 삭제부터 하세요.또 기본적으로 훈련 지연 확장은 나타나지 않는다.
환경 변수를 사용하여 지정해야 합니다
RADV_PERFTEST=rt
.(혹시 모르니
vulkaninfo
등에서 RADV를 사용했는지 확인)offscreen으로 이동
그룹을 추가하면 offscreen(ssh 로그인 등)을 통해 이동할 수 있습니다.
$ sudo usermod -aG video $USER
TODO
기본적으로 OpenGL 연결이 설정되어 있기 때문에 RADV(libvulkan)만 구성됩니다.
사용자 디렉터리에libdrm을 설치하여mesa를 구축할 수 있도록 합니다 Docker 빌딩 준비
Reference
이 문제에 관하여(RADV에서 최신 Vulkan을 사용하기 위해 메사의 필기를 컴파일합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/syoyo/items/9b98a3124ce47065453f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)