1959 Commits

Author SHA1 Message Date
Derek Morton
1f6f6c07bd tests/gem_cpu_reloc: Fix gem_cpu_reloc OOM failure
On android with small memory footprints gem_cpu_reloc can fail
due to OOM.

Refactor gem_cpu_reloc into 2 tests, a basic test which performs
10 relocations and a full test which skips if there is insufficient
memory.

Changed the memory required test to better estimate the actual
RAM used.

v2: Addresed comments from Thomas Wood

Signed-off-by: Derek Morton <derek.j.morton@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-05-14 16:41:37 +01:00
Paulo Zanoni
1a80f90b7d tests/kms_fb_crc: fix the reference CRC checking
Now we get the reference CRCs on separate untiled FBs just to make
sure FBC is not there to mess the CRC computation. We also get the
reference CRCs for buffers that were drawn in the same way that we
draw them during the tests, so we can finally get rid of that FIXME
comment we have!

With this, kms_fbc_crc now actually tests something instead of just
wasting CPU cycles...

Fixes regression introduced by:

commit 562bbe12f6fb75811a746c742a28d32a17b26aa9
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Fri Feb 27 22:04:18 2015 +0100
    tests: Remove usage of igt_crc_equal and _non_null

Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-05-14 10:02:07 -03:00
Paulo Zanoni
31906084de tests/kms_fbc_crc: extract fill_mmap_{cpu,gtt}()
Just like we have fill_render() and fill_blt(). I'm also going to use
fill_mmap_gtt() for the code that generates the reference CRCs.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-05-14 10:02:07 -03:00
Paulo Zanoni
b3faeb16fe tests/kms_fbc_crc: make the blt test draw the same pattern
... as the other drawing tests: single white pixel at top/left of the
screen, instead of painting the whole screen blue.

This will make it much easier to fix the CRC checking code.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-05-14 10:02:07 -03:00
Paulo Zanoni
5d3c2a6353 tests/kms_fbc_crc: extract check_crc()
To remove some duplicated code. When we finally fix that FIXME, the
code will get a little bigger too.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-05-14 10:02:07 -03:00
Paulo Zanoni
a976d7e44a tests/kms_fbc_crc: refactor context handling code
Just a small modification to make the code a little easier to
understand, IMHO.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-05-14 10:02:07 -03:00
Paulo Zanoni
fceed3a585 tests/kms_fbc_crc: unify flip handling
Just a small simplification to make the code a little easier to
understand, and to help us when we further split drawing vs flipping
later.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-05-14 10:02:07 -03:00
Paulo Zanoni
036401d42c tests/kms_fbc_crc: increase the FBC wait timeout
Now that we moved to the frontbuffer tracking scheme, it may take a
long time for FBC to be updated after it is invalidated: 300ms is not
enough anymore.

The problem starts when i915_gem_execbuffer2() indirectly calls
intel_fb_obj_invalidate(), which disables FBC. After this, FBC only
gets reenabled when i915_gem_retire_work_handler() happens and
indirectly calls intel_frontbuffer_flush(). Notice that while FBC is
not yet enabled, the screen contents are correct, so this shouldn't
really be a bug.

Previous versions of this patch were replacing the gem_bo_busy() calls
with gem_sync(), but after some discussion we concluded this was not
the correct way to handle the problem, so let's just increase the
timeout so we can kill those subtest failures.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-05-14 10:02:07 -03:00
Paulo Zanoni
8c3ac50b00 tests/kms_fbc_crc: exec_nop() can also invalidate FBC
So make sure that, at prepare_test(), we wait for FBC to be enabled
again after we run the exec_nop() call. Since after this happens, we
just assert fbc_enabled() at test_crc() instead of waiting for it to
be enabled.

This is now needed because we moved to software frontbuffer tracking,
so it can take some considerable time for FBC to be reenabled after it
is disabled.

A previous version of this patch was just calling gem_sync() after
exec_nop().

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-05-14 10:02:07 -03:00
Paulo Zanoni
641d535a03 lib/debugfs: wait_for_keypress("crc") when collecting CRC
Let's just steal the "crc" namespace and add this by default to
igt_pipe_crc_collect_crc() instead of adding more calls to other
tests. If tests want special waits on just some of their collect_crc()
calls, they can use another name instead of "crc".

This is very useful when developing, especially when the CRC we get is
wrong: we want to look at the screen to see what's going on before we
can think about how to fix the problem. So let's add this to the lib
instead of adding this to every single test I need to debug.

