Skip to content

kalyankondapally/piglit

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Piglit
------
1. About
2. Setup
3. How to run tests
4. Available test sets
5. How to write tests
6. Todo


1. About
--------

Piglit is a collection of automated tests for OpenGL and OpenCL
implementations.

The goal of Piglit is to help improve the quality of open source
OpenGL and OpenCL drivers by providing developers with a simple means to
perform regression tests.

The original tests have been taken from
- Glean ( http://glean.sf.net/ ) and
- Mesa ( http://www.mesa3d.org/ )


2. Setup
--------

First of all, you need to make sure that the following are installed:

  - Python 2.7.x
  - Python Mako module
  - numpy (http://www.numpy.org)
  - cmake (http://www.cmake.org)
  - GL, glu and glut libraries and development packages (i.e. headers)
  - X11 libraries and development packages (i.e. headers)
  - waffle (http://www.waffle-gl.org)

Optionally, you can install the following:

  - nose. A python test framework, used for running the python framework
    test suite. (https://nose.readthedocs.org/en/latest/)
  - lxml. An accelerated python xml library using libxml2 (http://lxml.de/)
  - simplejson. A fast C based implementation of the python json library.
    (https://simplejson.readthedocs.org/en/latest/)

Now configure the build system:

  $ ccmake .

This will start cmake's configuration tool, just follow the onscreen
instructions. The default settings should be fine, but I recommend you:
 - Press 'c' once (this will also check for dependencies) and then
 - Set "CMAKE_BUILD_TYPE" to "Debug"
Now you can press 'c' again and then 'g' to generate the build system.
Now build everything:

  $ make


2.1 Cross Compiling
-------------------

On Linux, if cross-compiling a 32-bit build on a 64-bit host, then you must
invoke cmake with option "-DCMAKE_SYSTEM_PROCESSOR=i386".


2.2 Ubuntu
----------

Install development packages.
  $ sudo apt-get install cmake g++ mesa-common-dev libgl1-mesa-dev python-numpy python-mako freeglut3-dev x11proto-gl-dev libxrender-dev

Install additional components for which Ubuntu packages do not yet exist:
  - waffle (http://www.waffle-gl.org)

Configure and build.
  $ cmake .
  $ make


2.3 Mac OS X
------------

Install CMake. 
http://cmake.org/cmake/resources/software.html
Download and install 'Mac OSX Universal' platform.

Install Xcode.
http://developer.apple.com/xcode

Configure and build.
  $ cmake .
  $ make

glean

glean will not build with MacOSX10.7.sdk. If you are trying to 
build glean on Mac OS 10.7 (Lion), you will have to use MacOSX10.6.sdk.
  $ ccmake .
Set 'CMAKE_OSX_SYSROOT' to '/Developer/SDKs/MacOSX10.6.sdk'. Configure. 
Generate and exit.
  $ make


2.4 Cygwin
----------

Install development packages.
  - cmake
  - gcc4
  - make
  - opengl
  - libGL-devel
  - python
  - python-numpy
  - libglut-devel
  - libGLU-devel

Configure and build.
  $ cmake .
  $ make


2.5 Windows
-----------

Install Python.
http://www.python.org/download

Install NumPy.
http://sourceforge.net/projects/numpy/files/NumPy

Install CMake.
http://cmake.org/cmake/resources/software.html
Download and install 'Windows' platform.

Install Microsoft Visual Studio 2013 or later.
Install 'Visual C++' feature.

Download OpenGL Core API and Extension Header Files.
http://www.opengl.org/registry/#headers
Copy header files to MSVC.
C:\Program Files\Microsoft Visual Studio 12.0\VC\include\GL

Download freeglut for MSVC.
http://www.transmissionzero.co.uk/software/freeglut-devel

Install pip.
http://www.pip-installer.org/en/latest/installing.html

Install python mako.
  > c:\Python27\Scripts\pip.exe install mako

Open Visual Studio Command Prompt.
Start Menu->All Programs->Visual Studio 2013->Visual Studio Tools->VS2013 x86 Native Tools Command Prompt
CD to piglit directory.

Run CMake GUI.
  > C:\Program Files\CMake 2.8\bin\cmake-gui.exe .
Configure
  - NMake Makefiles
  - Use default native compilers
Set these variables in the Advanced view.
  - GLUT_INCLUDE_DIR
  - GLUT_glut_LIBRARY
Configure
Generate
File->Exit

Build from the Visual Studio Command Prompt.
  > nmake


3. How to run tests
-------------------

Make sure that everything is set up correctly:

  $ ./piglit run tests/sanity results/sanity.results

You may include '.py' on the profile, or you may exclude it (sanity vs sanity.py),
both are equally valid.

Use

  $ ./piglit run
  or
  $ ./piglit run -h

To learn more about the command's syntax. Have a look into the tests/
directory to see what test profiles are available:

  $ ls tests/*.py

See also section 4.

To create some nice formatted test summaries, run

  $ ./piglit summary html summary/sanity results/sanity.results

Hint: You can combine multiple test results into a single summary.
      During development, you can use this to watch for regressions:

  $ ./piglit summary html summary/compare results/baseline.results results/current.results

      You can combine as many testruns as you want this way (in theory;
      the HTML layout becomes awkward when the number of testruns increases)

Have a look at the results with a browser:

  $ xdg-open summary/sanity/index.html

The summary shows the 'status' of a test:

 pass   This test has completed successfully.

 warn   The test completed successfully, but something unexpected happened.
        Look at the details for more information.

 fail   The test failed.

 crash  The test binary exited with a non-zero exit code

 skip   The test was skipped.

 timeout  The test ran longer than its allotted time and was forcibly killed.
         

There are also dmesg-* statuses. These have the same meaning as above, but are
triggered by dmesg related messages.


4. Available test sets
----------------------

Test sets are specified as Python scripts in the tests directory.
The following test sets are currently available:


4.1 OpenGL Tests 
----------------

sanity.py
    This suite contains minimal OpenGL sanity tests. These tests must
    pass, otherwise the other tests will not generate reliable results.

all.py
    This suite contains all OpenGL tests.

quick.py
    Run all tests, but cut down significantly on their runtime
    (and thus on the number of problems they can find).
    In particular, this runs Glean with the --quick option, which
    reduces the number of visuals and state combinations tested.

gpu.py
	A further reduced set of tests from quick.py, this runs tests only
	for hardware functionality and not tests for the software stack.

radeon.py
r300.py
r500.py
    These test suites are adaptations of all.tests, with some tweaks
    to account for hardware limitations in Radeon chips.


4.2 OpenCL Tests
----------------

cl.py
    This suite contains all OpenCL tests.

quick_cl.py
    This runs all of the tests from cl.py as well as tests from opencv
	and oclconform.


4.3 External Integration
------------------------

xts.py
	Support for running the X Test Suite using piglit.

igt.py
	Support for running Intel-gpu-tools test suite using piglit.


5. How to write tests
---------------------

Every test is run as a separate process. This minimizes the impact that
severe bugs like memory corruption have on the testing process.

Therefore, tests can be implemented in an arbitrary standalone language.
C is the prefered language for compiled tests, piglit also supports its own
simple formats for test shaders and glsl parser input.

All new tests must be added to the appropriate profile, all.py profile for
OpenGL and cl.py for OpenCL. There are a few basic test classes supported by the
python framework:

 GleanTest
   This is a test that is only used to integrate Glean tests

 PiglitBaseTest
   A shared base class for all native piglit tests.

   It starts each test as a subprocess, captures stdout and stderr, and waits
   for the test to return.
   
   It provides test timeouts by setting the instances 'timeout' attribute to an
   integer > 0 which is the number of seconds the test should run.

   It interprets output by reading stdout and looking for 'PIGLIT: ' in the
   output, and then reading any trailing characters as well formed json
   returning the test result.

   This is a base clas and shouldn't be used directly, but provides an
   explination of the bahvior of the following classes

 PiglitGLTest
   A test class for native piglit OpenGL tests.

   In addition to the properties of PiglitBaseTest it provides a mechanism for
   detecting test window resizes and rerunning tests as well as keyword
   arguments for platform requirements.

 PiglitCLTest
   A test class for native piglit OpenCL tests.

   It currently provides no specail features

 GLSLParserTest
   A class for testing a glsl parser.

   It is generally unecissary to call this class directly as it uses a helper
   function to search directories for tests

 ShaderTest
   A class for testing using OpenGL shaders

   It is generally unecissary to call this class directly as it uses a helper
   function to search directories for tests

About

piglit is an OpenGL test suite

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 77.0%
  • C++ 13.6%
  • Python 9.0%
  • Shell 0.2%
  • JavaScript 0.2%
  • Objective-C 0.0%