Files
mxl-multiviewer/README.md
2026-05-24 21:28:11 +03:00

100 lines
2.1 KiB
Markdown

# 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-config` support
- `glslangValidator`
On Ubuntu/Debian-like systems the packages are usually similar to:
```bash
sudo apt install cmake g++ pkg-config libvulkan-dev vulkan-tools glslang-tools libsdl3-dev
```
Check that the discrete GPU is visible:
```bash
vulkaninfo --summary
```
## Build Without MXL SDK
This builds synthetic feeds, SMPTE bars, and no-signal mode:
```bash
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
```
Run a synthetic v210 test grid:
```bash
./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`:
```bash
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:
```bash
./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:
```json
{
"domain": "/tmp/mxl",
"flow": "853a9cda-0f7a-4b48-b2df-b3f628440150",
"label": "Camera 1"
}
```
Useful probe flags:
```bash
--v210-upload-worker
--adaptive-feed-texture
--v210-staging-memory default|cached|device-local
```
Example:
```bash
./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_test` is a CPU-side conversion sanity check:
```bash
./build/v210_test
```