Commit Graph

582 Commits

Author SHA1 Message Date
Damien Lespiau 753352cb3c igt_kms: Introduce a for_each_pipe() macro
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:21 +01:00
Damien Lespiau 068efd8d9f igt_kms: Add support for setting plane rotation
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:21 +01:00
Damien Lespiau b2eb48576f igt_kms: Add a way to query of the plane supports rotation
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:21 +01:00
Damien Lespiau 143c3a7575 igt_kms: Provide a get_plane_property() shorthand
So one doesn't have to write the plane type all the time.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:21 +01:00
Damien Lespiau 33842d5940 igt_kms: Factor out a generic get_property() out of get_drm_plane_type()
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:21 +01:00
Daniel Vetter bebcb582fc lib/igt_core: Don't log when listing subtests
I've noticed some spam in the userptr list ...

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-07-11 15:23:54 +02:00
Thomas Wood b81020526f lib: allow the edid to be reset
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-11 11:47:46 +01:00
Thomas Wood b6ed9fb0d9 lib: add igt_enable_connectors and igt_reset_connectors
igt_enable_connectors forces connectors to be enabled where doing so is
known to work well. igt_reset_connectors resets the force state on all
connectors.
2014-07-11 11:47:46 +01:00
Thomas Wood 13cd79c128 lib: add the ability to set an EDID data block on a connector
Add a function to set an EDID data block on a connector and include a
set of generic EDID blocks for testing.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-11 11:47:46 +01:00
Thomas Wood 37ffb22d3c lib: add function to change connector states
Add an API function and a test program to force a particular state on a
connector.

v2: mask the correct part of the minor number to get the card number (Chris
    Wilson)

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-11 11:47:46 +01:00
Chris Wilson f47ee31dd5 Wait for any pid in order to reap failure quicker
When waiting for the forked tests, we can respond quicker to a failure
(such as oom) by waiting for any child to exit rather than waiting for
each child in order. Then when we see that a test failed, we can kill
all other children before aborting.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-11 10:41:28 +01:00
Damien Lespiau e16d4a2d68 core: Apply the same treatment to the in errno message in __igt_fail_assert()
Just like the it was done for the requirement message, display the errno
message only if errno is set, and display it at the end of the assert
message.

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-10 18:05:33 +01:00
Damien Lespiau 4145462250 core: Only display the errno message if errno is set
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-10 18:05:25 +01:00
Damien Lespiau b2d1a598ab core: Put the requirement failure messages together
The errno message was a bit in the middle here, it makes more sense to
group the messages about why the test requirement wasn't met together.

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-10 18:04:47 +01:00
Mika Kuoppala 1e5570e28a lib/gen6_render: removed duplicate defines
Textually the same so no harm was done and no warnings
from compiler either.

Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
2014-07-10 17:49:44 +03:00
Yi Sun b5333b416f kms_plane: Add panning test for primary plane
Get CRCs of a full red and a full blue surface as reference.

Create a big framebuffer that is twice width and twice height as the
current display mode.

Fill the top left quarter with red, bottom right quarter with blue
Check the scanned out image with the CRTC at position (0, 0) of the
framebuffer and it should be the same CRC as the full red fb
Check the scanned out image with the CRTC at position (hdisplay,
vdisplay) and it should be the same CRC as the full blue fb

v2: Fix a few things here and there (Damien)

Cc: Lei Liu <lei.a.liu@intel.com>
Cc: Yi Sun <yi.sun@intel.com>
Signed-off-by: Lei Liu <lei.a.liu@intel.com>
Signed-off-by: Yi Sun <yi.sun@intel.com>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-07 18:27:10 +01:00
Damien Lespiau 202b2b9567 pipe_crc: Make collect_crc() ensure the CRC looks somewhat valid
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-07 17:59:52 +01:00
Damien Lespiau 09196af60d pipe_crc: Warn if the CRC values is 0xffffffff
This is what we read when the CRC logic in in a powered down well. We
really don't want that to happen.

In theory, it's possible 0xffffffff to be a valid CRC value, so I don't
assert here.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-07 17:59:52 +01:00
Damien Lespiau 4f83c4efa8 lib: Reset 'position_changed' after a drmModeSetCrtc()
So the next commit won't trigger a drmModeSetCrtc() if the primary plane
doesn't have any update needing it.

