RADV에서 최신 Vulkan을 사용하기 위해 메사의 필기를 컴파일합니다

5781 단어 mesalibdrmVulkanRADV

배경.


최신 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 빌딩 준비

좋은 웹페이지 즐겨찾기