3208 Commits

Author SHA1 Message Date
Chris Wilson
4d4f4b213c igt/kms_flip: Skip if headless
If there are no connectors, we cannot perform any pageflips and so we
have nothing to test.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=73640&list_id=446828
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-19 11:59:42 +01:00
Paulo Zanoni
d0dc2c5b6a tests/pm_rpm: add dpms-mode-unset{,-non}-lpsp subtests
These tests currently trigger WARNs on our Kernel. Let's make sure we
fix the bug and it never comes back.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2014-07-17 18:01:19 -03:00
Thomas Wood
8a3853c812 core: increase the exit handler limit
Increase the maximum number of exit handlers since some tests now
require more that the previous limit.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81320
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-17 11:25:19 +01:00
Daniel Vetter
428060c555 lib/igt.cocci: Add s/assert/igt_assert/
People use it way too often, and it upsets the test library. The only
valid places to use this is of igt infrastructure self-tests where you
need to check something _without_ all the other abi use checks
igt_fail and friends do. For those tests just #define an internal
assert to hide it.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-07-15 10:23:20 +02:00
Daniel Vetter
43784baa13 tests/gem_userptr_blits: Polish
- Drop return values for test functions - we rely on the implicit
  control flow from igt_ checks.
- Don't use assert directly, this upsets the test flow logic (and
  results in a CRASH result instead of FAIL).

Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-07-15 10:18:28 +02:00
Tvrtko Ursulin
abbfecb015 tests/gem_userptr_blits: Race between object creation and multi-threaded mm ops
Userptr v23 was not thread safe against memory map operations and object
creation from separate threads. MMU notifier callback would get triggered
on a partially constructed object causing a NULL pointer dereference.

This test excercises that path a bit. In my testing it would trigger it
every time and easily, but unfortunately a test pass here does not guarantee
the absence of the race.

v2: Added explicit cancellation point and removed the stop flag.
    Use only igt_assert().

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-07-15 10:11:27 +02:00
Daniel Vetter
3f50598fb7 lib/igt_core: Fixup gtkdoc for logging functions
Without the () gtkdoc won't recognize them as function references.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-07-14 23:21:04 +02:00
Damien Lespiau
bcb2c65a14 tests: Move gem_render_copy_redux to the list of multi-subtests tests
Can we find a way to fix those for good? My preference goes to not
having that single/multi split but always have a test being a list of
one or more subtests.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-14 18:08:32 +01:00
Daniel Vetter
5a98fe9d4a lib: Add argc/argv to igt_simple_init
There's a pile of ideas around to add generally useful options like
--debug to all igt tests. Or unify the runtime behaviour between
simple and subtest tests a bit more.

The first step to get there is to add argc/argv to igt_simple_init so
that we can get at the argument list.

Cc: Tim Gore <tim.gore@intel.com>
Cc: Thomas Wood <thomas.wood@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-07-14 15:03:59 +02:00
Tim Gore
c7be53c7cb intel-gpu-tools: Dont build kms_force_connector if no cairo
kms_force_connector is a new test that requires cairo.
I have added it to the list of tests not to build on
Android unless ANDROID_HAS_CAIRO is set.

Signed-off-by: Tim Gore <tim.gore@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-07-14 15:03:59 +02:00
Chris Wilson
b3d038a2b9 igt/gem_userptr_blits: Add missing RAM check before coherency tests
-ENOCOFFE.

References: https://bugs.freedesktop.org/show_bug.cgi?id=79237
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-14 10:33:55 +01:00
Chris Wilson
52ac9a4b57 igt/gem_userptr_blits: Add missing RAM check before coherency tests
References: https://bugs.freedesktop.org/show_bug.cgi?id=79237
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-14 10:30:36 +01:00
Chris Wilson
e74dd22ff8 igt/gem_close_race: Increase GPU load
Increate the GPU load slightly, but mitigate the CPU overhead from
clflushing by keeping the object alive using flink. This has also the
side-effect of magnifying the desired busy-close race.

References: https://bugs.freedesktop.org/show_bug.cgi?id=71029
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-12 09:13:12 +01:00
Chris Wilson
b9c705f4da overlay: Baytrail needs a custom GPU frequency parser
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-11 23:39:36 +01:00
Chris Wilson
98165d60be igt/gem_close_race: Trim object size
The challenge here is to race GPU activity versus the gem_close. Using a
large objects makes the window of GPU activity larger - except on !llc
systems we then incur massive overhead from clflush, likely destroying
any race (due to mutex contention). And that mutex contention is
amplified by the number of cores - bad news for Baytrail.

Give up and make the objects smaller and hope that the test is run
frequently enough to catch the race.

References: https://bugs.freedesktop.org/show_bug.cgi?id=71029
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-11 23:39:36 +01:00
Chris Wilson
f796d9958b igt/gem_tiled_swapping: Speed up slightly
The exercise is moving tiled objects in and out of swap. They are moved
en-block and we test them all, therefore we can randomly test different
bytes from each buffer to have reasonable coverage of all tiles. This
shifts the bulk of the work from checking the tiled bo to kswapd.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-11 20:41:25 +01:00
Chris Wilson
cfc6922328 configure: Only build overlay if dri2proto is present
Instead of making dri2proto mandatory, disable intel-gpu-overlay if it
is not installed.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-11 20:41:25 +01:00
Daniel Vetter
8bf115ed99 lib/igt.cocci: Add stanza for for_each_pipe
Damien dodged this ...

