Intel08 Nov 2013 09:47 am

Some Months ago I made a promise here: drm/i915: GPU Power Savings. So it is time to move on with this promise and write a little bit about Panel Self Refresh (PSR) power saving feature that landed on latest Linux kernel (3.12) released this week.

Before explaining the feature itself, how it works, how it contributes to power savings, how to get it working and how to test it, there are important things that you must be aware of:

  1. Not all eDP necessarily support PSR. Actually this is so rare yet nowadays. Almost no eDP panel in the market support PSR. Sad but true. If you are a luck guy with a eDP that supports PSR on your Ultrabook you should see this “Detected EDP PSR Panel. on your dmesg with kernel booted with drm.debug=0xe.
  2. Besides the Panel it also have to be supported by the GPU. In our case it is only supported for Haswell yet. I’m currently working to get it working for Baytrail and Ben already submited support for Broadwell.
  3. Don’t try to enable PSR feature if you use KDE or XDM. Some small writes to scanout cannot be detected by GPU if userspace doesn’t send busy_ioctls at least. So, with this components Haswell doesn’t know something was written to scanout and that screen must be updated. So it doesn’t triger PSR Exit and Remote Frame Buffer update and will won’t see what you typed until you move your mouse. (Mouse cursor updates are tracked by GPU and PSR Exits).

With all this sad restrictions/limitations/known issues said, let’s tell more about PSR.

PSR is an eDP feature specified by VESA’s eDP v1.3. If you need a deep spec about PSR this is the one. I’ll try to explain it in a high level and easy way here.

So, if your eDP panel supports PSR it has a Remote Frame Buffer (RFB) on it. When Hardware/GPU (Source) detects some identical idle frames updates it tells the Panel (Sink) that it can use the minimal energy as possible by letting the static screen on RFB and shutdown any other panel component. This is called PSR Entry state or SRD.

Source is also responsible for detect when a screen update is needed and tell Sink to Exit PSR letting everything on, allowing normal screen updates.

When programming Haswell we just configure idle frames, max sleep time and other things like this, but the hardware itself that does the whole magic of detect identical frames and tell Sink it can switch from PSR Exit state to PSR Entry and vice versa.

Power Savings: the feature alone saves some power, but it saves even more  by allowing Package C States to stay more time in deep states.

How to enable it: Add i915.enable_psr=1 to your Linux Kernel cmdline.

How to check current state: cat /sys/kernel/debug/dri/0/i915/i915_edp_psr_status

How to test it: Intel-gpu-tools testcase under pm_psr. Just run pm_psr.


Intel06 Nov 2013 07:36 am

Kernel 3.12 is already out and will be base of next quarterly release.
So it is time to get intel-gpu-tools released also.

Testsuit infrastructure is in a very good shape and it is so easy to
create any test case nowadays. More about it explained above on
Daniel’s post.


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

- 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

- 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).

Ben Widawsky (24):
intel_l3_parity: Fix indentation
intel_l3_parity: Assert all GEN7+ support
intel_l3_parity: Use getopt for the l3 parity tool
intel_l3_parity: Hardware info argument
intel_l3_parity: slice support
intel_l3_parity: Actually support multiple slices
intel_l3_parity: Support error injection
intel_l3_parity: Support a daemonic mode
intel_l3_parity: Make compilation possible without udev require dri2proto for overlay
gem_tiled_blits: Squash memory leak on simulation
gem_tiled_blits: Squash bo leak on simulation
pwrite_pread: use execbuf.batch_len for size
pwrite_pread: Extract batch building
pwrite_pread: Get devid only once
gem_exec_faulting_reloc: use iterator for batchbuffer
gem_linear_blits: Use iterator for blit batch setup
gem_evict_*: Use iterator for blit batch
gem_exec_blt: Use iterator for blit batch setup
gem_pin: Use iterator for blit batch setup
gem_ctx_bad_exec: skip vebox when appropriate
gem_close_race: Fix linker flags
gem_suspend: Skip on simulation
debugfs_pipe_crc: skip on simulation

Chris Wilson (7):
overlay: Some very raw usage information
tests: Simulate missed breadcrumb irqs
intel_error_decode: Fix X/Y fence for gen2/3
tests: Add gem_close_race
gem_close_race: Tidy up call to execbuffer
gem_close_race: Bump the workload
gem_close_race: Also test random closing of active fd

Damien Lespiau (47):
testdisplay: Distribute pass.png
testdisplay: Add left/right images of a lovely scene
lib: Dump information about the supported 3D stereo formats
lib: Add a helper to paint a PNG using cairo
lib: Split create_image_surface() out of create_cairo_ctx()
lib: Add a helper to write a png from a struct kmstest_fb
testdisplay: Move the code sanitizing depth into main()
testdisplay: Map the fb inside paint_color_key()
testdisplay: Properly handle the life cycle of framebuffers
testdisplay: Fix CRTS typo
testdisplay: Untangle dump_info() from the main testing loop
testdisplay: Free the array of connectors
testdisplay: Provide a full path when opening pngs
testdisplay: Test the stereo 3D modes
intel_infoframe: Display the VIC in decimal
testdisplay: Remove the timing adjustements now that the kernel does it
testdisplay: Use DRM_MODE_FLAG_3D_MASK
lib: Adjust dump_modes() to the new stereo encoding
testdisplay: Remove printing out the eyes geometry
testdisplay: Respect specified_disp_id in the stereo loop
testdisplay: Remove mode resetting now that we don’t adjust the timings
testdisplay: Make -o and -3 work together
testdisplay: Print the stereo mode being tested
lib: Add a small helper to open debugfs files
lib: Add igt_debugfs_fopen()
lib: Add a igt_assert_cmpint()
lib: Add kmstest_paint_color()
lib: Add a igt_display.h with a few enums and defines from the kernel
lib: Make igt_debugfs_open() take the mode as argument
lib: Add igt_wait_for_vblank() helper
debugfs_pipe_crc: Let’s check CRCs!
tests/debugfs_pipe_crc: Test the read CRCs are not null
lib: Don’t wait for a vblank when enabling the CRCs
rendercopy: Add a way to dump an .aub file with the rendercopy bos
gitignore: Ignore intel_opregion_decode
lib: Add a function to dump a scratch buf into a png
tests/gem_render_copy: Add a simple render copy test
tests/gem_render_copy: Only dump pngs when the -d option is given
tests/gem_render_copy: Add aub dump support
gem_render_linear_blits: Remove aub dump support
lib: Remove stale comment
lib: Close non intel fds in drm_get_card()
lib: Add a drm_open_any_render() that will try to use render nodes
tests/gem_render_copy: Use render nodes
tests: Convert the ctx test to use render nodes when possible
gitignore: Ignore recently introduced tools and tests
lib: Don’t forget to close the pipe ctl fd in igt_pipe_crc_reset()