This shouldn't be a problem at the moment as we don't allow the primary
plane to be of a different size than the CRTC viewport, but it will most
likely change in the future and we don't want to have that bug there.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-07 17:58:26 +01:00
Matt Roper c8b8f8abf6 lib/kms: Provide universal plane #define's
There hasn't been a libdrm release containing the universal plane
definitions yet, so add them to igt_kms to allow compilation to succeed
in the meantime.

Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-07-07 18:27:07 +02:00
Matt Roper 04067c3d50 lib/kms: Drop primary plane windowing test from igt_plane_set_position()
None of our hardware can support this today, but we'd like to be able to
write tests that check that the kernel returns the proper error code
when userspace tries it anyway.

Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-04 12:04:17 +01:00
Matt Roper 794a9fd6bc lib/kms: Add universal plane support (v2)
Add support for universal planes.  This involves revamping the existing
plane handling a bit to allow primary & cursor planes to come from the
DRM plane list, rather than always being manually added.

v2: Don't drop fixed ordering of internal plane list.  Primary will
    always be index 0, cursor will always be last in internal plane
    list.

Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-04 12:04:14 +01:00
Matt Roper 82bc03f392 lib/kms: Add igt_display_try_commit2()
Add a new public API that will attempt a display commit, but will return
an error code upon failure rather than failing the IGT test.  This is
intended to allow igt tests to verify that the expected error codes are
returned to userspace when invalid requests are issued.

Note that with non-atomic programming, a single commit operation has
several potential failure points internally; the first non-zero error
code encountered will be returned immediately and no further programming
will be performed by the commit.  It is the caller's responsibility to
return to a sane state.

Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-04 12:04:12 +01:00
Matt Roper 1c25547d48 lib/kms: Add igt_display_commit2()
Add a new commit interface, igt_display_commit2(), that allows tests to
specify which programming API should be used to perform hardware
updates.  COMMIT_LEGACY is the only option for now, but universal
and atomic interfaces will be added as additional options in the future.

igt_display_commit() remains unchanged for existing tests that wish to
place the hardware in a specific state, but that don't care which API is
used to achieve that state.  The legacy API will be used by default for
now, but in the future we may decide to make the default API
configurable via an environment variable.

Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-04 12:04:01 +01:00
Matt Roper 2a3e212acc lib/kms: Track need for vblank wait locally
The need to wait for a vblank after programming is due to the way we
actually program the hardware.  Move need_wait_for_vblank out of the
pipe and into a local variable in preparation for future programming
styles (e.g., atomic pageflip) that will need different logic.

Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-04 12:03:45 +01:00
Matt Roper 3cc60bab46 lib/kms: Drop igt_pipe->need_set_{crtc, cursor}
The "need" flags on igt_pipe simply mirror the fb_changed field of the
primary/cursor planes.  Drop them and just use fb_changed instead.

Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-04 12:03:26 +01:00
Daniel Vetter 13b3e5f3e0 Paritially revert "lib: add missing includes to headers"
This reinstates the #includes for lib/debug.h since without that the
shader debugger fails to build. You need to manually enable it with
./autogen.sh --enable-shader-debugger and the fail only happens when
running a clean build with

$ git clean -dfx && ./autogen.sh --enable-shader-debugger && make

I have no idea what breaks, but this restores the build.

Reported by Ben Widawsky.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-06-17 21:26:28 +02:00
Thomas Wood d96490af99 lib: add missing includes to headers
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-06-16 20:11:57 +02:00
Thomas Wood 5874daddc4 lib: ensure igt_display_init clears the memory for the display struct
Add the call to memset that was accidentally removed in:

commit 1e9e1baba3
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Thu Mar 13 17:20:05 2014 +0100

    lib/igt_kms: rip out custom verbose loggin support

    Instead just piggy-pack on top of igt_log.

    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-06-16 20:11:51 +02:00
Ville Syrjälä 8c1566e2d9 tools/intel_display_poller: Add a new tool that will poll various display registers
intel_poller can be used to poll various display registers
(IIR,scanline/pixel/flip/frame counter, live address, etc.).

It can be used to determine eg. at which scanline or pixel count certain
events occur.

v2: s/intel_poller/intel_display_poller/

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2014-06-13 20:39:13 +03:00
Ville Syrjälä 71874f4a52 tools: Add intel_iosf_sb_{read,write} tools
Add generic tools to poke at IOSF sideband. The user needs to
manually specify SB port as well as the register.

