# Virtualization workstation with the Intel Arc Pro B50

> Source: <https://forum.level1techs.com/t/virtualization-workstation-with-the-intel-arc-pro-b50/243577?page=2#post_26>
> Published: 2026-11-11 18:57:40+00:00

After my adventures on [local LLM hosting](https://forum.level1techs.com/t/poor-er-mans-local-ai/252071) and putting it to work with [OpenFromSource](https://forum.level1techs.com/t/openfromsource/259444), I finally got to come full circle.

You know, OpenFromSource has more overlap with the current thread than meets the eye.

First and foremost, I saw it as a natural progression on the computer hygiene concept from the first post.

It also lowered the bar (for me) to apply the Hyprland mod from [@the_vgpu_supplier](https://forum.level1techs.com/u/the_vgpu_supplier). Probably too much to dive into here, but I did dedicate a [full tutorial](https://github.com/ingenerics/OpenFromSource.Tutorials/blob/main/tutorials/6_hyprland_from_source.md) on aligning a legacy version of Hyprland with Debian Trixie using OpenFromSource.

Behold, 3 active VFs with (simulated) hardware accelerated graphics. Wendell through [looking-glass](https://looking-glass.io/) and a couple of linux guests with (light) action.

A single B50 providing the juice

``` php
Driver 32.0.101.6979
-> max VFs = 12
-> num VFs = 4
Kernel 7.2.9
-> (can be) used to cap VF max memory
```

When I first got `remmina` and `rustdesk` working with the headless VM, I was surprised by the lag (like when typing). Especially with the host and the guest being on the same box.

After a brainstorming session with my [local DeepSeek](https://huggingface.co/deepseek-ai/DeepSeek-V4-Flash-0731), turned out the default capture chain with `rustdesk` on wayland looks like this:

```
Hyprland ──zwlr_screencopy──► xdph (portal backend)
                                    │  PipeWire (Video/Source, DMA-BUF + SHM)
                                    ▼
                        pipewiresrc (gstreamer consumer)
                                    │  videoconvert ! appsink(BGRx/RGBx)
                                    ▼
                          rustdesk encoder ──► viewer (direct IP)
```

It’s generic, of course, which can definitely be a plus, but with direct IP access I just wanted to get the best performance on Hyprland (without a full rewrite). Decided to surgically remove the `gstreamer` part…

… and directly throw the native wayland screencopy over the fence.

Performance benefit per frame, stock vs direct:

```
STOCK      compositor → wlroots screencopy → xdph buffer
           → memcpy → PipeWire buffer
           → pipewiresrc (always-copy=true → memcpy → gstreamer)
           → videoconvert (full conversion)
           → appsink → encoder
           ≈ 3–4 full-frame copies + 1 conversion/frame
           ≈ 14.7 MB × ~4 passes ≈ 1.7 GB/s memcpy at 30 fps on 2560×1440

DIRECT     compositor renders INTO our SHM buffer → encoder
           = 0 copies, 0 conversion
```

I wouldn’t go as far as saying it now performs like looking-glass, but for productivity it’s definitely what I was hoping for.
