在 Linux 上使用 MIT-SHM X11 擴展
我試圖讓 Blender 在一個設置上工作,其中 Blender 本身在遠端機器上執行,並且它的 UI 通過 X11 呈現給本地機器。
詳細資訊可在此處獲得。
這似乎是一個經常需要的案例,Blender 本身可以通過blender.org
blender-softwaregl
的 zip 存檔下載選項提供的執行檔執行,但最高版本為 2.79。在 2.80 版上,同一個執行檔似乎正在嘗試設置一個需要 MIT-SHM X11 擴展的共享記憶體“對象”。
具體來說,Blender 的執行檔(在遠端機器終端中)抱怨:
error code: 159
,request code: 143
,minor code: 34
,error text: 159
最後以:Xlib:顯示“localhost:10.0”上缺少副檔名“MIT-SHM”。
此後,本地電腦上的 X11 視窗保持打開狀態,就好像軟體執行沒有問題,但沒有顯示 Blender 的 GUI。
同時,隨著滑鼠沿著本地X11視窗拖動,遠端終端仍然會
XLib: extension "MIT-SHM"...
報錯。我試圖找到有關使用 MIT-SHM(安裝、配置、啟用/禁用等)的更多資訊,但除此之外,我沒有太多運氣。
雖然我仍在努力,但我會感謝任何人對 MIT-SHM 的幫助,因為我懷疑 Blender 不是唯一可能使用它的軟體。這似乎是一個很酷的 X11 功能,但我認為我無法在我的設置伺服器上執行的 Ubuntu 仿生 18.04 上完全控制它。
- 如何啟用 MIT-SHM 以使其顯示在
xdpyinfo
列表中?- 我應該安裝一組特定的庫才能使其完全工作嗎?
- 它的使用是否暗示了其他任何東西?(例如,我是否需要啟用任何額外的埠才能使此功能正常工作?)
您不能從遠端 X11 客戶端使用 MIT-SHM。
想想它的首字母縮略詞:SHM = 共享記憶體。如果客戶端和伺服器執行在不同的機器上,那就不能共享記憶體。
XPutImage
該擴展應該通過使用 SySV 共享記憶體 API 而不是通過套接字(例如->XShmPutImage
)寫入來加速 X11 請求,這些請求正在傳輸大量數據。它對現代電腦的好處是恕我直言。