2ff5f2f90bea54fc55129a105f25072d0420c897
MXL Multiviewer
Small Vulkan/SDL3 multiviewer for test feeds and MXL SDK video flows.
Dependencies
Install:
- CMake 3.20+
- C++20 compiler
- Vulkan loader and headers
- Vulkan driver for the target GPU
- SDL3 development package with
pkg-configsupport glslangValidator
On Ubuntu/Debian-like systems the packages are usually similar to:
sudo apt install cmake g++ pkg-config libvulkan-dev vulkan-tools glslang-tools libsdl3-dev
Check that the discrete GPU is visible:
vulkaninfo --summary
Build Without MXL SDK
This builds synthetic feeds, SMPTE bars, and no-signal mode:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
Run a synthetic v210 test grid:
./build/mxl_multiviewer --perf --grid 4x4 v210 v210 v210 v210 v210 v210 v210 v210 v210
Build With MXL SDK
Set MXL_SDK_ROOT to the SDK checkout/root that contains lib/include and build/Linux-Clang-Release/lib:
cmake -S . -B build-sdk \
-DCMAKE_BUILD_TYPE=Release \
-DMXL_MULTIVIEWER_ENABLE_MXL_SDK=ON \
-DMXL_SDK_ROOT=/path/to/mxl-sdk
cmake --build build-sdk -j
Run with an existing feed config:
./build-sdk/mxl_multiviewer --perf --grid 4x4 --config /tmp/feeds_config.json
Each feed object can include an optional label field to override the tile UI text:
{
"domain": "/tmp/mxl",
"flow": "853a9cda-0f7a-4b48-b2df-b3f628440150",
"label": "Camera 1"
}
Useful probe flags:
--v210-upload-worker
--adaptive-feed-texture
--v210-staging-memory default|cached|device-local
Example:
./build-sdk/mxl_multiviewer \
--adaptive-feed-texture \
--v210-upload-worker \
--perf \
--grid 4x4 \
--config /tmp/feeds_config.json
Notes
- Run from the repository root or keep the
shaders/directory next to the executable path expected by the app. - If SDL opens on the wrong GPU/session, try running from the desktop session attached to the discrete GPU and confirm with
vulkaninfo --summary. v210_testis a CPU-side conversion sanity check:
./build/v210_test
Description
Languages
C++
98.4%
CMake
1.2%
GLSL
0.4%