Also run the script while at it.

v2: Don't just capture identifiers for pipe, but also expressions.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-07-11 17:43:22 +02:00
Damien Lespiau
7bf0f7fc58 lib: Extract gem_get_tiling() from a couple of tests.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:23 +01:00
Damien Lespiau
92a2b292df kms_rotation_crc: Use the igt_kms enum to encode the plane rotation
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:23 +01:00
Damien Lespiau
a58f8b93b4 kms_rotation_crc: Remove unnecessary includes
Turns out we didn't need most of them.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:23 +01:00
Damien Lespiau
1a75439667 kms_rotation_crc: Always use the primary plane to compute the reference CRC
Trying to disable the primary planes isn't exactly working at the
moment. W/A it until it works.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:23 +01:00
Damien Lespiau
282f5605b0 kms_rotation_crc: Document the two steps in prepare_crtc()
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:23 +01:00
Damien Lespiau
05f3897dc1 kms_rotation_crc: Don't compile the test on Android with no cairo support
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:23 +01:00
Damien Lespiau
f7a37f02f7 kms_rotation_crc: Add the test to .gitignore
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:23 +01:00
Damien Lespiau
8767a794bb kms_rotation_crc: Properly paint the whole frame buffer
The -1 meant we weren't properly filling the whole fb.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
1bcac4dcb3 kms_rotation_crc: Don't commit with no fb set up
prepare_crtc() was trying to commit a display state without any fb to
scan out...

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
c4564e0a51 kms_rotation_crc: Allow the sprite test to run even without universal planes
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
2eaa50f02e kms_rotation_crc: No need to test for NULL before freeing the pipe CRC object
igt_pipe_crc_free() does that check already.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
05f90b0308 kms_rotation_crc: Remove plane from the state
having everythin in the data_t structure makes it hard to understand
what should be set when. Replace that by explicit function parameters.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
fe8373d437 kms_rotation_crc: Remove the sleep(2)
One can inspect the output of the igt_kms API by setting
IGT_DISPLAY_WAIT_AT_COMMIT=1.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
ffc954e739 kms_rotation_crc: Remove 'output' from the state
This restore the balance between prepare_crtc() and cleanup_crtc(), both
now taking the output as a parameter.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
b146e8128d kms_rotation_crc: Remove the test on output->valid
This test is already done by the for_each_connected_output() macro.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
aef475b6f9 kms_rotation_crc: Use for_each_pipe()
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
8843bef280 kms_rotation_crc: Remove now unnecessary defines
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
39abe7790f kms_rotation_crc: Use igt_plane_set_rotation()
More code we can remove from the test.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
8facccfae4 kms_rotation_crc: Don't store 'pipe' in the state
This variable is only needed for prepare_crtc(), need need to put it in
the test state.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
f7250d041d kms_rotation_crc: Don't store rotate in the test state
We don't use it anywhere else than the test function.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
eb81a922c7 kms_rotation_crc: Always disable the plane in cleanup
There's no need for this check, always use set_fb(NULL) on the plane.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
13e979c764 kms_rotation_crc: Unify the two tests
The only difference is which plane we are talking about. So we really
need one function here with a paramater.

Well, almost. For the primary plane we need to ensure we support
unviversal planes.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
063d22ecea kms_rotation_crc: Just store the igt_plane_t in data
Now that we're always using an igt_plane_t, we can get rid of ->type to
use ->directly without those switch() or if()/else

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
0b3a30ee5a kms_rotation_crc: Skip the tests if rotation is not supported
This happens when the kernel lacks the rotation patches.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
5edab97f7f kms_rotation_crc: Style issue: binary operators need spaces before and after
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
7ae5d9b347 kms_rotation_crc: Use drm_plane from igt_plane_t
So we don't need all that extra code to grab the drm_plane structure for
the primary_plane.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
7e7c625441 kms_rotation_crc: Remove useless comments
A typical example of what comments shouldn't be:

 case DRM_PLANE_TYPE_PRIMARY: /* primary */

Well, yes!, it's written just there, PRIMARY!

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
19743a1435 kms_rotation_crc: Factor out common primary/sprite code in prepare_crtc()
This results in less code, always a good thing. Also, we only really
need one reference CRC.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
92b29b18ca kms_rotation_crc: Factor out the square drawing function
Making function to the similar things is very common in programming.
Let's do it once again.

Cairo being a drawing library, it can be used to do the rotation!

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
78fac76523 kms_rotation_crc: Fix style issue: single statement conditionals
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
de9c1687f9 kms_rotation_crc: Fix style issue: '{' at the end of lines
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00
Damien Lespiau
1025a114c6 kms_rotation_crc: Require universal planes for the testing primary rotation
Otherwise the test will fail instead of just skipping.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:22 +01:00