TODO: Maybe add symbolic names for the units? Would avoid having
to trawl the docs for the magic hex value.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2014-06-13 20:28:21 +03:00
Ville Syrjälä a49906e266 lib/igt_debufs: Add IGT_NO_FORCEWAKE environment variable
If IGT_NO_FORCEWAKE is set, skip the forcewake open. Useful when you
want to poke at register without otherwise disturbing the GPU.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2014-06-13 20:28:20 +03:00
Ville Syrjälä aba3582bb4 lib/igt_debugfs: Don't fail if debugfs is already mounted
Remove the igt_assert() from the debugfs mount. It will fail if debugfs
is already mounted. With the assert in place it's very annying to use
igt without i915 loaded (eg. to dump BIOS configured registers).

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2014-06-13 20:28:20 +03:00
Daniel Vetter 87042d671f NEWS: Mention igt.cocci
And also pimp the spatch file itself with usage hints.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-06-13 18:14:13 +02:00
Daniel Vetter 2347e6d21e lib: Introduce igt_fail_on/_f
I've yet again totally screwed things up (this time automated with
cocci even, but not yet pushed luckily). So finally add a new version
for easier conversion and adjust the cocci script.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-06-13 18:14:13 +02:00
Daniel Vetter 46811c849a lib/igt.cocci: Also add rule to use igt_warn_on_f
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-06-13 18:12:42 +02:00
Daniel Vetter 9eb9345f99 lib/igt.cocci: Convert abort() to igt_fail
abort should only be used for internal library checks - using
abort() we get a "crash" result, using igt_fail we get "fail"
in piglit.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-06-13 18:12:42 +02:00
Daniel Vetter bde52d1a08 lib/igt.cocci: Conversion to igt logging
Also update old hunks to match on igt logging instead of fprintf.

v2: Don't forget about perror.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-06-13 18:12:36 +02:00
Daniel Vetter 6b73a9a288 tests: Don't use stderr for informational messages
These should go to stdout instead. The next patch will clean this up
with cocci, so no change from fprintf(stdout, to printf( here.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-06-13 18:09:05 +02:00
Daniel Vetter 66b31b6e19 lib: add igt.cocci
Small start but useful to collect refactorings/simplifications for
common igt patterns. Please add more if you stumble over some so that
we can occasionally run this to clean up the tests.

I haven't figured out yet how to do the assert_cmpint->assert_eq
transformation.

Run this with

spatch --sp-file lib/igt.cocci --in-place tests/*.c

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-06-13 11:17:22 +02:00
Daniel Vetter 3448b5ad4b lib/igt_core: Add igt_assert_eq
Suggested by Chris Wilson. Not yet rolled out since I'm trying to use
cocci for this.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-06-13 11:17:04 +02:00
Thomas Wood 52a3a2e205 lib: various documentation fixes
Fix some documentation comments and mark some struct members private.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-06-12 10:12:13 +01:00
Thomas Wood 1e5c8780d0 lib: remove /** from comments that are not API documentation
These comments are not gtk-doc comments, so replacing /** with /*
prevents any gtk-doc warnings.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-06-12 10:12:13 +01:00
Daniel Vetter 618aca1fb9 lib/intel_os: Spelling fix
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-06-12 09:04:45 +02:00
Chris Wilson 210d20f413 API docs for intel_check_memory()
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-06-10 14:29:27 +01:00
Rodrigo Vivi 82ad15fd10 Fix make distclean by fixing includes of version.h
Actually only the igt_core was breaking the make distcheck,
but let's make it consistent and let the code cleaner.

Credits-to: Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@gmail.com>
2014-06-09 11:17:20 -07:00
Chris Wilson b428f24f7c lib: Add debug to memory limits checks
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-06-05 13:34:02 +01:00
Daniel Vetter 5141b21f91 lib/igt_debugfs: Fix spelling docs
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-06-05 10:29:17 +02:00
Kenneth Graunke badb026ae0 rendercopy/gen8: Also emit 3DSTATE_WM_DEPTH_STENCIL.
rendercopy was failing to emit 3DSTATE_WM_DEPTH_STENCIL, which is a new
packet on Broadwell.  Mesa emits this packet.

This appears to fix various tests on a fresh boot, when Mesa has never
run.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=78890
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=78891
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=78935
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=78936
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=78937
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=78938
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
Tested-by: Guo Jinxian <jinxianx.guo@intel.com>
Signed-off-by: Ben Widawsky <benjamin.widawsky@intel.com>
2014-06-04 10:54:38 -07:00
Ville Syrjälä 0f906083f2 lib/intel_iosf: add second phy support
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
2014-06-03 22:19:42 +03:00