SSH가 virgl OpenGL 렌더러를 다시 llvmpipe 소프트웨어 렌더러로 변경하는 이유는 무엇입니까? SSH 세션에서 virgl을 유지할 수 있나요?

SSH가 virgl OpenGL 렌더러를 다시 llvmpipe 소프트웨어 렌더러로 변경하는 이유는 무엇입니까? SSH 세션에서 virgl을 유지할 수 있나요?

호스트와 게스트 모두 Ubuntu 20.04인 Qemu VM을 만들었습니다. 그런 다음 명령을 사용하여 Qemu VM을 시작합니다.

qemu-system-x86_64 ubuntu-desktop.qcow2 -m 2G -smp 2 -device virtio-vga-gl -display gtk,gl=on -nic user,hostfwd=tcp::5555-:22

게스트 Ubuntu의 데스크탑을 열고 터미널에 입력할 수 있는 경우

glxinfo -B

출력에는 OpenGL 렌더러가 "virgl"이라는 것이 표시됩니다. 그러나 -Xoption 및 type 을 사용하여 게스트 Ubuntu에 ssh를 실행하면 glxinfo -BOpenGL 렌더러가 소프트웨어 OpenGL 렌더러인 "llvmpipe(LLVM 13.0.0, 128비트)"라고 출력됩니다.

그렇다면 ssh가 virgl OpenGL 렌더러를 다시 llvmpipe 소프트웨어 렌더러로 변경하는 이유는 무엇입니까? Qemu 창에서 볼 수 있듯이 SSH 세션에서 원본 "virgl" OpenGL 렌더러를 유지할 수 있는 방법이 있습니까?

답변1

출력에는 OpenGL 렌더러가 "virgl"이라는 것이 표시됩니다. 그러나 -X 옵션을 사용하여 게스트 Ubuntu에 ssh를 실행하고 glxinfo -B를 입력하면 OpenGL 렌더러가 소프트웨어 OpenGL 렌더러인 "llvmpipe(LLVM 13.0.0, 128비트)"라고 출력됩니다.

그렇다면 ssh가 virgl OpenGL 렌더러를 다시 llvmpipe 소프트웨어 렌더러로 변경하는 이유는 무엇입니까? Qemu 창에서 볼 수 있듯이 SSH 세션에서 원본 "virgl" OpenGL 렌더러를 유지할 수 있는 방법이 있습니까?

-X옵션을 사용하면 glxinfo가호스트의게스트의 서버가 아닌 X 서버입니다. GLX는 "GL over X11"이므로 이는 glxinfo가 통신 중이라는 사실로 인해 호스트의 Xorg에서 사용 가능한 기능을 표시한다는 의미입니다.네트워크를 통해,따라서 직접적인 SHM 또는 DRI 액세스가 없습니다. (예를 들어 최신 X11 프로그램은 MIT-SHM을 통해 X 서버와 비트맵을 직접 교환할 수 있는 기능에 많이 의존합니다.)

게스트의 X 서버를 사용하고 싶다면,사용하지 -X마십시오-Y대신 게스트 내부에서 이미 실행 중인 X 서버를 가리키도록 정의합니다 DISPLAY(가능하면 ).XAUTHORITY

(대부분 표시는 0이지만 Xauth 경로는 변경될 수 있으므로 게스트 내의 "로컬" 터미널을 통해 DISPLAY 및 XAUTHORITY 값을 확인해야 합니다. 최신 버전에서는 이 정보를 찾을 수도 있습니다. systemctl --user show-environment이는 신뢰할 수 있는 정보입니다. 원천.)

그러나 SSH를 통해 호스트에 X 창을 표시하면서 게스트의 가상 GPU를 사용하려는 경우 GLX를 사용할 수 없지만 EGL 기반 소프트웨어가 필요할 수 있습니다( eglinfovirgl GPU에 액세스할 수 있는지 확인).

또는 게스트에서 애플리케이션을 실행하되 VNC(x0vncserver) 또는 Qemu의 SPICE 원격 프로토콜(VNC/RDP와 마찬가지로 네트워크를 통해 사용할 수 있음)을 통해 제어합니다.

관련 정보