v2: Add some documentation (Daniel).

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-05-14 10:02:07 -03:00
Chris Wilson
2ce298cf13 igt/gem_stream_writes: Use execbuf LUT to shave a few cycles off dispatch
Since our goal is to have concurrent read/writes of GPU buffers, we want
to spend as little time in between as possible.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-05-12 15:35:32 +01:00
Daniele Ceraolo Spurio
27cf5847dc tests/gem_cs_tlb: fix hardcoded ring id
The test has 4 subparts, one for each ring, but internally they all
submit to ring 0. Fix it to use the provided ring_id

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-05-12 15:30:37 +02:00
Tvrtko Ursulin
8a5736b496 kms_flip_tiling: New tiling tests, including Y/Yf
New subtests to excercise flips from tiled to tiled and from
linear to tiled frame buffers.

These will catch display programming issues like not preserving the
tiling mode in page flips or not re-programming the watermarks.

v2: Cleanup crc object after failing subtests.

v3:
   * Wait for page flip completion instead of vblank. (Chris Wilson)
   * Added linear->tiled flip tests to catch watermark programming issues.

v4:
   * Refactored for less code.
   * Check crc after page flip to ensure it happened. (Chris Wilson)
   * Skip rather than fail when flip fails. (Chris Wilson)

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-05-12 13:45:36 +02:00
chandra konduru
b6d26c2a48 i-g-t: Update kms_panel_fitting to work on other platforms
kms_panel_fitting currently enabled for SKL only, but as
panel_fitters are available on prior platforms, enable this
kms test for them too.

Signed-off-by: chandra konduru <chandra.konduru@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-05-12 13:45:36 +02:00
Chris Wilson
f5dd258cc7 igt/gem_streaming_writes: Build in a self-test
Use the first pass to write all values prior to the initial execbuf to
verify that the copy itself is true. Subsequent passes then focus on
verifying that writing values whilst the GPU is reading from
neighbouring values is then correct.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-05-12 10:04:46 +01:00
Chris Wilson
a5a010c82d igt/gem_mmap/huge-bo: Fix cut'n'paste error
One paste too many before pushing.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90411
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-05-12 09:30:04 +01:00
Chris Wilson
357073c257 igt/gem_streaming_writes: Trim number of batch buffers allocated
Reduce memory usage for batches by a factor of 64 - which we immediately
spend some of in increasing the stress.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-05-11 21:21:36 +01:00
Damien Lespiau
09ea86eac1 kms_cursor_crc: Move comment to the appropriate place
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-05-11 17:06:56 +01:00
Chris Wilson
672238dbf7 igt: Add gem_streaming_writes
This tries to replicate the missing barrier observed when using
asynchronous mmap(wc) on byt.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-05-11 16:19:12 +01:00
Chris Wilson
09f4175889 igt/gem_mmap_gtt: Add pagefault-of-doom failure case
This is a test that should be a showcase for partial views...

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-05-08 16:45:34 +01:00
Chris Wilson
be955173d0 igt/gem_mmap_gtt: Check GTT mmapping of large tiled objects
Move function CPU mmap test of large bo to gem_mmap, and include a
page-by-page copy between two huge objects (as we have had many bugs
triggering pagefault-of-doom for full apertures before).

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-05-08 14:42:27 +01:00
Paulo Zanoni
cf9f48e704 lib: add igt_draw
For all those IGT tests that need an easy way to draw rectangles on
buffers using different methods. Current planned users: FBC and PSR
CRC tests.

There is also a tests/kms_draw_crc program to check if the library is
sane.

v2: - Move the test from lib/tests to tests/ (Daniel).
    - Add igt_require() to filter out the swizzling/tiling methods we
      don't support (Daniel).
    - Simplify reloc handling on the BLT case (Daniel).
    - Document enum igt_draw_method (Daniel).
    - Document igt_draw_get_method_name() (Paulo).
v3: - Add IGT_DRAW_MMAP_WC (Chris).
    - Implement the other trivial swizzling methods (Chris).
    - Remove the gem_sync() calls (Chris).

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-05-07 15:11:49 -03:00
Paulo Zanoni
8d3023c15b tests/kms_fbc_crc: fix debugfs read
Commit 47f6b1305cc3752f318a555b932e194e1500c1d8 completely broke this
test due to the fread() assertion. When we're reading the debugfs file
we really don't care about how many bytes we read because the number
is not constant and we just use strstr() later. Change the assertion
to make it check for at least 1 byte read, just to make sure no one
changes that again.

