py: add rottest.py
Add a test tool for rotation
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add a test tool for rotation
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
omapfb: add TILER support
Add TILER rotation support for omapframebuffer.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add TILER rotation support for omapframebuffer.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
testpat: white box in top left corner
draw_char: use black bg for yuv
pykms: add videomode related features
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
pykmsutil: add draw_text()
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
draw_rect: support yuv modes
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
py: tests: Double buffered one big buffer on all connected screens
The test uses Atomic Mode Setting only and moves one horizontal bar
up/down in the framebuffer - which stretches through all connected
displays.
The flip mode can be selected with --flipmode <single, separate> :
single: Page flip on all displays with one request (default)
separate: Separate page flip on the displays
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
The test uses Atomic Mode Setting only and moves one horizontal bar
up/down in the framebuffer - which stretches through all connected
displays.
The flip mode can be selected with --flipmode <single, separate> :
single: Page flip on all displays with one request (default)
separate: Separate page flip on the displays
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
py: omapfb: add missing properties
connector: add DPI connector type
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add Connector.connected to pykmsbase
It can be used to check if the connector is connected or not
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
It can be used to check if the connector is connected or not
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Return primary plane already associated with the CRTC if it exists
The Crtc::get_primary_plane() method returns the first primary plane
that supports the CRTC. While being correct, this could lead to multiple
primary planes being associated with the CRTC, which can confuse
applications. To avoid that, return insead the primary plane already
associated with the CRTC if one exists, otherwise keep the current
behaviour.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
The Crtc::get_primary_plane() method returns the first primary plane
that supports the CRTC. While being correct, this could lead to multiple
primary planes being associated with the CRTC, which can confuse
applications. To avoid that, return insead the primary plane already
associated with the CRTC if one exists, otherwise keep the current
behaviour.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
py: Add in fence test using swsync
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
test.py: use atomic modesetting
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
trans-test.py: fix use of colors
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
resmgr: fix reserve_plane()
reserve_plane() had inverted check, and looked for any plane type but
the one that was requested.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
reserve_plane() had inverted check, and looked for any plane type but
the one that was requested.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
resmgr: add sanity checks
Add sanity checks to reserve_* methods, and return null if the give
connector/crtc is null.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add sanity checks to reserve_* methods, and return null if the give
connector/crtc is null.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Merge branch 'universal-planes2' of git://github.com/jsarha/kmsxx
kmstest: check return values from reserve_*
utils: add EXIT_IF
Add plane_hog.py
plane_hog.py gets all possible planes for default connector's crtc,
enables them one by one, enables hdmi connector's crtc (if available)
and moves the planes there on by one.
plane_hog.py gets all possible planes for default connector's crtc,
enables them one by one, enables hdmi connector's crtc (if available)
and moves the planes there on by one.
pykms/pykmsutil.cpp: Add binding for reserve_generic_plane()
ResourceManager: reserve_generic_plane() for either primary or overlay
Add modeset_event.py
modeset_event.py tests committing a full mode set asynchronously and
receiving a flip event about it.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
modeset_event.py tests committing a full mode set asynchronously and
receiving a flip event about it.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add a simple and hackish plane scaling test.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
py: add DrmObject.idx
Add color format related methods and memebers to pykmsbase.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add Videomode::to_blob method to pykmsbase.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
kmsprint: show plane's possible crtcs
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
plane: add get_possible_crtcs()
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
py: fix AtomicReq.commit() return value
db.py: remove old code
kmstest: Add optional argument to the flip option to limit the flips
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
New event handling
The current event handling relies on the PageFlipHandlerBase class which
has to be implemented on the python side.
This patch implements a more versatile event handling, where any python
object can be passed as data to the commit or page flip, and it's up to
the python implementation to decide what to do with that data when
receiving the event.
Note that when doing the commit or page_flip, the ref count of the
given python object is incremented to keep it alive. The ref count is
decremented when reading the events with the new helper method
card.read_events(). This helper _has_ to be used to ensure the objects
get released properly.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
The current event handling relies on the PageFlipHandlerBase class which
has to be implemented on the python side.
This patch implements a more versatile event handling, where any python
object can be passed as data to the commit or page flip, and it's up to
the python implementation to decide what to do with that data when
receiving the event.
Note that when doing the commit or page_flip, the ref count of the
given python object is incremented to keep it alive. The ref count is
decremented when reading the events with the new helper method
card.read_events(). This helper _has_ to be used to ensure the objects
get released properly.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
py: db.py: Add command line argument to specify connector
When a command line argument is present, its value is used as a
connector name that the script will try to use.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
When a command line argument is present, its value is used as a
connector name that the script will try to use.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
py: Expose AtomicReq::add(std::map<>) method
Only the AtomiqReq::add version that takes a single property is
currently exposed through the Python bindings. Expose the add method
that takes a list of properties as well.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Only the AtomiqReq::add version that takes a single property is
currently exposed through the Python bindings. Expose the add method
that takes a list of properties as well.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
kmsview: Add connector command line argument
The argument allows specifying which connector to display on. When not
set, the current behaviour is preserved.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
The argument allows specifying which connector to display on. When not
set, the current behaviour is preserved.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
test.py: add dmabuf & omap options
py: add ExtFramebuffer
omapfb: add constructor with fourcc
ExtFb: pass params in vectors
py: add DumbFb properties
improve ExtFb
Inherit MappedFramebuffer and add map()
Inherit MappedFramebuffer and add map()
ExtFb: remove legacy constructor
PlaneType to bitmask
kmstest: remove get_default_connector()
use reserve_connector from ResourceManager
kmstest: Add --view option
mappedframebuffer.h: add missing include
fix race issue in threaded test pattern draw
Support python2 based pykms binding
Previously only binding with python3 was supported, this patch allows
compilation of pykms with python3 or python2. When compiling with
python2 some of the python scripts located in the py/test will not work
since they import python3 only modules
Signed-off-by: Alejandro Hernandez <ajhernandez@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Previously only binding with python3 was supported, this patch allows
compilation of pykms with python3 or python2. When compiling with
python2 some of the python scripts located in the py/test will not work
since they import python3 only modules
Signed-off-by: Alejandro Hernandez <ajhernandez@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add README.md to custom targets
README: add note about python
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
py/tests: hpd test
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
wbcap: fix setup if a display is unconfigured
Add refresh() to connector, crtc and encoder
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
pykms: add Videomode.__repr__
py: db.py: Print frame rate at 5s intervals
Print both the number of vsyncs (as reported by the driver in flip
events) and the number of flip events. This is useful to debug frame
rate related issues.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Print both the number of vsyncs (as reported by the driver in flip
events) and the number of flip events. This is useful to debug frame
rate related issues.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
py: db.py: Rename argument to event handlers to avoid shadowing
The first argument to the key event handlers bears the same name as the
global variable that identifies the connector. Rename it to fileobj
which, in addition to being more descriptive, avoids shadowing the
global variable.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
The first argument to the key event handlers bears the same name as the
global variable that identifies the connector. Rename it to fileobj
which, in addition to being more descriptive, avoids shadowing the
global variable.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
py: Move helpers to the pykms module
Instead of forcing applications to import the helpers manually, move
them to pykms by turning it into a python module.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Instead of forcing applications to import the helpers manually, move
them to pykms by turning it into a python module.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
py: Reorganize source directory
Separate the Python bindings sources from the test scripts. While at it,
remove the unneeded run.sh script.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Separate the Python bindings sources from the test scripts. While at it,
remove the unneeded run.sh script.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
py: Expose MappedFramebuffer width and height properties
The property getters are defined as pure virtual functions in the
MappedFramebuffer class. Expose the Python properties as part of the
bindings for that class to make them available for all classes
inheriting from MappedFramebuffer.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
The property getters are defined as pure virtual functions in the
MappedFramebuffer class. Expose the Python properties as part of the
bindings for that class to make them available for all classes
inheriting from MappedFramebuffer.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
kmstest: don't reserve primary_plane if it's not needed
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
kmstest: disable crtcs & planes before modeset
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
kmstest: fix bug in setups_to_outputs()
Bad output used to get the crtc, causing crash.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Bad output used to get the crtc, causing crash.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
crtc: add disable_mode()
Add crtc::disable_mode() for disabling the crtc.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add crtc::disable_mode() for disabling the crtc.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
kmstest: use resman to get primary planes
We need to ensure that a primary plane is not already in use.
ResourceManager does this for us.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
We need to ensure that a primary plane is not already in use.
ResourceManager does this for us.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
kmscube: improve egl config prints
kmscube: fix X11 fullscreen
cmake: set C_FLAGS too
py: Add OmapCard & OmapFramebuffer support
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
py: Add MappedFramebuffer and use it
Add MappedFramebuffer to python bindings and use it for the draw
functions.
Looks like recent pybind11 versions have better multi-inheritance
support, so all this need to be revisited after updating pybind11.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add MappedFramebuffer to python bindings and use it for the draw
functions.
Looks like recent pybind11 versions have better multi-inheritance
support, so all this need to be revisited after updating pybind11.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add OmapCard and OmapFramebuffer
Add OmapCard and OmapFramebuffer classes to utilize omap_bos. Only
non-tiled framebuffer is implemented for now.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add OmapCard and OmapFramebuffer classes to utilize omap_bos. Only
non-tiled framebuffer is implemented for now.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
kmstest: use MappedFramebuffer
Use MappedFramebuffer instead of DumbFramebuffer in kmstest, except when
creating the object. This change makes it possible to easily use other
framebuffer objects in kmstest than DumbFramebuffer.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Use MappedFramebuffer instead of DumbFramebuffer in kmstest, except when
creating the object. This change makes it possible to easily use other
framebuffer objects in kmstest than DumbFramebuffer.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add MappedFramebuffer
Add a base MappedFramebuffer class, which inherits Framebuffer and
implements IMappedFramebuffer. This helps to implement platform
specific framebuffer classes, like OmapFramebuffer.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add a base MappedFramebuffer class, which inherits Framebuffer and
implements IMappedFramebuffer. This helps to implement platform
specific framebuffer classes, like OmapFramebuffer.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
dumbfb: pass O_RDWR to drmPrimeHandleToFD()
This enables write access to the dumb fb with mmap().
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
This enables write access to the dumb fb with mmap().
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
modedb_dmt: update table
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add DMT script
Add script to auto-generate DMT tables.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add script to auto-generate DMT tables.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
kmstest: be explicit about mode selection
Instead of searching through the dmt and cea tables (if user has given
the option), lets be more explicit about it. Only look for the mode from
a single source, and fail if not found there.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Instead of searching through the dmt and cea tables (if user has given
the option), lets be more explicit about it. Only look for the mode from
a single source, and fail if not found there.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
kmstest: add --cvt option
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
kms++: add videomode_from_cvt()
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add comment about ilace
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Travis: only build master & travis
Travis: use VERBOSE=1
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Travis: set -Wno-maybe-uninitialized for gcc-4.9
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Travis: treat warnings as errors
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add cmake option for -Werror
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
travis: add my email
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
remove -rdynamic gcc flag
This reduces the exe sizes.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
This reduces the exe sizes.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
travis: improve .travis.yml
Travis: test different gcc versions
kmstest: enable display even if crtc doesn't have fb
With atomic modesetting we can enable the crtc without a primary plane.
This allows enabling only a plane on the screen.
Change set_crtcs_n_planes() to allow this.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
With atomic modesetting we can enable the crtc without a primary plane.
This allows enabling only a plane on the screen.
Change set_crtcs_n_planes() to allow this.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
README: travis icon
travis: enable kmscube
Add Travis CI
Improve mode finding
Change calculated_vrefresh to round to 2 decimals, and do two rounds
when looking for a mode: first look for exact vrefresh match, then look
for rounded match.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Change calculated_vrefresh to round to 2 decimals, and do two rounds
when looking for a mode: first look for exact vrefresh match, then look
for rounded match.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Improve LTO detection code
Split LTO detection into separate func and file, and create a cached
LTO_WORKS variable.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Split LTO detection into separate func and file, and create a cached
LTO_WORKS variable.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Fix LTO detection
Catch gcc-ar and gcc-ranlib versions compiled without plugin support and
disable LTO in that case.
Also do the LTO check only once by checking if HAS_LTO_FLAG has been set.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Catch gcc-ar and gcc-ranlib versions compiled without plugin support and
disable LTO in that case.
Also do the LTO check only once by checking if HAS_LTO_FLAG has been set.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
kmsprint: fix prints
Card: virtual destructor
Add virtual destructor so Card can be inherited.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add virtual destructor so Card can be inherited.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>