가상 머신을 켜거나 쓰는 도중 창이 닫히면서 아래와 같은 대화상자가 뜬다.
VMware Workstation unrecoverable error: (svga)
VERIFY bora\mks\backends\vulkan\vkrSwapchain.c:371
A log file is available in "<VM 경로>\vmware.log".
svga 는 VMware 의 가상 그래픽 장치이고, mks(Mouse Keyboard Screen) 는 호스트 쪽에서 화면을 그리는 구성 요소다. 경로에 backends\vulkan 이 들어 있다는 것은 호스트 GPU 의 Vulkan 드라이버를 통해 화면을 그리다가 실패했다는 뜻이다. vkrSwapchain.c 는 화면 버퍼를 교체하는 부분이라, 창 크기 변경 · 모니터 전환 · 원격 데스크톱 연결 · 절전 복귀처럼 표시 대상이 바뀌는 순간에 자주 터진다.
즉 게스트 OS 의 문제가 아니라 호스트의 그래픽 드라이버와 VMware 렌더러 사이의 문제다. 게스트를 다시 설치해도 해결되지 않는다.
가장 먼저 한다. Vulkan 구현은 GPU 드라이버가 제공하므로, 드라이버가 낡았거나 베타면 이 오류가 반복된다. NVIDIA · AMD · Intel 공식 배포본의 정식(WHQL) 버전을 설치한다. 노트북에서 내장 GPU 와 외장 GPU 가 같이 있는 경우, VMware 가 어느 쪽을 쓰는지도 확인한다. 윈도우의 설정 → 시스템 → 디스플레이 → 그래픽 에서 vmware-vmx.exe 에 특정 GPU 를 지정할 수 있다.
Vulkan 백엔드 관련 수정이 릴리스마다 들어간다. 사용 중인 버전을 최신 유지보수 릴리스로 올린다.
VM 을 완전히 종료한 뒤 해당 VM 의 .vmx 파일에 아래를 추가한다.
mks.vulkan.enabled = "FALSE"
mks.enableDX11Renderer = "TRUE"
.vmx 는 VM 이 실행 중일 때 수정하면 덮어써진다. 반드시 내린 상태에서 편집한다.
전역으로 적용하려면 C:\ProgramData\VMware\VMware Workstation\config.ini 에 같은 줄을 넣는다.
mks.gl.allowBlacklistedDrivers = "TRUE" 는 VMware 가 문제 있다고 판단해 제외한 드라이버를 강제로 쓰게 하는 설정이다. 원인을 우회하는 것이 아니라 오히려 불안정한 조합을 허용하는 쪽이므로 함부로 넣지 않는다.
VM 설정 → Display → Accelerate 3D graphics 를 끈다. 화면 전환이 느려지지만 Vulkan · DirectX 경로를 아예 타지 않으므로 가장 확실하다. 게스트에서 3D 를 쓰지 않는다면 이대로 두어도 된다.
반복해서 같은 지점에서 죽는다면 호스트의 셰이더 캐시가 깨졌을 수 있다.
%LOCALAPPDATA%\Temp\vmware-<사용자명>\
VMware 를 모두 종료한 뒤 이 디렉터리 내용을 지우고 다시 실행한다.
VM 디렉터리의 vmware.log 끝부분을 본다. 다음 키워드 주변에 원인이 남는다.
mks
vulkan
swapchain
device lost
Blacklisted
device lost 가 보이면 호스트 GPU 가 리셋된 것이므로 드라이버나 하드웨어 쪽을 먼저 의심한다. Blacklisted 가 보이면 VMware 가 그 드라이버 버전을 문제 있다고 판단한 것이므로 드라이버 교체가 정답이다.
| 항목 | 값 |
|---|---|
| 렌더러 | DirectX 11 (mks.vulkan.enabled = "FALSE") |
| 3D 가속 | 게스트에서 필요 없으면 끈다 |
| 호스트 GPU 드라이버 | 최신 정식 버전 |
| 게스트 디스플레이 드라이버 | VMware Tools 또는 open-vm-tools 최신 |
| 원격 데스크톱으로 호스트에 접속한 상태 | 3D 가속을 끄고 쓴다. 이 조합에서 가장 자주 터진다 |