Regression introduced by:
commit 47f6b1305cc3752f318a555b932e194e1500c1d8
Author: Thomas Wood <thomas.wood@intel.com>
Date:   Wed Mar 25 16:42:57 2015 +0000
    igt.cocci: check the return values of various functions

Cc: Thomas Wood <thomas.wood@intel.com>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-05-07 14:58:19 -03:00
Daniele Ceraolo Spurio
159562c825 tests/gem_ppgtt: Check for vm leaks with flink and ppgtt
Using imported objects should not leak i915 vmas (and vms).

In practice this simulates Xorg importing fbcon and leaking (or not) one vma
per Xorg startup cycle.

v2: use low-level ioctl wrappers and bo offset to check the leak (Chris)
v3: use the flinked bo as batch (Chris)
v4: add check on offset, remove unneeded  assignments (Chris)

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> (v2+)
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-05-07 08:43:32 +02:00
Paulo Zanoni
c0ed7d344a tests/kms_fbc_crc: remove redundant information from data_t
While it is nice to have shorter names for the most-accessed
variables, it makes the code more difficult to read since it's not
clear to the code reader whether that "gem_handle" is from some FB or
something else. The reader also has to audit the code to see if, for
example, the value of data->handle[0] stays consistent with
data->fb[0].gem_handle all the tame or if at some point the value is
replaced with something else. So remove the redundant information,
making it explicit that we're using the gem handles and FB IDs of the
framebuffers all the time.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-05-05 17:29:14 -03:00
Paulo Zanoni
235e87de45 tests/kms_fbc_crc: use igt_pipe_crc_collect_crc()
Instead of its hardcoded implementation.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-05-05 17:28:50 -03:00
Paulo Zanoni
26ff2c7daa tests/kms_fbc_crc: add wait_for_fbc_enabled()
The code has a common pattern of "wait 300ms, then check if FBC is
enabled". Most of the time FBC is enabled in either 50ms or 0ms, so
introduce wait_for_fbc_enabled(), which can return much earlier if FBC
is actually enabled before the 300ms timeout.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-05-05 17:28:18 -03:00
Paulo Zanoni
9bb04d3aa6 lib: add igt_wait()
Just a little helper for code that needs to wait for a certain
condition to happen. It has the nice advantage that it can survive the
signal helper.

Despite the callers added in this patch, there is another that will go
in a separate patch, and another in a new IGT test file that I plan to
push later.

v2: Check COND again before returning in case we hit the timeout.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-05-05 17:27:49 -03:00
Jani Nikula
db84a8cf14 tests/gen7_forcewake_mt: use local mmio variable
igfx_get_mmio() uses the global mmio variable by accident. Use a local
variable instead.

The intention is to rename the global variable later on, so shadowing it
here does not matter.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
2015-05-05 13:10:12 +03:00
David Herrmann
30e84df0c1 tests: add drm_auth tests for generic DRM-auth-magic testing
This adds tests/drm_auth.c which tests for drmGetMagic() and
drmAuthMagic() deficiencies.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-05-05 09:44:49 +02:00
Michel Thierry
3be592001b igt/gem_ctx_exec: Add lrc lite restore subtest
Exercise lite-restore (re-submit a context that is currently running),
by queueing several small batchbuffers.

This test helps to validate WaIdleLiteRestore.

Signed-off-by: Michel Thierry <michel.thierry@intel.com>
2015-05-04 09:35:49 +02:00
Chris Wilson
c4ec47b46d igt/gem_exec_lut_handle: Force slow relocation path
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-05-03 09:17:36 +01:00
Tvrtko Ursulin
637f0455da kms_rotation_crc: Do not leak framebuffers during test duration
Test used to call prepare_crtc twice in the plane loop and leaked two
framebuffers per [subtest]x[pipe]x[plane].

What the loops really wants to do, instead of second invocation of
prepare_crtc, is to just turn on the display with the unrotated fb to
verify that the plane property has been restored by the VT transition
from previous to graphics mode.

