Dependencies

For better dependency version control underview builds all packages required from source.

Build Underview Depends

Follow build-underview-depends repo README to get going.

$ git clone https://github.com/under-view/build-underview-depends.git
$ source setenvars.sh

Yocto Project SDK

Download SDK from build-underview-depends (releases)

$ ./x86_64-0.1.0-underview.sh
sdk # Folder to place libs
$ source environment-setup-zen1-underview-linux

Meson

Options

All options/features are disabled by default.

 1c_std=c11
 2buildtype=release
 3default_library=shared
 4gpu=integrated    # Default [discrete] Options: [integrated, discrete, cpu]
 5kms=enabled       # Default [disabled]
 6libseat=enabled   # Default [disabled]
 7libinput=enabled  # Default [disabled]
 8xcb=enabled       # Default [disabled]
 9wayland=enabled   # Default [disabled]
10shaderc=enabled   # Default [disabled]
11debugging=enabled # Default [disabled]
12examples=true     # Default [false]
13tests=true        # Default [false]
14docs=true         # Default [false]

Build (Normal)

$ meson setup [options] build
$ ninja -C build -j$(nproc)
# Discrete GPU (Normally test with AMDGPU [Radeon 6600])
$ meson setup -Dgpu="discrete" \
              -Dexamples="true" \
              -Dtests="true" \
              -Ddebugging="enabled" \
              -Dshaderc="disabled" \
              -Dxcb="enabled" \
              -Dwayland="enabled" \
              -Dkms="enabled" \
              -Dlibseat="enabled" \
              -Dlibinput="enabled" \
              build
# Embedded GPU (Normally test on the Udoo Bolt v3)
$ meson setup -Dgpu="integrated" \
              -Dexamples="true" \
              -Dtests="true" \
              -Ddebugging="disabled" \
              -Dshaderc="disabled" \
              -Dxcb="enabled" \
              -Dwayland="enabled" \
              -Dkms="enabled" \
              -Dlibseat="enabled" \
              -Dlibinput="enabled" \
              build

Build (SDK)

# For Yocto SDK builds
$ meson setup --prefix="${SDKTARGETSYSROOT}/usr" \
              --libdir="${SDKTARGETSYSROOT}/usr/lib64" \
              [options] \
              build
$ ninja -C build -j$(nproc)
# Discrete GPU (Normally test with AMDGPU [Radeon 6600])
$ meson setup --prefix="${SDKTARGETSYSROOT}/usr" \
              --libdir="${SDKTARGETSYSROOT}/usr/lib64" \
              -Dgpu="discrete" \
              -Dexamples="true" \
              -Dtests="true" \
              -Ddebugging="enabled" \
              -Dshaderc="disabled" \
              -Dxcb="enabled" \
              -Dwayland="enabled" \
              -Dkms="enabled" \
              -Dlibseat="enabled" \
              -Dlibinput="enabled" \
              build
# Embedded GPU (Normally test on the Udoo Bolt v3)
$ meson setup --prefix="${SDKTARGETSYSROOT}/usr" \
              --libdir="${SDKTARGETSYSROOT}/usr/lib64" \
              -Dgpu="integrated" \
              -Dexamples="true" \
              -Dtests="true" \
              -Ddebugging="disabled" \
              -Dshaderc="disabled" \
              -Dxcb="enabled" \
              -Dwayland="enabled" \
              -Dkms="enabled" \
              -Dlibseat="enabled" \
              -Dlibinput="enabled" \
              build

Include

1# Clone kmsroots or create a kmsroots.wrap under <source_root>/subprojects
2project('name', 'c')
3
4kmsroots_dep = dependency('kmsroots', fallback : 'kmsroots', 'kmsroots_dep')
5
6executable('exe', 'src/main.c', dependencies : kmsroots_dep)

Documentation (Sphinx)

kmsroots uses sphinx framework for documentation. Primarily utilizing The C Domain.

https://www.sphinx-doc.org/en/master/man/sphinx-build.html

Dependencies

  • python3-pip

Build Docs

$ git clone https://github.com/under-view/kmsroots.git
$ cd kmsroots
$ sudo pip3 install -r docs/requirements.txt

# If no build directory exists
$ meson setup -Ddocs=true build

# If build directory exists
$ meson configure -Ddocs=true build

$ ninja docs -C build

Running Examples

Normal

# Examples can exit with either CTRL-C, ESC, or Q.
$ ./build/examples/xcb/kmsroots-xcb-client-*
$ ./build/examples/wayland/kmsroots-wayland-client-*
$ ./build/examples/wayland/kmsroots-kms-*

# https://github.com/swaywm/wlroots/wiki/DRM-Debugging
# Enable verbose DRM logging
$ echo "0x19F" | sudo tee "/sys/module/drm/parameters/debug"

Yocto Project SDK

# Vulkan loader can't find ic driver set LD_LIBRARY_PATH so it's discoverable
# Examples can exit with either CTRL-C, ESC, or Q.
$ LD_LIBRARY_PATH="${SDKTARGETSYSROOT}/usr/lib64" ./build/examples/xcb/kmsroots-xcb-client-*
$ LD_LIBRARY_PATH="${SDKTARGETSYSROOT}/usr/lib64" ./build/examples/wayland/kmsroots-wayland-client-*
$ LD_LIBRARY_PATH="${SDKTARGETSYSROOT}/usr/lib64" ./build/examples/wayland/kmsroots-kms-*