Daniel Vetter (72):
tests/*: scrap get_num_fences
tests/gem_fenced_exec_thrash: New subtests that uses all fences
lib/drmtest: check that igt_exit is called for subtest tests
tests/gem_fenced_exec_thrash: Add interruptible and busy-load subtests
tests/gem_persistent_relocs: Tune down the test a bit
tests/gem_storedw_batches_loop: Add testcase to check secure dispatch
tests/gem_reloc_overflow: Extract reloc_tests
tests/gem_reloc_overflow: New subtest for overflowing buffer_count
tests/gem_stored_batches_loop: use igt_assert more
lib/drmtest: igt_assert|require with format strings
lib/drmtest: Improve printf-like igt_skip_on/require
NEWS: Start with release notes for 1.5
tests: use igt_assert/igt_require more
tests/gem_evict_everything: tune down forked subtests
tests/kms_flip: fail harder
tests/kms_flip: scale test runtime
NEWS: testdisplay now with 3d support!
tests/kms_flip: Check the dpms confusion
tests/kms_flip: use igt_assert in the dpms helpers
NEWS: Mention gen7 perf counters release
tests/kms_flip: check flip count in both directions
tests/kms_flip: use igt_assert more
tests/pc8+: Only skip i2c subtest if i2c /dev interface is unavailable
tests/pc8: Fail harder
tests/kms_flip: Skip if no clone configuration could be found
lib/drmtest: extract rawer __gem_set_tiling
tests: add kms_addfb
tests/module_reload: fail if the module didn’t unload
tests/gem_suspend: test debugfs/sysfs reads while s/r
tests/kms_flip: exit handler needs a fixture
tests/kms_flip: Skip if the kernel doesn’t let y-tiled bo slip through
tests/kms_flip: fix igt_assert
tests/pc8: Readd verbose error message
tests/debugfs_pipe_crc: correctly skip on unsupported platforms
tests/ZZ_missed_irq: Fixup SOURCE_PATH handling
lib/drmtest: Check that helper processes have died correctly
tests/debugfs_pipe_crc: fall back to PIPE source
tests/debugfs_pipe_crc: fix fb leak
tests/debugfs_pipe_crc: test all pipes
tests/debugfs_pipe_crc: test all connectors
lib: fix the assert in igt_stop_helper
tests/debugfs_pipe_crc: new subtest to check CRC frame numbers
tets/kms_flip: disable correlation check
tests/kms_flip: no absolute vblank wait on the first frame
tests/kms_flip: Unconfuse the framenumber step checking
kmstest: don’t pollute stderr for impossible output configs
tests/kms_flip: More leeway for dummy load tests
tests/kms_cursor_crc: Use igt_exit
tests: Use igt_exit for tests with subtest
lib/drmtest: Scream harder when igt_exit isn’t called for subtest tests
lib: fix igt_exit assert when only listing subtests.
lib: add more self-tests around the igt_exit checks.
tests: use “auto” pipe CRC source
tests/debugfs_pipe_crc: set mode before creating CRC helper
tests/kms_cursor_crc: rework to auto-skip connectors
lib: consolidate pipe crc exit handler
lib: make igt_set_vt_graphics_mode never fail
lib: make igt_install_exit_handler never fail
lib: add igt_main macro
tests: Add a test template
tests: Add a Makefile comment about the expected failures in igt_ tests
tests: igt_no_subtest
lib: drop return value from igt_drop_caches
Update .gitignore a bit
tests: Start to document naming conventions
tests: estbalish drv_ prefix
tests: establish pm_ prefix
tests: Use kms_ prefix a bit more
tests: establish core_ prefix
NEWS: Roll in updates.
tests/gem_ctx_bad_exec: Check the errno, too
NEWS: drop_caches improvements

Jani Nikula (7):
README: list some of the dependencies
intel_bios_reader: add size temp variable as a shorthand for finfo.st_size
intel_bios_reader: prepare for dumping all sections
intel_bios_reader: dump all edp device info structs
intel_bios_reader: dump all sections, including unknown ones
intel_opregion_decode: new tool for decoding graphics opregion
intel_opregion_decode: decipher bclm table

Jesse Barnes (1):
quick_dump/vlv: add DPIO_CTL to the dump

Kenneth Graunke (1):
intel_perf_counters: Add support for Gen7 platforms.

Matt Turner (2):
configure: Don’t bail if libdrm_nouveau isn’t available.
Depend on libdrm_intel >= 2.4.47.

Mengdong Lin (3):
intel_audio_dump/hsw: remove misuse of PCH transcoder
configuration register
intel_audio_dump/hsw: align code with tab
intel_audio_dump/hsw: rename some audio configuration registers
for Haswell

Oscar Mateo (5):
tests: Fix “-thrashing” and “-thrash-inactive” distinction
lib: Add igt_drop_caches_set()
prime_self_import: Assure no pending requests before object counting
gem_flink_race: Assure no pending requests before object counting
lib/drmtest: Retire requests via drop caches after gem_quiescent_gpu

Paulo Zanoni (7):
tests/pc8: fix supports_pc8_plus_residencies
intel_reg_dumper: fix “enable” at hsw_debug_lp_wm
tests/pc8: add modeset-lpsp and modeset-non-lpsp
tests/pc8: add modeset -stress-no-wait tests
tests/pc8: clarify modeset_subtest arguments
tests/pc8: remove some printfs
module_reload: remove snd_hda_intel

Rodrigo Vivi (4):
build: Fix small typo that was breaking make distcheck
build: include intel_l3_parity.h to its _SOURCES to fix make distcheck
tests: pm_psr
bump version to 1.5 and add the release date

Thomas Wood (1):
testdisplay: Allow getopt to print error messages

Ville Syrjälä (6):
lib/drmtest: Add kmstest_paint_color_alpha()
lib: Allow pipe_crc_free(NULL)
lib: Check pipe source validity in igt_pipe_crc_new()
kms_cursor_crc: Add a cursor test using CRCs
kms_flip: Add test for -ENOENT
Add VGA register read/write tools

git tag: intel-gpu-tools-1.5
:  6165a9054de2609f5b1bf0ca0d913f31  intel-gpu-tools-1.5.tar.bz2
SHA1: f568dcdcaf238d2a63f5b2a1e26b18b044f45a9e  intel-gpu-tools-1.5.tar.bz2
SHA256: 115475b528c78d67741ae6cbedfbfced1d471b356140e48245cbad8fdfaad1d1
:  e261ee1eb3cb4c53fc30756f7883c305  intel-gpu-tools-1.5.tar.gz
SHA1: 0b89e79c143b1e86bb14a94fd3f43b210590e868  intel-gpu-tools-1.5.tar.gz
SHA256: a1fa6594e7dbeb634c62c8e89695f5dbb0d0c437482cfa1ffe3e4990c52215bc

Intel24 Sep 2013 12:16 pm

Hi all,

2013Q3 has been released: 2013q3-intel-graphics-stack-release

The 2013Q3 highlights are: Solid Intel® Celeron® N2810 processor with Intel® HD Graphics support, SNA enabled by default and power savings improvements for 4th Generation Intel® Core™ processors with Intel HD Graphics.

SNA (SandyBridge’s New Acceleration) is a xf86-video-intel acceleration method that allows better 2D performance on Intel. With better performance, better stability, and more active development, this is now on the default that is tested and validated on the Intel® Linux Graphics Stack. Although it contains the codename SandyBridge in its name, this new acceleration method supports all Intel platforms that were already supported by UXA (Unified Acceleration Architecture).

Intel-gpu-tools is now part of a quarterly stack release. It is a collection of tools for development and testing of the Intel DRM. Latest released version provides a very robust test framework, performance analizers, validation scripts, and a easy way for end users to collect logs for easy and better bug reports. It also has the traditional tools for gpu snapshots, register dumping, read, and writes. Intel-gpu-tools 1.4 was used on 2013Q3 tests and validation.

There have been many bug fixes and performance improvements in many parts of Intel Linux Graphics stack. In this release, support has been added or refined for the recently released Intel Celeron N2810 processor with Intel HD Graphics.

For a complete list of new features, bugs fixed and known issues check the full release notes.



Intel16 Sep 2013 01:09 pm

After a long time here is another intel-gpu-release with much stuff changed.
Most of them in test framework with many testcases included.
The plan now is to release intel-gpu-tools quarterly in sync or in
time for validation of our Intel Linux Graphics Stack available at


- 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
for an overview.

Alan Coopersmith (1):
tests/gem_seqno_wrap.c: include <signal.h> for definition of kill()

Ben Widawsky (58):
clang: Fix warnings found through clang.
clang: Fix static analysis warnings from clang
intel_sprite_on: Idententation + Copyright fix
intel_sprite_on: coding style fixes
intel_sprite_on: plane needs 16.16 width and height
sysfs rps test added
sysfs_rps: Add negative test case for bad values
intel_gtt: Fix PTE offsets Fix spacing Add vim magic modeline
configure: slightly more standard –disable-tests Move prime stuff to where it belongs
quick_dump: A dump utility different than reg_dumper
quick_dump: gen6 support
quick_dump: gen7 support
quick_dump: vlv support Add swig dependency
quick_dump: SWIG chipset interface
quick_dump: Connect libpciaccess and other utils
quick_dump: Use the register access library
quick_dump: Give dumper an AM_CONDITIONAL
README: Add quick_dump info
quick_dump: chdir us to where the text files are
fix arch build: update ax_python_devel.m4
quick_dump: prettier printing
intel-gen4asm: have a C-like binary output
intel-gen4asm: add byte array style disasm
disasm: add pln instruction
disasm: add sendc
disasm: add gen6 style send decoding
disasm: decode SENDC like SEND
m4: Updates to ax_python_devel.m4
quick_dump: say something when reg init fails
intel_mmio: Allow mmio without debugfs
intel_mmio: a query for forcewake requirement
quick_dump: add register write
reg_access: Forcewake as necessary
quick_dump: Add dpio read
intel_error_decode: Whitespacing fix
intel_error_decode: HEAD stuff
gem_storedw_loop_vebox: Modernize test to look like blitter
clean warnings: Silence unused (or private) functions
intel_mmio: Add intel_register_access_needs_fakewake
list-workarounds: Convert to python3
quick_dump: Add more ring registers
quick_dump: Add basic haswell support
quick_dump: Add CCID
lib/intel_mmio: Fix the fix
quick_dump: fix text file
m4/ax_python_devel: Update to upstream
tests: Basic tools tester
lib/intel_mmio: Fix the fixed fix (register access)
quick_dump: add is_haswell()
intel_reg_dumper: Silence GCC for uninitialized clock
gem_vmap_blits: Demote warning to note
intel_gtt: Use function to get the physical address
intel_gtt: Properly support gen6+ GTT PTEs
intel_gtt: Raw PTE dumper mode

Chen, Yangyang (2):
fix CHANNEL select
1. fix DOT

Chris Wilson (165):
Add bare-metal interface to adjust cacheing (i.e. snoop status) of a bo
tests/gem_cacheing: Exercise snoop coherency
gem_gtt_speed: Use a memset() to test streaming performance
gem_gtt_speed: Add a test that caches the mmapping across iterations
tests/module_reload: Silence warnings when unloaded shared modules
tests/flip_test: Revamp to demonstrate race with modeset/dpms
and pageflips
flip_test: count the number of flips and check we don’t drop any
tests: Add gem_cpu_reloc
gem_wait_render_timeout: Fix SKIP return code
gem_cpu_reloc: Fix for running on SNB+
gem_cpu_reloc: And run the test in reverse to check with already
bound batches
gem_cpu_reloc: Use the mappable aperture size!
gem_cpu_reloc: Do another pass explicitly moving to the CPU write domain
pci: Search for the first Intel GPU, rather than assume a fixed slot
tests: Add basic test for render blits
Implement a working gen7 rendercopy
tests: Add a basic test for tiled render copies
tests/gem_tiled_swapping: Don’t needless crash on 32-bit systems
tests/gem_tiled_pread_pwrite: Allow the kernel to reap the GTT
address space
tests/gem_*_tiled_blits: Use the vma limiter to present address
space exhaustion
tests: Add basic testing of gem_pin
tests: Exercise new API for using a LUT with the execbuffer
tests: Benchmark new API for using a LUT with the execbuffer
tests/gem_lut_handle: Expand negative testing
tests/gem_lut_handle: Limit testing LUT interface to recent kernels
intel_error_decode: Don’t barf on a malformed PCI ID line
gem_fence_thrash: Fix array allocation size for LP64 systems
Check for vebox support before testing
gem_reg_read: Only check errno after a definite error
gem_lut_handle: Make the error checking explicit for LUT handling
gem_lut_handle: Avoid using a valid handle when testing BROKEN
gem_lut_handle: Print some more information upon failure
kms_render: Skip unsupported display configurations
tests/kms_flip: Suppress failure from setting mode
tests/gem_lut_handle: Simplify creation of broken handles
tests/gem_lut_handle: Quit when we hit ENOSPC
tests/gem_(cpu|gtt)_concurrent_blit: Enable signals
tests/gem_(cpu|gtt)_concurrent_blit: Restore the old tests and
add the new interruptible as new tests
test/gem_(cpu|gtt)_concurrent_blit: Move the set_bo() from
create to the test
tests/gem_cpu_concurrent_blit: Undo debugging hack
tests/gem_cpu_concurrent_blit: Restore lost intel_copy_bo()
tests/kms_flip: Repeat all of the tests whilst being rudely interrupted
tests/gem_(linear|tiled)_blits: Repeat whilst being interrupted
tests/hangman: Be lenient towards a non-existent sysfs error state Be more precise in detecting the i915 /sys path
Avoid corrupting the exitcode with a failure to open a quiescent fd
Make the failure message for drm_open_any() more specific
gem_(tiled|linear)_blits: s/interrutible/interruptible/
tests/gem_write_read_ring_switch: Repeat under rude interrupter
tests/gem_write_ring_switch: Skip on pre-SNB
test/gem_pread_after_blit: Make the test a little more stressful
gem_pread_after_blit: Exercise reading back through different cache levels
gem_partial_pwrite_pread: Exercise different cacheing of the staging bo
gem_pwrite: Time pwrites to both uncached/snooped memory
gem_pread: Symmetric measurement to gem_pwrite
lib: Reset sig_stat after stopping the rude interrupter
gem_pwrite_pread: Measure how long it takes to upload/copy/download
gem_pwrite_pread: Use mmap to bypass pwrite/pread for comparison
intel_error_decode: First try /sys/drm/card0/error for the error-state
Expand gem_set_cacheing testing to handle the proposed DISPLAY domain
gem_pwrite: Print the cache name not the number
gem_exec_lut_handle: Use linear regression analysis
gem_write_read_ring_switch: Copy the missing igt_require
gem_(cpu|prw)_concurrent_blit: Add contending processes
Add intel_framebuffer_dump
gem_concurrent_blit: Share total num_buffers between all children
gem_concurrent_blit: Fix the leak from the children.
drmtest: Squelch the rude interrupter
gem_concurrent_blit: Purge the child bufmgr’s cache
Introduce intel-gpu-overlay
overlay: Show GPU waits
overlay: Primitive integration with perf
overlay: Fix wraparound handling of perf ringbuffer
overlay: Constify perf ringbuffer
overlay: Drop unused mmap/comm events
overlay: Track requests per-process
overlay: Graph per-process requests over time
overlay: Show per-process wait times
overlay: Perf output redirection must be done after mmap()
overlay: Couple wait begin/end events together to fix accounting
overlay: Accumulate busy times
overlay: Correct layout of ring/seqno in raw sample
overlay: Improve the horizontal fit of the charts
overlay: Count flips per plane
overlay: Include CPU usage in the overview chart
overlay: Add GPU frequency
overlay: Parse gem objects
overlay: Convert gem objects to megabytes
overlay: Print min/max GPU frequencies.
overlay: Rearrange GUI state
overlay: Use a more compact 2×2 layout for the graphs
overlay: Remove the double ‘:’ from object comm names
overlay: Don’t smooth gpu freq
overlay: Tweak a couple of the fill colours to be slightly less horrid
overlay: Add a X11 window backend
overlay: Tweak label locations to include baseline offset.
overlay: Auatomatically mount debugfs
overlay: Add missing include “debugfs.h”
overlay: Wrap the colour index around the rgba array
overlay: Add rc6 residency
overlay: Add graph for GPU power consumption
overlay: Fix counting fail
overlay: use rc6_enable to drop useless information
overlay: Sample power every second
tests: Add gem_evict_everything
gem_evict_everything: Fix the error code checking after drmIoctl
lib: Make igt_assert() abort under gdb
overlay: Take a snapshot on SIGUSR1
overlay: Use the new i915 PMU to query GPU busyness
overlay: Add copyright statements
overlay: Fix display of rc6 states
overlay: Fix sampling of i915 perf event
overlay: Fix old mmio gpu busyness probing
tests: Add gem_evict_alignment
overlay: Fade the graphs behind the text
overlay: Put a faint outline around each chart
overlay: i915 pmu doesn’t require a specific frequency
overlay: Fix underflow for clamping initial values
overlay: Remove busy estimation
overlay: Fill the blank charts with error messages
overlay: Rudiments of config files and option parsing
overlay: Make the config parser more lenient
overlay: Double buffer the x11 window
overlay: Close DRI2 device after authentication failure
overlay: Replace debug ticker with hostname
overlay: Search for right debugfs path
overlay: Distinguish the root debugfs path and our dri node
overlay: Fix power reading from debugfs
overlay: Expose sampling period/frequency as a user parameter
overlay: simplify types for object counts for 32/64bit porting
overlay: Draw the cpu busy line on top of the waits
overlay: Add a raw kms output
overlay: Detach from terminal
overlay: Monitor interrupts
overlay: Allow simple positioning and resizing
overlay: Count number of semaphores used by each process
overlay: Trim the padding slightly
overlay: Align the process names in the memory table
overlay: Read power from perf_events
overlay: Read frequency from perf
overlay: Read interrupts from perf
overlay: improve alignment of some labels
overlay: Set the text color in case we do not have RC6
overlay: Add support for multi-monitor positioning
overlay: read rc6 status from perf
overlay: Restore the correct default font size
overlay: Tidy presentation of ring busy values
overlay: Scale the CPU busy value by the numer of active cores
overlay: Include the core count in the cpu info line
overlay: Add number of running processes to CPU display
overlay: Generate unique name for snapshots
overlay: Make it easier to renice
overlay: Monitor per-ring context switch rate
overlay: Autohide Flip counter after a period of inactivity
overlay: Hide idle processes
overlay: Increase idle timeout to 30s
kms_flip: Exercise flip-vs-render
kms_flips: Operate on an array of crtc
kms_flip: Run on pairs of connected outputs.
kms_flip: Hook up primary events for page-flips
kms_flip: Use the first mode if we find no matching modes for
the crtc pair
kms_flip: Set everything to zero to disable a CRTC
kms_flip: Remove debugging leftovers
kms_flip: Fix use of fb_width for PAN subtests
NEWS: smelling fixes

Damien Lespiau (155):
intel_reg_dumper: Add a single register decode mode
intel_reg_dumper: Also decode registers given by address
intel_reg_dumper: Allow partial register names on the command line
intel_reg_dumper: Add more information when dumping single registers
tools: Update gitignore with intel_dpio_{read, write}
intel_infoframes: Dump HDMI vendor infoframes
testdisplay: Use the fb stride when painting the color key
lib: Add a way to specify values for “quick” runs
tests: Add a quick variant to the gem_storedw_* tests
tests: Forbid to run the blit tests with count of 1
lib: Factor out a function to check if an environment variable is set
lib: Allow to override the device id at run time
build: Guard the inclusions of config.h with HAVE_CONFIG_H
build: Integrate the merged gen assembler in the build system
build: Add CAIRO_FLAGS to the debugger compilation
gitignore: Ignore TAGS files
build: Don’t use AM_MAINTAINER_MODE
build: Only build the assembler if flex and bison are found
build: Add the debugger compilation status to the summary
assembler: Sync brw_instruction’s header with mesa’s
assembler: Rename three_src_gen6 to da3src
assembler: Rename dp_read_gen6 to gen6_dp_sampler_const_cache
assembler: Rename dp_gen6 to gen6_dp and sync with Mesa’s
assembler: Rename dp_gen7 to gen7_dp and sync it with Mesa’s
assembler: Remove struct dp_write_gen6 and struct use gen6_dp
assembler: Rename gen5 DP pixel_scoreboard_clear to last_render_target
assembler: Rename branch to branch_gen6
assembler: Rename branch_2_offset to break_cont
assembler: Rename and bits3.fd
assembler: Adopt brw_structs.h from mesa
assembler: Remove trailing white spaces from brw_structs.h
assembler: Adopt enum brw_message_target from mesa
assembler: Import brw_defines.h from Mesa
assembler: Remove trailing white space from brw_defines.h
assembler: Update the disassembler code
assembler: Import ralloc from Mesa
assembler: Remove white space from brw_eu.h
assembler: Introduce struct brw_context
assembler: Make an libbrw library
assembler: Protect gen4asm.h from multiple inclusions
assembler: Import brw_eu_compact.c
assembler: Import brw_eu.c
assembler: Don’t use -Wpointer-arith
assembler: Import brw_eu_emit.c
assembler: Use BRW_WRITEMASK_XYZW instead of the 0xf constant
assembler: Remove the writemask_set field of struct dest_operand
assembler: Use subreg_nr to store the address register subreg
assembler: Simplify get_subreg_address()
assembler: Make print_instruction() take an instruction
assembler: Refactor the code adding instructions and labels
assembler: Make explicit that labels are part of the instructions list
assembler: Don’t change the size of opcodes!
assembler: Make sure nobody adds a field back to struct brw_instruction
assembler: Don’t expose functions only used in main.c
assembler: Make struct declared_register use struct brw_reg
assembler: Replace struct direct_reg by struct brw_reg
assembler: Replace struct indirect_reg by struct brw_reg
assembler: Unify the direct and indirect register type
assembler: Replace struct dst_operand by struct brw_reg
assembler: Consolidate the swizzling configuration on 8 bits
assembler: Get rid of src operand’s swizzle_set
assembler: Use brw_reg in the source operand
assembler: Factor out the destination register validation
assembler: Use brw_set_dest() to encode the destination
assembler: Factor out the source register validation
assembler: ExecSize can be as big as 32 channels
assembler: Fix comparisons between reg.type and Architecture registers
assembler: Store immediate values in reg.dw1.ud
assembler: Don’t warn if identical declared registers are redefined
assembler: Add location support
assembler: Add error() and warn() shorthands and use them in set_src[01]
assembler: Add a check for when width is 1 and hstride is not 0
assembler: Add a check for when ExecSize and width are 1
assembler: Add the input filename to the error/warning messages
assembler: Use brw_set_src0()
assembler: Port the warning and error reporting to warn()/error()
assembler: Cleanup visibility of a few global variables/functions
assembler: Fix ‘)’ placement in condition
assembler: Implement register-indirect addressing mode in brw_set_src1()
assembler: Use brw_set_src1()
assembler: Renamed the instruction field to insn
assembler: Unify all instructions to be brw_program_instructions
assembler: Move struct relocation out of relocatable instructions
assembler: Gather all predicate data in its own structure
assembler: Unify adding options to the header
assembler: Isolate all the options in their own structure
assembler: Introduce set_instruction_opcode()
assembler: Introduce set_intruction_pred_cond()
assembler: Introduce set_instruction_saturate()
assembler: Expose setters for 3src operands
assembler: Add support for D and UD in 3-src instructions
assembler: Use brw_*() functions for 3-src instructions
assembler: Don’t pollute the library files with gen4asm.h
assembler: Put struct opcode_desc back in brw_context.h
assembler: Use set_instruction_src1() in send
assembler: Finish importing brw_eu_*c from mesa
assembler: Merge declared_register’s type into the reg structure
assembler: Use defines for width
assembler: Remove trailing white space
assembler: Don’t use GL types
assembler: Group the header inclusions together
assembler: Fix the decoding of the destination horizontal stride
assembler: Mark format() as PRINTFLIKE in the disassembler
build: Fix typo if the test setting enable_debugger
lib: Add a comment about why we only parse long options for subtests
scripts: Add a script to list implemented workarounds
README: Reword a few sentences
build: Make grep silent when running make test
lib: Remove the execution bit of intel_chipset.h
Update .gitignore files with the new tests and tools
lib: Add the declaration of intel_register_access_needs_fakewake()
reg_dumper: Shut a warning down
tools: Add a standalone tool to test the computation of r,n,p for WRPLLs
ddi_compute_wrpll: Code the reference frequencies in Hz
ddi_compute_wrpll: Fix the reference table for 37762500Hz
ddi_compute_wrpll: Fix the reference for 222525Khz and 296703Khz
ddi_compute_wrpll: Rework the logic around r2 and n2 a bit
ddi_compute_wrpll: Factor out a common expression
ddi_compute_wrpll: Do not use a double constant
list-workarounds: Don’t add an already present platform
list-workarounds: Don’t prepend kernel_path to the driver directory
list-workarounds: Some workarounds start with WA, not Wa
build: Depend on cairo 1.12.0 for CAIRO_FORMAT_RGB30
lib: Introduce drmtest_skip_on_simulation()
lib: Remove old dead code intel_batchbuffer_emit_mi_flush()
tests: Black list tests we don’t want to run on simulation
tests: Instrument tests run in simulation to run quickly
tests: Instrument gem_lut_handle for simulation
tests: Instrument gem_seqno_wrap to run in simulation
tests: Add some tiled tests to the runs on simulation
build: Fix a small typo in
build: Fix unbalanced quoting in the python dumper AC_ARG_ENABLE()
build: Fix automake 1.13 warnings
build: Pimp up the configure summary
lib: Allow users of env_set() to specify a default value
tests: Allow a shell test to declare it doesn’t need to be DRM master
tests: Source instead of having its own INTEL_SIMULATION test
intel_infoframes: Add support for decoding HDMI VICs
intel_infoframes: Dump 3D_Ext_Data when using Side-by-side (half)
gem_ctx_basic: Fix misc warnings
build: Fix the overlay build summary at the end of configure
intel_infoframes: Be future-proof about showing 3D_Ext_Data
assembler: Tune the error message for invalid send on gen6+
assembler: Revert “Automatically run all test cases.”
assembler: Revert “Fix missing environment variables problem in
assembler: Fix the path of intel-gen4asm
assembler: Ignore make check output
assembler: Disable tests that where already failing in the gen4asm repo
assembler: Disable the declare test
overlay: Include gpu-perf.h for distribution
quick_dump: Use AM_V_GEN when generating the bindings
gitignore: Add a couple of recent binaries to .gitignore files
overlay: Fix stale mention to x11-position.c

Daniel Vetter (240):
drmtest: use do_or_die
lib: helper to convert gem_hanlde to drm_intel_bo
fixup .gitignore for newly add sysfs_rps test
tests/flip_test: new testcase with a busy load before the flip
tests/flip_test: re-enable disabled testcases
tests/flip_test: check whether the pageflip event took too long
tests/flip_test: check whether timestamp isn’t in the past
tests/flip_test: actually try to check what I want to check
tests/flip_test: don’t complain about timestamps in the future
tests/flip_test: robustifications
tests/flip_test: test interaction with panning
tests/flip_test: also test pannning with dummy load
flip_test: race against modesets, too
tests/flip_test: measure inter-frame ts jitter
flip_test: increase runtime of the plain flip to 15s
flip_test: add an explicit flag for timing checks
tests: add drm_threaded_access_tiled
tests/gem_caching: only disable on vintage i965g/gm
flip_test: fix timestamp order
tests/*storedw*: add subcases with more outstanding batches
tests/flip_test: check -EBUSY and -EINVAL behaviour
tests/gem_cs_prefetch: clarify what it tests
tests: add gem_cs_tlb
tests: update .gitignore
lib: make drmtest_progress more robust
lib: remove auto-quiescenting of the gpu
tests: add big batchbuffer test
tests/gem_exec_big: add a reloc at the end of the big batch
tests/gem_exec_big: fixups
lib/mmio: gen2 has a bigger register window, too
flip_test: tune test-durations a bit
flip_test: drop vblank vs. pan
flip_test: check whether wait_vblank fails when it should
tests/gem_cs_tlb: make it more robust
tests: add gem_non_secure_batch
tests: infrastructure for piglit runner
tests: remove ZZ_check_dmesg from runner
tests: dont polute stderr if the test succeeds/skips
lib/drmtest: subtest infrastructure
tests/flip_test: use subtest infrastructure
tests/gem_basic: convert to subtest infrastructure
tests/gem_cacheing: convert to subtest infrastructure
tests/gem_cpu_concurrent_blt: convert to subtest infrastructure
tests/gem_cs_tlb: convert to subtests
tests/gem_flink: convert to subtest infrastructure
tests/gem_gtt_concurrent_blit: convert to subtest infrastructure
tests: re-enable gem_hangcheck_forcewak
tests/gem_mmap_gtt: convert to subtest infrastructure
tests/gem_partial_pwrite_pread: refactor subtests into functions
tests/gem_partial_pwrite_pread: convert to subtest infrastructure
tests/gem_ringfill: convert to subtest infrastructure
tests/gem_set_tiling_vs_blt: convert to subtest infrastructure
tests/gem_tiled_partial_pwrite_pread: refactor subtests into functions
tests/gem_tiled_partial_pwrite_pread: convert to subtest infrastructure
tests: disable gem_non_secure_batch
lib: extract get_render_copyfunc
tests/gem_stress: prevent segfault in getopt parsing
tools/intel_reg_dumper: add some cpt/ppt debug regs
tests/gem_exec_bad_domains: add more bad domains
tests/gem_flink: check flink lifetime rules
README: add quick howto for using piglit as testrunner
tests/ Add a comment about the subtest infrastructure
README: piglit requires results-file for testruns
tests: run no-op batches on all rings
tests: fixup gem_exec_nop subtests
tests/gem_dummy_reloc_loop: some updates
tests/gem_exec_nop: implemented correct SKIP reporting
tests: disable gem_exec_bad_domains/conflicting-write-domain
tests/prime_nv_tests: convert to subtests
tests/prime_nv_pcopy: convert to subtests
tests/flip_test: split out timestamp checks into subtest
flip_test: recreate fb
tests/flip_test: add flip vs. rmfb testcase
tests: s/flip_test/kms_flip
tests/gem_flink: enable flink lifetime subtest
lib: extract kmstest_get_pipe_from_crtc_id
tests/kms_flip: don’t die on stdin input
tests: add testcase to check igt runtime enviroment
tests/prime_nv_pcopy: guard output for subtest listing
tests/ gem_fence_trash has grown subtests
lib: fixup register access on gen2/3
tests/prime_udl: proper return values
tests/prime_udl: skip harder
tests/kms_flip: don’t leak gpu hang state
lib/drmtest: tune down signal handler stats
tests/gem_fence_trash: make threaded tests more through-rough
tests/prime_udl: don’t put dirt into stderr when skipping
tests: fix script testlist
tests/gem_cpu_concurrent_blit: stop signal helper again
lib/drmtest: set default sighandler for QUIT in the signal process
test/ Updated sysfs error filename
tests/ Don’t die if the sysfs path can’t be found
tests/gem_linear|tiled_blits: convert to subtests
tests/kms_flip: don’t run blocking relateve vblank waits with interrupts
tools/intel_reg_dumper: add gen6+ fences
tools/intel_reg_dumper: fix up END register
test: add gem_write_read_ring_switch
tests: actually add gem_write_read_ring_switch
tools/quickdump: gitignore generated files
tests/prime_nv_api: convert to subtest infrastructure
tests/prime_nv_api: Drop bogus check from import-twice
test/prime_nv_api: more descriptive subtest names
test/prime_nv_test: nicer test names
test/prime_nv_test: use gem drmtest functions for pread/pwrite
tests/prime_nv_api: check multiple foreign imports with flink
lib/drmtest: fix const mismatch warning
lib/drmtest: document interface groups with one-liners
tests/gem_suspend: exercise fence restore code
tests: sort tests in and .gitignore
lib/drmtest: add gem_flink and gem_open
tests: add gem_flink_race
tests/gem_flink_race: kill debug printf
tests/gem_flink_race: count leaked objects
tests/gem_flink_race: check for expected flink failure code
Revert “tests/gem_flink_race: count leaked objects”
tests/gem_flink_race: actually make it somewhat useful
tests/gem_flink_race: fix up scanf format
tests/gem_flink_race: correct thread count
tests/sysfs_edid_timing: use real bash
tests/gem_flink_race: Kill duplicate drm_open_any
tests/prime_self_import: Add racing handle2fd testcase
tests: add gem_prw_concurrent_blt
tests/gem_pwrite_pread: subtest annotation
tests: update .gitignore
tests/prime_self_import: Add a flink/dma-buf self-import test
tests/prime_self_import: Fixup previuos test
tests/prime_self_import: fix comment
tests: s/cacheing/caching
lib/drmtest: Add drmtest_subtest_block macro
lib/drmtest: skip/fail handling
tests/gem_caching: convert to use drmtest retval infrastructure
lib/drmtest: make signal process cleanup more robust
tests: use drmtest_skip() in caching ioctl helpers
tests: use drmtest_skip to check for rings
lib/intel_mmio: Remove unused label
lib/drmtest: __ prefix for drmtest_run_subtest
tests: s/return igt_retval();/igt_exit();/
tests: scrap old automake based kernel test runner
tests: add drm_get_client_auth
lib/drmtest: fixup igt_fail for the list-only case
lib/drmtest: add igt_assert as a replacement for assert
lib/drmtest: roll out igt_assert
tests: s/assert/igt_assert
tests/gem_ctx_bad_exec: convert to subtests
tests/gem_readwrite: convert to subtests
tests: s/exit(EXIT_FAILURE)/igt_fail(1)/
tests: s/exit(EXIT_SUCCESS)/igt_success()/
tests: s/exit(77)/igt_skip()/
tests: use igt_fail instead of exit(param != 0)
tests: introduce igt_require
configure: require libdrm 2.4.45
lib/drmtest: Don’t run the rude interruptor when just listing subtests
tests/gem_write_read_ring_switch: use igt_exit and friends
tests/gem_dummy_reloc_loop: use igt_skip
tests: add igt_subtest_f for snprintf’ing testnames
lib/drmtest: Don’t spoil stdout when listing tests
tests: merge gem_*_concurrent_blt together
tests/gem_concurrent_blt: refactor basic run modes a bit
tests/gem_concurrent_blt: use the test helpers in the forked tests
tests/gem_concurrent_blt: extract run wrappers
tests: use igt_exit() consistently with subtests
lib/drmtest: sprinkle documentation over igt_skip|fail|success|exit
tests: Introduce igt_fixture
tests/gem_ctx_bad_exec: add subtest for vebox
tests: roll out igt_fixture
lib/drmtest: add igt_subtest_name and use it in kms_flip
lib/drmtest: documentation for igt_fixture
tests/primve_nv_test: use igt_assert for checking
tests/prime_nv_api: fixup conversion goof-up
lib/drmtest: fix subtest output when skipping all tests
tests/gem_ctx_basic: Use igt_require
lib/drmtest: Use igt_assert in the do_ioctl/do_or_die helpers
tests/prime: test dma-buf llseek support
test/gem_dummy_reloc_loop: fix igt_require conversion
lib/drmtest: skip fixtures after an igt_skip
lib/drmtest: make igt_fail work outside of subtests
lib/drmtest: Properly skip if no intel gfx supported
lib/drmtest: rip out drm_open_any_master
tests: roll out igt_require some more
lib/drmtest: extract gem_create_context
lib/drmtest: igt_skip when drm_get_card fails
tests/gem_concurrent_blit: Fix segmentation fault
tests/pc8: Update to latest igt infrastructure
lib/drmtest: fix logic fumble in gem_context_create
tests/sysfs_rps: Fix igt_require conversion
tests/gem_evict_*: Add interruptible modes
tests/gem_mmap: Convert to subtests
tests/gem_mmap_gtt: Add testcase for the vma access manager
lib/drmtest: don’t complete fixtures with a longjmp
Revert “tests/gem_concurrent_blit: Fix segmentation fault”
lib/drmtest: restore in_fixture assert
lib/drmtest: extract igt_fork from gem_concurrent_blt
tests/gem_tiled_swapping: Use igt_require
tests/gem_evict_*: Fix leak in copy
tests/gem_evict_everything: add swapping and forked subtests
lib/drmtest: Print info when children died due to signals
tests/gem_mmap_gtt: clarify access check checks a bit
tests/gem_mmap_gtt: fix access checks
tests/gem_tiled_swapping: fix igt_require conversion
test/gem_concurrent_blt: remove hack for testing igt_fork
lib/drmtest: Improve output when igt_waitchildren fails
tests/gem_reloc_vs_gpu: add interruptible version
lib/drmtest: extract gem_execbuf helper
lib/drmtest: include sys/mman.h from drmtest.h
tests/gem_reloc_vs_gpu: Add faulting reloc tests
lib/drmtest: use igt_require/assert in the prefault helpers
tests/gem_reloc_vs_gpu: add forked versions
tests/gem_reloc_vs_gpu: add thrashing tests
tests: add gem_persisten_relocs
tests: Update .gitignore
lib/drmtest: add igt_skip_on macro
tests: add missing igt_exit() calls
tests/gem_pipe_control_store_loop: Add subtest for reused buffers
tests/gem_exec_bad_domains: enable conflicting write domains test
tests/gem_reloc_overflow: convert to subtests
tests/gem_reloc_overflow: Add more checks
lib/drmtest: Avoid calling exit handlers multiple times
lib/drmtest: fixup for the prefault rework
lib/drmtest: create helpers for forking helper threads
tests/gem_reloc_vs_gpu: use igt_fork_helper
lib/drmtest: consolidate the helper process killing in one exit handler
lib/drmtest: double-check that we clean up helper processes
lib/drmtest: Use ARRAY_SIZE
lib/drmtest: skip when prefault control isn’t available
lib/drmtest: Fix igt_stop_signal_helper for subtest listing
lib/drmtest: Reject igt_fork from within igt_fork earlier
lib/drmtest: handle SIGBUS in the exit handlers
tests/gem_reloc_vs_gpu: some fixes
tests/gem_persisten_relocs: Update like gem_reloc_vs_pug
lib/drmtest: clean up children in an exit handler
lib/drmtest: don’t frob signals in __igt_fork_helper
lib/drmtest: Restore default sighandlers
lib/drmtest: drop unused oldsig variabel
lib/drmtest: skip suspend tests in simulation
reconstruct NEWS file for the releases thus far
initial release notes for the next release
lib: add test for igt_fork_signal_helper
lib/drmtest: ducttape over fork race

Dave Airlie (1):
intel/udl tests;

Eero Tamminen (1):
man: Fixes typo in

Eric Anholt (85):
Initial gen4asm code.
Get the wm program to parse.
Start correcting the translation.
actually print out last uint32_t of instruction.
Add Wall.
C warnings cleanup.
Fix horizontal stride translation.
Remove generated file.
And add a comma.  This was supposed to be a minor change.
Fix dest_horiz_stride translation, and destination type.
Fix imm32 translation.
Add support for negate and abs to source operands.
Remove generated source from repo.
Fix translation of saturate value, and wire conditionalmod to 0 for now.
Fix translation of message registers.
This code was supposed to be null instead of acc0 (brw_disasm.c
gave “a0″).
Fill in type of null register to match Mesa.
bzero instructions before filling in the bits we care about.
There’s no reason to provide typing or region on the null register.
Zero out the initial header instoptions.
Fix up sampler send message translation and give it a near-usable syntax.
Fix respecting of instruction options (misunderstood default
action behavior).
Add syntax for translating the DP write send message.
Add packed yuv sf kernel from 2d driver.
Add some more generated files to ignore.
Add a syntax for urb write messages.
Add syntax for extended math send functions, and adjust
packed_yuv_sf for it.
Lex the register number with the register name.
Add many more opcodes.
Add a negation that the initial disasm missed.
Rename the resulting binary to gen4asm instead of lextest.
Add rules for more registers, and use some for destinations.
Add support for more registers as source operands.
Support src ARF operands in another place, and spell it arch
instead of acc.
Rename direct_gen_reg struct to direct_reg now that it fills more roles.
Typo fix in comment.
Add support for more instruction options.
Comment cleanup and add missing semicolons after rules.
Add acc[01] as src operands.
Add support for swizzle control on source operands.
Add support for predicate control.
Avoid shift/reduce conflict in predicate by making flagreg and
subreg 1 token.
Add support for destination writemasks.
Add support for register-indirect access in destination registers.
Add support for register-indirect addressing in source operands.
Add input/output file command line arguments.
Add autotools build system, and rearrange directory layout.
Fix issues in the grammar that caused errors in bison.
Fix gram.h creation, fixing dependencies and distcheck.
Fix a compiler warning by defining struct {in,}direct_reg at the
top level.
Add DO and ENDIF instructions.
Add rules for branch and jump instructions.
Add a rule for the ELSE instruction.
Start adding a test suite.
Add more unary operation tests.
Add configure.lineno to ignores.
Add some masks in comments that will help with writing tests.
Explain why rnde-intsrc is expected to fail.
Add tests for jmpi, if, iff, and while, revealing issues.
Initialize the structure used for setting up the ip src/dst in
Fix copy’n'paste-o in lexing of the WHILE instruction.
Fix the width of the IP count field expected by the while test.
Parse negative integers for imm32s, and don’t exceed the IP
count width field.
Add a failing test for maximum ranges of UD/D immediates.
Lex integers as unsigned long instead of signed int, fixing the
immediate test.
Add a test for wait instruction (not yet implemented).
Add support for the WAIT instruction.
Add a test for the ELSE instruction, revealing issues.
Fix initialization of null reg for ELSE, and set the pop count right.
Add a test for ENDIF, revealing issues.
Fix the exitcode type for ENDIF to be D instead of UD.
Add tests for break, cont, and halt instructions.
Add break, cont, and halt instructions.
Update the TODO with more tasks and a bit more description.
Use inttypes.h to get at uint32_t instead of sys/types.h.
Use 0 instead of INITIAL, as the chosen lex on my debian doesn’t
supply it.
Rename package and binary to intel-gen4asm.
Update .gitignore for gen4asm -> intel-gen4asm
More renaming of gen4asm -> intel-gen4asm, plus README update.
Add accidentally forgotten rnde test.
Fix compiler warning from missing include.
whitespace cleanup from Mesa import.
disasm: Print out ELSE and ENDIF src1 arguments like IF does.
Fix setup of immediate types for gen4 disasm.
intel_perf_counters: a little tool for dumping performance counters.

Feng, Boqun (1):
Send instruction on PRE-ILK

Gwenole Beauchesne (4):
Bump gen_level to multiple of tens.
Allow Gen version decimals.
Add initial support for Haswell.
Fix JMPI encoding for Haswell.

Homer Hsing (65):
Fix a typo … lable -> label
Close input file handler yyin after yyparse
Call yylex_destroy() to free memory after yyparse()
close File yyin before calling yylex_destroy
Comment magic words “da1″, “da16″, “ia1″, and “ia16″
add data structure in src/brw_structs.h for supporting
three-source-operator instruncions
Support trinary source instruction “multiply add”.
Supporting LRP: dest = src0 * src1 + (1-src0) * src2
Supporting bit field extract and bit field insert 2
Supporting addc instruction
Delete an extra space character in brw_defines.h
Supporting instruction Bit Field Insert 1
Supporting instruction “reverse bits”
Supporting count bit set instruction
Supporting half precision to single precision float convertion
Supporting find first bit instructions
Supporting integer subtraction with borrow
Replace bzero by memset.
Better comment text. Change “c like” to “C style” in main.c
Move program_defaults init statement into variable declaration
Reduce hash value collision probability in src/main.c
Fix a typo in src/main.c: “in unit of type” -> “in unit of byte”
Make the entry point padding code logic looks nicer
Reduce memory cost in entry_table
Merge same if branches in declare_pragma section in gram.y
Pad NOP instructions instead of the ILLEGAL instruction for entry
Use bits3.if_else.jump_count instead of bits3.ud for readability
Renaming according to BSPEC: jump_count -> JIP; pop_count -> UIP.
Explain the difference between binaryinstruction and binaryaccinstruction
According to BSPEC, put PLN & BFI1 to binaryop, put SUBB to binaryaccop
Rename brw_instruction.bits3.if_else to branch
Add a test case for “.declare” pragma
Add a generic hash table algorithm. Reuse for declared_reg_table
and label_table in the future.
Fix missing environment variables problem in test/
Automatically run all test cases.
Fix field length of JIP for one-offset-branch in Gen6
Fix memory leaking in the parser
Add test case for “.declare” overriding feature.
Add second_reloc_target in the data structure.
Rewrite label matching code. Collect labels in a linked list.
Restrict type of relativelocation2 to int
Reduce replicative code in gram.y by reloc_target field in src_operand
Merge replicative code in gram.y
Support subroutine instructions, CALL & RET
Use right-recursing in parser rule inst_option_list
Supporting multi-branch instructios BRD & BRC
Fully support Gen7 branching instructions
Fix reloc_target_offset computing logic
Compile ELSE and WHILE in Gen5 as same way as in Gen4
Support Gen6 three-source-operand instructions.
Let ip_dst and ip_src become local const variable, so as to
reduce replicated code.
Replace variable init code in WAIT by src_null_reg
Support Gen6 CALL instruction.
Support Gen6 RET instruction.
Make sure BREAK/CONT/HALT work on Gen6.
Fix Gen6 ELSE instructions code logic according to bspec.
Fix JIP position for Gen6 JMPI
Make sure Gen6 ENDIF work
Make sure Gen6 IF works
Support Gen6 WHILE instruction
Show warning when compiling the grammar parser
Fix symbol register subreg number calculation rule symbol_reg_p
Fix sub-register number of an address register encoding
Fix Gen7 JMPI compilation
Fix typo. “donesn’t” -> “doesn’t”

Imre Deak (69):
fix warn: ‘div’ shadows a global declaration
fix warn in intel_error_decode: ignoring return value of ‘asprintf’
fix warn in intel_reg_snapshot: ignoring return value of ‘write’
fix warn in gem_readwrite: ‘read/write’ shadows a global declaration
fix warn in sysfs_{rc6, rps}*: ignoring return value of ‘fscanf’
fix warn in gem_reg_read: ‘read’ shadows a global declaration
fix warn in prime_nv_*: ignoring return value of ‘fgets’
fix warn in testdisplay: ignoring return value of ‘chdir’
drmtest: add function to remove an DRM FB
flip_test: free FBs after each test run
flip_test: reset the state for each test run
flip_test: check drmHandleEvents()’ return value
test_flip: fix checking for delayed event reception
flip_test: factor out drmModePageFlip
flip_test: store fb width, height in test context object
flip_test: move output panning inside the flip_handler
flip_test: factor out the event loop/wait for event logic
flip_test: factor out the final state check
flip_test: store current flip/received timestamps in the context obj
flip_test: split the flip handler into logical parts
flip_test: swap the order of check state/run test step
flip_test: factor out the event state
flip_test: don’t skip checks for sequence #1
flip_test: store the pipe id in the test context obj
flip_test: unify the name of the current test in status messages
flip_test: make page flip tests conditional
flip_test: add logic to track pending events
flip_test: add event sequence number tracking
flip_test: add check to see if any event has occured
flip_test: add wait-for-vblank tests
flip_test: increase duration for vbl+flip tests with ts check
flip_test: fixup zero timestamp for premature vblanks
flip_test: check if the vblank and flip states correlate
flip_test: add comment about the race between flip vs. vblank events
flip_test: add wf-vblank test for expired sequence
flip_test: skip check for last_received_ts for the first event
flip_test: use monotonic time to measure the test duration
flip_test: switch to using monotonic timestamps (v2)
flip_test: fix link error due to missing -lrt
tests/prime_self_import: add subtest to export/import a second gem buffer
kms_flip: suppress uninitialized var warning
lib: add helper to set VT graphics mode
kms_flip: set VT graphics mode
testdisplay: set VT graphics mode
lib: fix exit handler when multiple handlers are registered
lib: export the exit handler interface
kms_flip: do a DPMS ON when exiting with error
kms_flip: add subtests for the DPMS OFF->modeset->flip sequence
lib: make sure all rings are idle in gpu_quiescent_gpu()
tests/lib: make sure the GPU is idle at test start and exit
lib: move connector_type_str and co to drmtest
lib: add kmstest_cairo_printf_line
lib: use kmstest_cairo_printf_line in paint_marker
lib: add kmstest_get_connector_config
lib: refactor kmstest_create_fb
tests: add kms_render
lib: fix drm_fourcc.h include path
intel_batchbuffer: add support for non-32bit blt copies
lib: export drm_format_to_bpp
kms_render: fix gpu-blit for non-32bit bpps
lib: export kmstest_get_connector_default_mode
lib: shorten DP/eDP connector names
lib: handle SIGSEGV similarly to other error signals
lib: add subtest extra command line option handling
tests: add kms_setmode
lib/drmtest: fix handling of -h –help argument parsing
tests/kms_setmode: don’t save/restore vt graphics for dry-run
lib/intel_batchbuffer: remove code w/o effect
lib: fix the fix for gen5 workaround emmision

Jani Nikula (1):
quick_dump: vlv mipi dsi register support

Jesse Barnes (5):
add more VLV PCI IDs
add VLV punit & north cluster read tools
fixup VLV reg offsets, add a few more
add punit and nc read/write tools for vlv
fix breakage from newly used functions vs rebase

Kees Cook (1):
tests: add gem_reloc_overflow to check wrapping

Keith Packard (8):
Add GCC warnings
Add packed vector immediate values
Ensure that parse errors cause non-zero exit.
Support #line directives
Add disassembler (intel-gen4disasm).
Add math and urb units, deal with nop
Add conditional support to assembler. Add align16 dest support to disasm.
Support more addressing modes in disasm

Kenneth Graunke (3):
intel_chipset: Fix Haswell CRW PCI IDs.
intel_perf_counters: Abstract out Ironlake-specific code.
intel_perf_counters: Add support for Sandybridge.

Lu Guanqun (1):
fix the label checking logics

Maarten Lankhorst (1):
tests/prime_nv_pcopy.c: fail if nouveau_pushbuf_kick fails
rather than spinning

Matt Turner (3): fix
quick_dump: best practices and fix distcheck
assembler: Add support for the SENDC instruction.

Mengdong Lin (1):
quick_dump/bdw: use hex() to convert devid to hex string in error message

Mika Kuoppala (11):
tests: add gem_seqno_wrap
tests/gem_seqno_wrap: dont sync when crossing half of seqno space
tests/gem_seqno_wrap: adapt to new next_seqno debugfs interface
tests/gem_seqno_wrap: skip if debugfs entry is not there
tests/gem_ctx_exec: properly test destroy_ctx ioctl
tests: add write-verify test to gem_fence_thrash
tests/gem_seqno_wrap: verify debugfs write with readback
tests: rename debugfs base path to be more specific
tests: add i915_sfs_path
tests/ZZ_hangman: Test both error_state interfaces
tools/inter_error_decode: decode for ctl and acthd

Paulo Zanoni (14):
lib: detect PCH_LPT and PCH_NONE
intel_reg_dumper: recognize LPT
intel_reg_dumper: make Haswell dump useful
intel_reg_dumper: decode some useful Haswell registers
intel_reg_dumper: dump HSW watermark registers
lib: fix HAS_PCH_SPLIT check
intel_reg_dumper: debug SDEISR on Haswell
intel_reg_dumper: improve the dumping of backlight registers
intel_reg_dumper: add hsw_debug_lp_wm
lib: fix WM_DBG register address
intel_reg_dumper: enable the power well
tests: add pc8
tests/pc8: fix function return value
tests/pc8: don’t work around the eDP I2C bug

Rodrigo Vivi (11):
tools: intel_gpu_abrt “get” function
tools: intel_gpu_abrt collecting more useful info
tools: intel_gpu_abrt checking for root access
tools: intel_gpu_abrt bug report template.
Build: Add –disable-tests configure flag to avoid tests build
intel_chipset: Fix Haswell GT3 names.
intel_chipset: Adding more reserved PCI IDs for Haswell.
tests: ddx_intel_after_fbdev loads intel ddx after fbdev was loaded.
overlay: fix link error due to missing -lrt
NEWS: Fix dates of previous releases
bump version to 1.4 and add the release date

Thomas Jarosch (1):
Fix out of bounds memory access

Ville Syrjälä (16):
kms_flip: Add -lrt back
kms_flip: Make flip events optional
kms_flip: Add flip-vs-modeset-vs-hang test
intel_chipset: Use parens around macro arguments
intel_chipset: Add multiple inclusion guards into intel_chipset.h
kms_flip: Split the “no events” logic into a separate flag
kms_flip: Add a flip-vs-panning-vs-hang test
kms_flip: Add flip-vs-bad-tiling test
kms_flip: Don’t access freed data
tests/gem_fenced_exec_thrash: Increase MAX_FENCES to 32
tests: Use gem_available_fences()
tests/gem_tiling_max_stride: Add a test for max fence stride
tests/gem_fenced_exec_thrash: Test with > max fences
quick_dump: Add automagic DPIO register support
quick_dump: Document the register definition format
quick_dump: Add VLV DPIO registers

Xiang Haihao (1):
Add support for GEN5

Xiang, Haihao (43):
change read message format on GEN5
the offset of JMPI is in unit of 64bits on GEN5.
add -g 6 for Sandybridge
fix jump count for Sandybridge.
always set destination horiz stride for Align16 to 1 on Sandybridge.
add AccWrCtrl flag on Sandybridge
fix send instruction on Sandybridge
add support for data port write on Sandybridge.
add support for data port read on Sandybridge
sampler, urb write, null and gateway on Sandybridge are same as Ironlake.
print error message when using math function on Sandybridge.
no compression flag on Sandybridge
Send on Sandybridge uses a message register as operand src0
add support for plane instruction (pln)
add support for math instruction on Sandybridge
bump version to 1.1
Support for headerless write
Support instructions which strictly follow the documents.
fix notification count register
send instruction on GEN6
fix the parameters of register region
Add -g 7 for Ivybridge
Add support for data port read/write on Ivybridge
Add support for sample (00000) on Ivybridge
SEND uses GRFs instead of MRFs on Ivybridge
fix an error in commit cf76278
sampler/render/constant cache unit since Sandybridge
Support DP for sampler/render/constant/data cache
Support VME on Ivybridge
bump version to 1.2
A new syntax of SEND intruction on Ivybridge
Accept symbol register as the leading register of the request
Change the rule for flag register
Remove flag_reg_nr from the DW3 of an instruction
s/flag_reg_nr/flag_subreg_nr for an instruction
Add support for flag register f1 on Ivy bridge
Waring if both predication and conditional modifier are enabled
but use different flag registers
bump version to 1.3
gem_ring_sync_loop: check the rings supported by the kernel
gem_ring_sync_loop: test the new ring
tests: storedw on VEBOX
assembler: error for the wrong syntax of SEND instruction on GEN6+

Xiong Zhang (2):
lib/drmtest: add drmtest_disable/enable_prefault() function
tests: add reloc, pread, pwrite slow path subtest

Yi Sun (4):
Add option -o <number>, which can test only one specified mode.
tests/testdisplay: Specify the display.
tests/testdisplay.c: Fix the issue which don’t display anything
until ‘-o’ given.
tests/testdisplay.c: Remove the variable only_one_mode.

Zhao Yakui (1):
Add the CRE enginee for HSW+

Zhong Li (5):
gem_ring_sync_loop.c: fix an operator error
gem_cs_tlb.c: add vebox test case
gem_exec_nop.c: add vebox test case
i-g-t: check kernel enable rings or not
i-g-t: gem_dummy_reloc_loop.c: add vebox test case

Zhou Chang (1):
Add VME support in SEND

Zou Nan hai (5):
Add thread_spawner message target support.
Add support for dp_read message.
support simple expression
1. type syntax :ud :uw etc
use left recursion instead of right recursion to avoid memory
exhausted issue when compiling large source files

Zou Nanhai (1):
Add support for labeled and conditional branches

git tag: intel-gpu-tools-1.4
:  bfa2ff70c09c95fcad46e7d332e08d28  intel-gpu-tools-1.4.tar.bz2
SHA1: c118ad97d38697ca4f119df868fe5c2eca03d0ed  intel-gpu-tools-1.4.tar.bz2
SHA256: ba37f6adb2ffd3b69540ada116ad12d50e8d80c9322eca89bc23a8fe4a51eae6
:  d073a864fed557d5936e0c66b45541aa  intel-gpu-tools-1.4.tar.gz
SHA1: 26d001564f0ff9c241ec5d409698c5a108928b76  intel-gpu-tools-1.4.tar.gz
SHA256: 26387981e877980e2740897dd306d41f00eb8b7f2dee77994566a331b1360df4

Intel27 Aug 2013 03:58 am

Over a year ago Daniel Vetter started to maintain the Intel graphics kernel driver, drm/i915. He did an amazing job organizing the whole process. All trees he maintain are explained on his drm/i915 Branches Explained post.

This organization speed up he development process. With the speed came the flood of patches on our intel-gfx mailing list, what is great. The downside of the flood is that sometimes simple patches (1-2 patches) are left behind, not reviewed and even forgotten.

In order to avoid loosing patches we are temporarily/experimentally introducing the drm-intel-collector branch:

To describe drm-intel-collector I’ll quote Daniel:
“The overall idea is to make sure that simple patches don’t get lost.
Bigger patch series or feature work tends to not get lost, and really
trivial patches I tend to merge right away. But 1-2 patch stuff in
between is occasionally lost”


1. Daniel pushs drm-intel-testing
2. I rebase drm-intel-collector onto drm-intel-testing
3. I collect all simple (1-2) patches that wasn’t yet reviewed and not queued by Daniel
4. Request automated QA’s PRTS automated i-g-t tests comparing drm-intel-testing x drm-intel-collector
5. If tests are ok I send the patches as a series to intel-gfx mailing list for better tracking and to be reviewed.

There are some reasons that some patches can still be left behind:
1. It was send so long time ago. I started with patches from Jul 26th.
2. Your patch didn’t applied cleanly and I couldn’t easily solve the conflicts.
3. Kernel didn’t compiled with your patch.
4. I simply missed it. If you believe this is the case please warn me.

Yesterday I sent the first series to intel-gfx and Daniel already organized everything volunteering people for review. It seems drm-intel-collector will be useful!

All ideas to improve the process are always very welcome.

Intel16 Jul 2013 02:15 pm

This is the first post in the Power Savings post series I’m just starting to write.

I know there is nothing really new and exciting in this post once RC6 is a feature available for a coupe of years now and already enabled by default at our driver. However is the easiest topic to start with and I couldn’t let it out of the list, mainly because this is the most efficient power saving feature supported by our driver so far.

RC6 stands for Render C-State which is a low voltage state for the graphics processor. This state is entered when the graphics render engine, blitter engine and the video engine have no workload being currently worked and no outstanding graphics memory transactions.

Currently our kernel driver (i915) supports RC6 only for  2nd Generation Intel® Core™ Processors with Intel® HD Graphics (SandyBridge), 3rd Generation Intel® Core™ Processors with Intel® HD Graphics (IvyBridge) and 4th Generation Intel® Core™ Processors with Intel® HD Graphics (Haswell).

One frequent question is: how many render states does Intel GPU has, i.e. does it has RC1, RC2, RC3, RC4, RC5? The answer is: No, we only have RC6. Or GPU is on RC6 state or it is out. Low voltage or Normal voltage. However on SandyBridge and IvyBridge there are deep RC6 (RC6p) and deepest RC6  (RC6pp) states available, what means even lower voltage states. By default on SandyBridge only RC6 is enabled and on IvyBridge both RC6 and deep RC6 are enabled.

In Haswell RC6 is also enabled by default.

In order to change default configurations you must give kernel cmdline boot flag: i915.enable_rc6, where different stages can be selected via bitmask values. (0 = disable; 1 = enable rc6; 2 = enable deep rc6; 4 = enable deepest rc6). For example, 3 would enable rc6 and deep rc6, and 7 would enable everything.

Most of known issues caused by RC6 are GPU hangs. So if you are facing any gpu hung or any other issue we recommend you to disabled by using  i915.enable_rc6=0 and report a bug at following  our How to report bugs tutorial.


Intel16 Jul 2013 02:15 pm

Today I’m going to start a series of posts giving  an overview about the power savings features present, or under development, in i915 (Intel Graphics Linux Kernel Driver).

Features covered for now in this series will be:

Besides the overview I’m going to detail current implementation status at our driver, how to enable/disable, how to check running status and list known issues.

It is important to say beforehand that some of these power savings features can impact rendering performance, mainly 3D, and sometimes cause some known GPU hangs. So, if you aren’t a hardcore user and is desperate to make your laptop’s battery last a bit longer you might give a chance and try them out.

Also if you find any new bug we encourage you report the bug at following  our How to report bugs tutorial.

Intel11 Jul 2013 03:57 pm

I’m glad to share that 2013Q2 Intel Linux Graphics Stack was released this week at

The 2013Q2 highlights are: bug fixes, performance improvements, new hardware-accelerated media encoding formats, and additional hardware-accelerated video processing features.

On the last releases we are trying to improve the release notes adding more and more useful information highlighting new features and critical fixed bugs. But if you follow all release notes you probably noticed that at this time there is a mix between technical info with Marketing names and information in an easy language for non technical users. This is a reflex of new kind of users accessing website we got after we provided 1 click installer tool that allows even non technical end users to upgrade their Intel graphics stack to the latest one available.

If you have any comments or suggestions about how to improve stack release, release notes or installer don’t be shy and use our Forum.

We are now working to release next Installer version soon that will allow  users to upgrade their Fedora 19 or Ubuntu 13.04 to our 2013Q2 stack.


Intel13 Dec 2012 10:01 am

Many people thinks that it is difficult to report a bug found at Intel Graphics Stack. It is not.

  1. Forget about difficult how-tos and tutorials.
  2. Get latest Intel GPU Tools from git://
  3. Compile it: ./; make;
  4. Reboot your machine adding drm.debug=0xe log_buf_len=4194304 to Kernel cmd line.
  5. Run: sudo ./tools/intel_gpu_abrt
  6. Get intel_gpu_abrt.tar and template generated and publish it at at the correct category:
    • For 2D driver bug: Product=xorg. Component=Driver/intel.
    • For 3D driver bug: Product=Mesa.
    • For chipset i8xx/i915/i945/Q33/G33/Q35: Component=Drivers/DRI/i915.
    • For chipset i965/G35 and later: Component=Drivers/DRI/i965.
    • For DRM kernel bug: Product=DRI. Component=DRM/Intel.
    • For Libva bug: Product=libva. Component=intel

I expect to remove steps 2 and 3 once my new changes arrives at your Linux distribution.

Intel08 Dec 2012 09:52 am

Now on, I’ll try to write more here about news from our gfx land. Some news listed here might not be so new to you, but I just came back from a 20 days vacations and I’m still jumping back.

Intel 2012Q4 gfx stack released.

Highlights of this release: New features: basic 2D and 3D Haswell support with all the PCI IDs, ValleyView support, OpenGL support for Haswell, hardware accelerated video decoding, and encoding for Haswell. Since the last release, there were major improvements and bug fixes in all the areas of our drivers.

HSW is already in a good shape right now on  drm-intel-nightly branch from our official development tree maintained by Daniel Vetter at: and it is being pushed upstream landing in 3.8 to be released early next year.

There are more stuff besides HSW going on on the kernel side. Daniel Vetter has written a good post about new stuff comming to 3.8.

We also had a Internal Kernel Summit activity in London, before my vacation were we defined tasks for next year and created a rotating Bug Team responsible for take special attention to all bugs filed on kernel and freedesktop bugzilla agains drm/i915. The intention is to avoid having bugs there not updated for a long time and the reports are already been sent to mailing list.

On  2D side my highlights go to

- XWayland updated to work with Wayland 1.0 by Daniel Stone

- Added missing gtf modes  allowing games to use low mode trough panel fitter to upscaling to fill screen in a better shape.

- SNA Performance. Benchmark by Phoronix.

On  3D side, Intel devs are working on OpenGL ES3, and just merged ETC2 texture compression, as already described at this Phoronix post. Phoronix also perform benchmarks at Mesa 9.0 x Mesa 9.1.

On  Media side, I’ll just paste updates from Gwenole Beauchesne:

* libva-intel-driver 1.0.19 released on 09.Nov.2012

- Add support for Haswell (decode, encode)

- Add support for raw DRM, e.g. display-less pipelines

- Additional bug fixes for improved stability

* gstreamer-vaapi 0.4.1 released on 27.Nov.2012. Major new features include:

- Add support for H.264 interlaced streams

- Fix memory leak in MPEG-2 decoder for empty user-data packets

- Fix H.264 decoder with MMCO-based reference picture marking process

- Fix decoders to honour end-of-stream messages (i.e. flush pending contents)

- Fix pixel-aspect-ratio reported to downstream elements

Requirements for supporting Wayland 1.0/x:

- libva from git master (1.1.1.pre1)

- libva-intel-driver from git master (1.0.20.pre1)

- gstreamer-vaapi 0.4.1


« Previous PageNext Page »