To enable that factor out code which does that from prepare_crtc into
commit_crtc and call it instead.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Sonika Jindal <sonika.jindal@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-05-01 16:24:28 +01:00
Chris Wilson
fc69bb0de5 igt/gem_exec_big: Check 64bit relocation values
On gen8, we should check that the full 64bit relocation value is
correct, and we should be sure to poison the relocation offset between
runs.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-27 21:12:20 +01:00
Joonas Lahtinen
a3e336e461 tests/gem_mmap_gtt: Use PAGE_SIZE instead of hard coded value
Now that there is PAGE_SIZE define, use it.

Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-27 15:26:00 +01:00
Tvrtko Ursulin
dbf6468f90 kms_rotation_crc: Use main test for negative cases
Saves a good amount of code duplication by supporting expected
failures from the main loop.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Sonika Jindal <sonika.jindal@intel.com>
Reviewed-by: Sonika Jindal <sonika.jindal@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-27 15:26:00 +01:00
Tvrtko Ursulin
6f5d400ae9 kms_rotation_crc: No need to square the buffer in paint
Now that size is calculated in a single place and correct geometry passed in,
paint squares does not need to concern itself with it.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Sonika Jindal <sonika.jindal@intel.com>
Reviewed-by: Sonika Jindal <sonika.jindal@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-27 15:26:00 +01:00
Tvrtko Ursulin
b769a7c96b kms_rotation_crc: Consolidate plane and cursor code paths
There can only be one, either a plane or a cursor, in each subtest so there
is no need for two framebuffer varilables and also some codepaths can be
unified.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Sonika Jindal <sonika.jindal@intel.com>
Reviewed-by: Sonika Jindal <sonika.jindal@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-27 15:26:00 +01:00
Tvrtko Ursulin
e23a818c18 kms_rotation_crc: Negative test does not need to render anything
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Sonika Jindal <sonika.jindal@intel.com>
Reviewed-by: Sonika Jindal <sonika.jindal@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-27 15:26:00 +01:00
Tvrtko Ursulin
148c0d2281 kms_rotation_crc: Remove unused variable in negative test
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Sonika Jindal <sonika.jindal@intel.com>
Reviewed-by: Sonika Jindal <sonika.jindal@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-27 15:26:00 +01:00
Tvrtko Ursulin
d901106240 kms_rotation_crc: Framebuffer used for initial modeset does not need to be painted
It is just there to light up the display using the full modeset. Also renamed it
from fb_full to fb_modeset to be more descriptive.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Sonika Jindal <sonika.jindal@intel.com>
Reviewed-by: Sonika Jindal <sonika.jindal@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-27 15:26:00 +01:00
Tvrtko Ursulin
4dd79d13c9 kms_rotation_crc: Local framebuffers do not need to be global
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Sonika Jindal <sonika.jindal@intel.com>
Reviewed-by: Sonika Jindal <sonika.jindal@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-27 15:26:00 +01:00
Chris Wilson
10f903aa23 igt/gem_pwrite: Check that mmap(wc) succeeds
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-26 11:21:54 +01:00
Chris Wilson
cd812a4e89 igt/gem_pwrite: Delete unused mmap(wc) for the big CPU test
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-26 11:21:54 +01:00
Chris Wilson
49bcdc84a3 igt/gem_pwrite: Also test surfaces larger than the GTT
Go big or go home!

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-26 11:12:38 +01:00
Chris Wilson
be6e32b925 igt/gem_pwrite: Test handling of larger than mappable buffers
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-26 10:17:18 +01:00
Sonika Jindal
e1ce5eac33 kms_rotation_crc: Adding test for 90/270 rotation
Adding 90/270 rotation testcase for primary and sprite planes.

v2: Added position test for sprite. Checking for gen > 9 for 90/270.
Some cleanup and rebase.
v3: Added test for unsupported tiling and unsupported pixel format for 90/270
v4: Added the legacy commit to initiate modeset in the negative test(Tvrtko)

Signed-off-by: Sonika Jindal <sonika.jindal@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-22 18:00:42 +01:00
Tim Gore
7aeecc197b tests/Android.mk : skip kms_legacy_colorkey if no cairo
test kms_legacy_colorkey depends on cairo, so add it to
the list of test not to build unless "ANDROID_HAS_CAIRO"
is set.

Signed-off-by: Tim Gore <tim.gore@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-22 18:00:42 +01:00
Mike Mason
cc9110c447 tests/tools_test: Find tools in source or installed locations
Signed-off-by: Mike Mason <michael.w.mason@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-20 12:11:49 +01:00
Rodrigo Vivi
36ecc3180a tests/kms_psr_sink_crc: Make render size and stride based on modified fb size
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
2015-04-16 11:08:37 -07:00