我在最新版本的 Debian Bookworm 64 位上使用 Raspberry Pi 4,需要在 VNC 会话中使用 Vulkan。连接到屏幕时,它可以工作:vkcube
打开一个带有 3D 旋转立方体的窗口。但是,在 VNC 会话中使用相同命令时,它会失败:vkcube
返回“vulkan:未检测到 DRI3 支持...”。VNC 会话通过以下方式启动TightVNC。
我检查了这两种情况下的输出vulkaninfo
,唯一的区别是,当连接到屏幕时,两个 GPU 会出现在美观的表面部分,而不是在 VNC 会话中使用该命令时的一个部分。附加 gpu 定义如下:
GPU id : 0 (V3D 4.2.14):
Surface types: count = 2
VK_KHR_xcb_surface
VK_KHR_xlib_surface
Formats: count = 2
SurfaceFormat[0]:
format = FORMAT_B8G8R8A8_SRGB
colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
SurfaceFormat[1]:
format = FORMAT_B8G8R8A8_UNORM
colorSpace = COLOR_SPACE_SRGB_NONLINEAR_KHR
Present Modes: count = 4
PRESENT_MODE_IMMEDIATE_KHR
PRESENT_MODE_MAILBOX_KHR
PRESENT_MODE_FIFO_KHR
PRESENT_MODE_FIFO_RELAXED_KHR
VkSurfaceCapabilitiesKHR:
-------------------------
minImageCount = 3
maxImageCount = 0
currentExtent:
width = 256
height = 256
minImageExtent:
width = 256
height = 256
maxImageExtent:
width = 256
height = 256
maxImageArrayLayers = 1
supportedTransforms: count = 1
SURFACE_TRANSFORM_IDENTITY_BIT_KHR
currentTransform = SURFACE_TRANSFORM_IDENTITY_BIT_KHR
supportedCompositeAlpha: count = 2
COMPOSITE_ALPHA_OPAQUE_BIT_KHR
COMPOSITE_ALPHA_INHERIT_BIT_KHR
supportedUsageFlags: count = 6
IMAGE_USAGE_TRANSFER_SRC_BIT
IMAGE_USAGE_TRANSFER_DST_BIT
IMAGE_USAGE_STORAGE_BIT
IMAGE_USAGE_COLOR_ATTACHMENT_BIT
IMAGE_USAGE_INPUT_ATTACHMENT_BIT
IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
VkSurfaceCapabilities2EXT:
--------------------------
supportedSurfaceCounters:
None
VkSurfacePresentModeCompatibilityEXT:
-------------------------------------
presentModeCount = 1
pPresentModes: count = 1
VkSurfacePresentScalingCapabilitiesEXT:
---------------------------------------
supportedPresentScaling:
None
supportedPresentGravityX:
None
supportedPresentGravityY:
None
minScaledImageExtent:
width = 256
height = 256
maxScaledImageExtent:
width = 256
height = 256
VkSurfaceProtectedCapabilitiesKHR:
----------------------------------
supportsProtected = false
我想我必须在打开 VNC 服务器时指向这个额外的 GPU,但没有找到如何做到这一点。
当前,VNC 服务器已启动systemctl
并具有以下 .service 文件:
[Unit]
Description=Open a virtual session on boot with user "capteur"
After=multi-user.target
[Service]
Type=forking
User=capteur
ExecStartPre=sleep 20
ExecStart=vncserver
[Install]
WantedBy=multi-user.target
xstartup 脚本是默认脚本:
#!/bin/sh
xrdb "$HOME/.Xresources"
xsetroot -solid grey
#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
# Fix to make GNOME work
export XKL_XMODMAP_DISABLE=1
/etc/X11/Xsession
最后,我看到了这个帖子问题可能来自于/etc/X11/xorg.conf.d,但我自己找不到修复它的方法。所以这是我的/etc/X11/xorg.conf.d目录(同样是默认目录):
Section "OutputClass"
Identifier "vc4"
MatchDriver "vc4"
Driver "modesetting"
Option "PrimaryGPU" "true"
EndSection
我还注意到两个文件vnc服务器-虚拟-vnc.conf和vncserver-虚拟-虚拟主机.conf坐在/etc/X11/所以也许它们也应该被编辑。
有没有办法在 VNC 会话中启用 DRI3?如果可以,我遗漏了什么?
我希望有人能帮助我,再见!
注意:由于我不知道这更像是 Raspberry Pi 问题还是 Linux 问题,所以我在 forum.Raspberrypi 上发了完全相同的帖子。如果问题在那里得到解决,我会更新此帖子,反之亦然
答案1
似乎只有在使用最新版本的 Debian Bookworm(2024_03_13 及更高版本)时才会遇到此问题。恢复到 2023_12_05 版本即可解决此问题。可以找到那里