Introduction
Overview
The framebuffer device is a device-independent interface for reading and writing raw data to the video memory. Uses of the device typically include things like text consoles, graphical boot progress indicators and so on. It is also possible to use the framebuffer device as a X11 window system display device.
The framebuffer device is typically used by memory-mapping the device file. The fbdev kernel driver translates any operations to the device-specific display driver. The blts-fbdev-tests asset tests the functionality and performance of this subsystem.
The display backlight driver registers a sysfs based directory upon device activation. This is how the blts-fbdev-tests asset uses the backlight system to change display brightness.
Getting the Latest Version
Sources can be found in gitorius:
To clone a copy of the repository, see guides in:
Latest binary release is planned to be available via MeeGo OBS, see MeeGo Build Infrastructure for more information.
Support & Contacts
- IRC: miniinis in #meego-qa-mcts on irc.freenode.org
- Maintainer: Mika Niinisto
- Substitute: Jussi Saavalainen
- Bugs should be reported to MeeGo Bugzilla:
Documentation
Check the package README file (essentially contains same info as this page):
Licensing
- Please see the file called COPYING
Supported Devices and SW
- List of supported (+ not supported devices, if needed for clarity)
- Versions
- Info about what is known to work
Supported
- N900
- nCDK Medfield (starting from version x.z)
Not supported
- Info about supported MeeGo releases (?)
Test Cases
- Core-Framebuffer read frame buffer information with ioctl
- Reads variant and fixed screen information from frame buffer device(s).
- Core-Framebuffer set blanking levels
- Tests each of the blanking levels on all configured framebuffer devices.
- Core-Framebuffer 1-pixel uncached read
- Performance test of reading visible framebuffer pixel by pixel. Uses rusage to estimate the CPU usage %. Prints information about the test and framebuffer into the log and standard output. Done for all configured framebuffer devices.
- Core-Framebuffer 1-pixel uncached write
- Performance test of writing into visible framebuffer pixel by pixel. Uses rusage to estimate the CPU usage %. Prints information about the test and framebuffer device into the log and standard output. Done for all configured framebuffer devices.
- Core-Framebuffer 1-pixel uncached modify
- Performance test of both reading and vriting into visible framebuffer pixel by pixel. Uses rusage to estimate the CPU usage %. Prints information about the test and framebuffer into the log and and stadard output. Done for all configured framebuffer devices.
- Core-Framebuffer fullscreen buffer read
- Performance test of reading a fullscreen framebuffer at once. Uses rusage to estimate the CPU usage %. Prints information about the test and framebuffer into the log and standard output. Done for all configured devices.
- Core-Framebuffer fullscreen buffer write
- Performance test of writing into a fullscreen framebuffer at once. Uses rusage to estimate the CPU usage %. Prints information about the test and framebuffer into the log and standard output. Done for all configured devices.
- Core-Framebuffer fullscreen buffer modify
- Performance test of both reading and writing into a fullscreen framebuffer at once. Uses rusage to estimate the CPU usage %. Prints information about the test and framebuffer into the log and standard output. Done for all configured devices.
- Core-Backlight verify backlight levels
- Verify backlight system's backlight level limits against configured limits. Tests the limit values, by using the actual limit and going one step over it.
- Core-Backlight linear backlight level changes
- Linearly goes through all values between configured minimum and maximum values, by first going from min -> max and then from max -> min. NOTE: This case can timeout if the min and max are very big. The case sleeps for two seconds between each step.
- Core-Backlight logarithmic backlight level changes
- Goes through all values between configured minimum and maximum values, by going from min -> max. The values are increased by following pattern: (max light / log10 (max light)) * log10 (between min and max). NOTE: This case can timeout if the min and max are very big. The case sleeps for two seconds between each step.
Coverage
blts-fbdev-tests (0.0.8) is testing Linux kernel framebuffer ioctls and backlight subsystem via sysfs.
Current framebuffer coverage matrix:
Running the Tests
Hardware setup and test environment
- What SW is needed? What packages need to be installed? What versions?
- What HW is needed? What versions?
- How to get accurate measurement results?
- Step-by-step guide for checking that prerequisites are met
- HW version
- Installed packages
- Etc.
Building packages
The build environment must have the following packages installed:
-
The source package includes the pack.sh script, which is used for building RPM and Debian packages and source tar packages. To build an RPM package with the script, execute this command in the top level source directory of asset:
./pack.sh -r
To get help about the packaging script, execute
./pack.sh -h
The asset can also be built manually by executing:
./autogen.sh
./configure
make
Running test cases
- Step-by-step instructions how to execute tests with an example
- Root or user privileges?
- What to do if something goes wrong?
- How to run in debug mode?
- What to look in log files?
Test result analysis
- Where are the results?
- Log files?
Troubleshooting
- What to do if something fails?
- What to check first?
Configuration file examples
- Configuration file explained
- Example of configuration file
Module Design and Architecture
Architecture
The test asset (blts-fbdev-tests) is built directly on top of the Linux kernel. Backlight tests use sysfs to test the functionality. The asset has been test to work with at least following Linux kernel versions: 2.6.28, 2.6.31 and 2.6.32.
Known issues
- The backlight cases take a lot of time. These cases try to go through all defined backlight levels. Might be better to define amount of steps or something similar into configuration.
- Check for open bugs: MeeGo Core Test Suite Bugs
Future improvements
- List of planned future improvements
- Later, link to backlog items to be done
References