py: Add Card crtcs and encoders properties back to the Python bindings

Commit 706a44abb3aa ("Update to latest pybind11") removed the crtcs and
encoders properties from the Card class. Add them back by wrapping the
associated C++ methods manually due to a limitation of pybind11.

Fixes: 706a44abb3aa ("Update to latest pybind11")
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
1 file changed
tree: e6d7ce662464cb4067ed77f42a0753f91c02e8a5
  1. ext/
  2. kms++/
  3. kms++util/
  4. kmscube/
  5. py/
  6. scripts/
  7. utils/
  8. .gitignore
  9. .gitmodules
  10. .travis.yml
  11. CMakeLists.txt
  12. LICENSE
  13. LTO.cmake
  14. README.md
  15. TODO
README.md

Build Status

kms++ - C++ library for kernel mode setting

kms++ is a C++11 library for kernel mode setting.

Also included are some simple utilities for KMS and python bindings for kms++.

Utilities

  • kmstest - set modes and planes and show test pattern on crtcs/planes, and test page flips
  • kmsprint - print information about DRM objects
  • kmsview - view raw images
  • kmscube - rotating 3D cube on crtcs/planes
  • kmscapture - show captured frames from a camera on screen

Dependencies:

  • libdrm
  • Python 3.x (for python bindings)

Build instructions:

To build the Python bindings you need to set up the git-submodule for pybind11:

git submodule update --init

And to compile:

$ mkdir build
$ cd build
$ cmake ..
$ make -j4

Cross compiling instructions:

Directions for cross compiling depend on your environment.

These are for mine with buildroot:

$ mkdir build
$ cd build
$ cmake -DCMAKE_TOOLCHAIN_FILE=<buildrootpath>/output/host/usr/share/buildroot/toolchainfile.cmake ..
$ make -j4

Your environment may provide similar toolchainfile. If not, you can create a toolchainfile of your own, something along these lines:

SET(CMAKE_SYSTEM_NAME Linux)

SET(BROOT "<buildroot>/output/")

# specify the cross compiler
SET(CMAKE_C_COMPILER   ${BROOT}/host/usr/bin/arm-buildroot-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER ${BROOT}/host/usr/bin/arm-buildroot-linux-gnueabihf-g++)

# where is the target environment
SET(CMAKE_FIND_ROOT_PATH ${BROOT}/target ${BROOT}/host)

SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

Build options

You can use the following cmake flags to control the build. Use -DFLAG=VALUE to set them.

Option nameValuesDefaultNotes
CMAKE_BUILD_TYPERelease/DebugRelease
BUILD_SHARED_LIBSON/OFFOFF
KMSXX_ENABLE_PYTHONON/OFFON
KMSXX_ENABLE_KMSCUBEON/OFFOFF
KMSXX_PYTHON_VERSIONpython3/python2python3;python2Name of the python pkgconfig file

Env variables

You can use the following runtime environmental variables to control the behavior of kms++.

VariableDescription
KMSXX_DISABLE_UNIVERSAL_PLANESSet to disable the use of universal planes
KMSXX_DISABLE_ATOMICSet to disable the use of atomic modesetting

Python notes

You can run the python code directly from the build dir by defining PYTHONPATH env variable. For example:

PYTHONPATH=build/py py/tests/hpd.py