Release 1.7 (XXXX-XX-XX)
------------------------

- Piles of API documentation for the core i-g-t testing libraries.

Release 1.6 (2014-03-13)
------------------------

- Changes to support Broadwell in the test suite. (Ben, Damien, et al.)

- Updated (now working again!) Android support from Oscar Mateo.

- Test coverage through i-g-t is now officially an integral part of any drm/i915
  feature work and also for bugfixes. For more details see:

  http://blog.ffwll.ch/2013/11/testing-requirements-for-drmi915.html

- Fix the gen4asm build dependency handling, now that the assembler is included in
  i-g-t (Ben).

- Improve the cairo object lifetime management of the kmstest helpers (Chris).

- Allow register access to succeed if i915 is loaded but debugfs isn't found
  (i.e. nomodeset is used)

- New kernel modesetting helper library for simpler testcases (Damien).

- New structure logging support for tests. Message at the WARN level be
  reflected in the piglit result, also included igt_warn_on macros to simplify
  test asserts which should just result in warnings, but not in a test abort.

- Broadwell support for intel_audio_dump (Mengdong Lin).

- API documentation support (Thomas)

Release 1.5 (2013-11-06)
------------------------

- Some polishing of the test infrastructure, for details see:

  http://blog.ffwll.ch/2013/09/more-drmi915-testsuite-infrastructure.html

- Haswell support for the DPF tool (tools/intel_l3_parity) and other
  improvements (Ben).

- Stereo/3D support in testdisplay (Damien).

- Support for gen7 gpu perf counters in tools/intel_perf_counters (Kenneth).

- Improvements to the VBT decoder (Jani).

- New tool to read legacy VGA registers (Ville).

- New helpers in the test library to help deal with debugfs files and the new
  display pipe CRC support (Damien).

- Introduction of a proper naming convention for all the testcases, see
  tests/NAMING-CONVENTION.

- As usual tons of new testcases and improvements and bugfixes to existing ones.

- The testsuite framework itself has gained some regression tests which can be
  run at compile-time with "make check".

- New helpers for the drop_cache kernel interface and use drop_caches(RETIRE) to
  really make sure the gpu is idle in testcases (Oscar Mateo).

Release 1.4 (2013-09-16)
------------------------

- Integration of the gen4+ assembler (Damien).

- Start of a new performance analysis tool from Chris Wilson with front-ends for
  both X11 and plain kms. This uses the perf subsystem and the gpu performance
  counter kernel patches from Chris.

- New register dumper quick_dump from Ben, with lots of work from Damien. This
  will superseed intel_reg_dumper for newer platforms (which are not yet
  released) since it will allow us to automatically generate register dumps from
  the internal xml register specifications.

- Tools to access the pletoria of new indirect register access functions on
  newer platforms.

- Framebuffer contents dumper to debug some of the nastier corruption issues.
  The advantage here is that this bypasses any userspace drivers and so avoids
  that the corruptions get magically fixed when taking an X screenshot.

- Tons of new testcases. Including subtests we are now at roughly 450 tests!

- Improvements to the test framework infrastructure. See
  http://blog.ffwll.ch/2013/08/recent-drmi915-testsuite-improvements.html
  for an overview.

Release 1.3 (2012-08-27)
------------------------

- massive improvements to the testsuite
- dpf tool for handling l3 remapping on gen7 (Ben)
- robustify against wc gtt mappings (Chris)
- improvements to the reg_dumper and register read/write tools
- haswell support

Release 1.2 (2012-02-09)
------------------------

- intel_audio_dump improvements (Wu Fengguang)
- buildsystem improvements (Gaetan Nadon)
- solaris support (Alan Coopersmith)
- massive refactoring of testcases and rendercpy extraction
- new tests
- fixed up intel_reg_read/write for platforms needing forcewake (needs a
  kernel patch which from 3.3 to work on ivb - Ben Widawsky)

Release 1.1 (2011-12-24)
------------------------

Improved testsuite, usable for kernel regression testing!

Release 1.0 (2009-04-27)
------------------------

Initial release:
- miscellaneous userland tools that don't really fit into the 2D driver tree
- standalone regression tests for the DRM (make check)
- microbenchmarks of the DRM for kernel performance regression testing
