Skip to content

Expose a host-backed hardware video encoder to Windows guests #104

Open

Description

@yadue

Problem

Windows 11 ARM64 guests receive 3D acceleration through VMPal VirtIO GPU 3D, but no hardware video encoder is exposed to the guest. Applications that require hardware H.264 encoding fail even though the Apple silicon host provides hardware encoding through VideoToolbox.

Environment

  • VMPal 0.111
  • Windows 11 Pro 24H2 ARM64
  • VMPal VirtIO GPU 3D driver 100.6.101.58114
  • Apple silicon host

Reproduction

ffmpeg -hide_banner -loglevel error -f lavfi -i "testsrc2=size=1280x720:rate=30" -t 1 -c:v h264_mf -hw_encoding 1 -f null NUL

Result:

could not find any MFT for the given media type
could not create MFT

The common vendor backends are also unavailable:

  • NVENC: Cannot load nvcuda.dll
  • AMD AMF: DLL amfrt64.dll failed to open
  • Intel QSV: Error creating a MFX session: -9

Software encoding with libx264 works.

One affected application is GoTestify Contribute 2.1.9, which reports:

GPU hardware encoding is not available on this system

GoTestify currently detects vendor-specific encoders, so it would also need to support a standard virtual encoder backend. However, the guest currently has no hardware encoder surface at all.

Feature request

Could VMPal expose host-backed H.264/HEVC encoding to Windows guests using Apple VideoToolbox, preferably as a Windows Media Foundation hardware MFT or a documented virtual-device API?

Suggested verification:

  • Windows enumerates a hardware H.264 encoder.
  • The FFmpeg command above encodes 1280x720 at 30 fps.
  • Supported guest versions, formats, resolutions, and limitations are documented.

This would complement the existing 3D acceleration for recording, streaming, and other applications that require hardware-only video encoding.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions