3672 Commits

Author SHA1 Message Date
Tiago Vignatti
d132927c76 tests/vgem_fb_test: Remove vgem references
drm-fd mmaping just work; prime-fd mmap-ing doesn't though. Is the first
enough?
2015-07-27 16:07:13 -03:00
Tiago Vignatti
e38c564176 tests/vgem_fb_test: Use untiling for correctly rendering
This is needed because i915 (new) userspace dma-buf mmap is using CPU mapping

TODO: Render buffer actually has to be separate from the scanout one.
2015-07-27 14:49:58 -03:00
Tiago Vignatti
768c0a133d tests/vgem_fb_test: WIP: less writes 2015-07-27 14:49:58 -03:00
Tiago Vignatti
1f937389fc tests/vgem_fb_test: Remove volatile
By simply removing volatile qualifier in draw() from uint32_t *ptr, memory
accesses improve a lot in that test. We practically saw 1 order of magnitude in
the performance of VGEM and the speed was equally on using drm_intel specific
ioctls.

The inclusion of volatile has forced the compiler to load and store the
variable from memory on every run, hurting quite badly the performance.
Therefore, performance is dropped due many read operations in the mapped
pointer which is a no-no when objects are write-combining mapped.

This patch also removes sleep, that bothers performance measurements
2015-07-27 14:49:58 -03:00
Tiago Vignatti
1319c565ec tests/vgem_fb_test: Fix most of compiler warnings 2015-07-27 14:49:58 -03:00
Tiago Vignatti
fda0527127 tests/vgem_fb_test: Always profile
This commit could be amended with the previous...
2015-07-27 14:49:57 -03:00
Tiago Vignatti
ccd69d7104 tests/vgem_fb_test: Add verbose mode to vgem_fb_test to print mmap time
This CL introduces -p option to vgem_fb_test. For now it only prints the
time to mmap imported vgem buffers, which is particularly useful to
benchmark and compare with other driver implementations.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
2015-07-27 14:49:57 -03:00
Tiago Vignatti
02d14aaf05 configure: Pull in GBM (or Mini GBM) library
This sets tests/vgem_fb_test to be built.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
2015-07-27 14:49:57 -03:00
Tiago Vignatti
b0df549986 tests: import Chrome OS vgem_fb_test.c
https://chromium.googlesource.com/chromiumos/platform/drm-tests/+/master/vgem_fb_test.c

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
2015-07-27 14:48:54 -03:00
Chris Wilson
cd306d4e65 benchmark: Measure allocation time for objects
A basic measurement, how fast can we create and populate an object with
backing storage?

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-24 18:56:00 +01:00
Chris Wilson
42a386b83b benchmarks: Measure mmap fault latency
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-24 18:55:49 +01:00
Chris Wilson
e984d4965f benchmarks: Benchmarkify gem_exec_ctx
Measure the overhead of execution when doing nothing, switching between
a pair of contexts, or creating a new context every time.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-24 18:55:49 +01:00
Michał Winiarski
d49a868378 tests/drm_import_export: Add tests for prime/flink sharing races
It is possible to race between unreference of the underlying BO and
importing it from prime_fd/name. Verify that the behaviour of libdrm
is consistent for prime/flink.

v2: more comments in source file, dropped extra whitespace

Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
Cc: Thomas Wood <thomas.wood@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-07-24 15:55:18 +01:00
Chris Wilson
e14507ce98 benchmarks: Add kms_vblank to .gitignore
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-24 14:16:44 +01:00
Chris Wilson
d88981f62b benchmarks: Measure round-trip time for an immediate vblanks
By measuring both the query and the event round trip time, we can make a
reasonable estimate of how long it takes for the query to send the
vblank following an interrupt.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-23 15:52:53 +01:00
Chris Wilson
af510c249d benchmarks: gem_prw add the read/write switch to getopt
In my haste to merge the two gem_pread/gem_pwrite, I forgot to write up
the command line switch to getopt.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-23 12:30:06 +01:00
Chris Wilson
f8628a2c98 benchmarks: Add simple mmap benchmarks
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-23 12:20:43 +01:00
Chris Wilson
f689e2aa81 benchmarks: Add simple pread/pwrite benchmarks
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-23 12:20:05 +01:00
Chris Wilson
b7c33e0939 benchmarks: Benchmarkify gem_exec_nop
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-22 15:14:05 +01:00
Thomas Wood
a64cf28719 man: ensure rst files are included in the distribution tarball
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-07-20 18:13:37 +01:00
Dominik Zeromski
3676912970 lib/gpgpu_fill: Add SKL support
SKL changed state base address command.

Cc: Thomas Wood <thomas.wood@intel.com>
Signed-off-by: Dominik Zeromski <dominik.zeromski@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-07-20 18:13:37 +01:00
Dominik Zeromski
a017c2905a lib/gpgpu_fill: Add BDW support
BDW changed structure of surface state and interface descriptors.
Commands like state base address, gpgpu walker were extended.

Cc: Thomas Wood <thomas.wood@intel.com>
Signed-off-by: Dominik Zeromski <dominik.zeromski@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-07-20 18:13:37 +01:00
Dominik Zeromski
ed816d560c lib: Move gpgpu_fill code to separate file
The gpgpu fill utility functions are used in separate test so it's
logical to keep them in separate file. This is similar to what media
spin test did in the past.

Functionally only gpgpu kernel changed. Send instruction payload size
was reduced. Since offset is incremented by 0x10 bytes there is no point
in using larger writes.

Cc: Thomas Wood <thomas.wood@intel.com>
Signed-off-by: Dominik Zeromski <dominik.zeromski@intel.com>
[Thomas: Fix typo of gpgpu_fill.h in Makefile.sources]
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-07-20 18:13:37 +01:00
Derek Morton
3c294a8fa3 Android.mk: Disable tools that do not build for android
Disable the tools / demo code that do not currently build
for android until they can be fixed.

Affected tools / demos
intel_display_crc
intel_sprite_on

v2: intel_display_crc compiled conditionally on ANDROID_HAS_CAIRO
flag.
v3: removed intel_reg from the skip list as Thomas has prepared
a patch to fix it for Android.

Signed-off-by: Derek Morton <derek.j.morton@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-07-20 18:13:37 +01:00
Thomas Wood
e65c69b995 lib: exit immediately if igt_fail is called in an exit handler
Exit immediately if the test is already exiting and igt_fail is called.
This can happen if an igt_assert fails in an exit handler.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91349
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-07-20 18:13:37 +01:00
Thomas Wood
51576b7ad6 tools/Android.mk: add any extra program sources
v2: remove unintended change and fix source file duplication errors
    (Derek Morton)

Cc: Derek Morton <derek.j.morton@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-07-20 18:13:37 +01:00
Thomas Wood
80f1553780 intel_reg: support platforms without sys/io.h
Based on an idea from Jani Nikula.

Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Derek Morton <derek.j.morton@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-07-20 18:13:37 +01:00
Chris Wilson
0705ce6d15 igt/stats: Fixup tests to compile after interface changes
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-19 18:19:29 +01:00
Chris Wilson
d9c3f0b50c tools: Add a simple stats generator 'igt_stats'
A rudimentary tool on top of the igt_stats library. Reads a list of
numbers from stdin or from a file and prints the estimate of the central
location, aka average.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-19 15:30:23 +01:00
Chris Wilson
8506cdcaa5 lib: Allow storing floating point values in igt_stats
We don't always have precise integers with which to store, so allow
degrading to double precision floating point based on available input.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-19 15:30:23 +01:00
Michał Winiarski
fdefdd48f6 tests/gem_reg_read: Extend and check for valid 36b counter
When reading the timestamp register with single 64b read, we are observing
invalid values on x86_64:

    [f = valid counter value | X = garbage]

    i386:   0x0000000fffffffff
    x86_64: 0xffffffffXXXXXXXX

Test checks if the counter is moving and increasing.
Add a check to see if we can use (reg | 1) flag to get a proper 36b timestamp,
shifting the value on x86_64 if we can't.

v2: More iterations of monotonic test, comments, minor fixups (Chris)
v3: Skip tests if reg_read is not supported

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-07-16 13:06:13 +01:00
Chris Wilson
32c898849b igt/gem_eio: Waiting on a hung batch should report -EIO
If we are waiting on a handle, and its request is cancelled due to a
hang, we should report that explicitly through the ABI.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-15 22:09:54 +01:00
Paulo Zanoni
7f952bd976 kms_frontbuffer_tracking: don't keep debugfs open
Make the code smaller and simpler, also ready for when we move
debugfs_read() to lib/.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-07-14 15:21:26 -03:00
Paulo Zanoni
1048aa9aa5 tests: add kms_fbcon_fbt
This test should test the interactions between fbcon and the
frontbuffer tracking infrastructure.

Right now the PSR test fails, but as soon as we merge the following
kernel patches, the test wills tart passing:
 - drm/i915: PSR: Flush means invalidate + flush
 - drm/i915: fbdev restore mode needs to invalidate frontbuffer
 - drm/i915: fbdev_set_par reliably invalidating frontbuffer

I didn't want to make this a subtest of kms_frontbuffer_tracking just
because when I wrote it, I really didn't have in mind the fact that
someone might just close the DRM fd in the middle of a subtest.

After this commit we'll have a little bit of duplicated code among
tests. I'll clean this up later.

v2:
  - Refactor the code a little bit.
  - Add the suspend subtests.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-07-14 15:20:57 -03:00
Paulo Zanoni
7c5a218cc3 kms_frontbuffer_tracking: implement suspend subtest
Make sure we survive suspend/resume.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-07-14 13:06:41 -03:00
Paulo Zanoni
1c389f69f0 kms_frontbuffer_tracking: allow passing a NULL pattern
So we don't need to initialize CRCs we won't use. This makes the
modesetfrombusy and badstride tests a little faster.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-07-14 13:06:08 -03:00
Paulo Zanoni
91f097aefa kms_frontbuffer_tracking: simplify subtest enumeration
Just a small bikeshed.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-07-14 13:05:40 -03:00
Paulo Zanoni
04d1311fc3 kms_frontbuffer_tracking: add farfromfence subtest
Make sure we notice in case our crtc->y handling is still wrong.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-07-14 13:05:12 -03:00
Paulo Zanoni
cb3861a9e3 kms_frontbuffer_tracking: implement badstride test
Test strides that are either completely invalid or just result in
disabled FBC.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-07-14 13:04:23 -03:00
Paulo Zanoni
4deb562659 configure: require libdrm >= 2.4.55
And drop the now unnecessary universal plane definitions. The 2.4.55
version is already quite old, so we should be fine.

Thanks to Thomas Wood for quickly spotting this.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@>
2015-07-14 12:52:09 -03:00
Paulo Zanoni
19e4632407 kms_frontbuffer_tracking: only force std_1024_mode on HSW
Since on BDW the big modes work fine, I want to test them without
having to recompile the test every time. Let's make std_1024_mode part
of opt.small_modes.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-07-14 11:35:05 -03:00
Paulo Zanoni
a7cfd224ba kms_frontbuffer_tracking: remove enum feature_status
After the last commit, it's not really needed anymore, so let's get
rid of it: less code lines and less non-standard enums.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-07-14 11:34:43 -03:00
Paulo Zanoni
775fd77715 kms_frontbuffer_tracking: improve checks for disabled features
Make sure the features are disabled and stay disabled. Otherwise we
could just wrongly think they are disabled while they are just in the
process of being enabled.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-07-14 11:34:23 -03:00
Paulo Zanoni
ca97e78455 kms_frontbuffer_tracking: rename enum fbs
I tried explaining these to people twice and realized how bad the
current naming was. Let's hope the new one is better.

The downside is that the tests were renamed and patches mentioning
them can't be fixed.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-07-14 11:34:02 -03:00
Paulo Zanoni
b0427442f9 kms_frontbuffer_tracking: add different ways to flip
So we can make sure all code paths are properly exercised and lead to
proper frontbuffer tracking.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-07-14 11:33:41 -03:00
Paulo Zanoni
a1d4b553a7 kms_frontbuffer_tracking: fix fullscreen subtest assertions
Only really assert FBC_DISABLED in case the primary plane is actually
disabled. If the sprite plane is covering the whole screen but the
primary plane is still enabled, FBC can remain enabled.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-07-14 11:33:14 -03:00
Paulo Zanoni
344dab22e9 kms_frontbuffer_tracking: avoid huge strides during normal operation
We want to restrict huge strides to the yet-to-be-implemented
stride-size-specific subtest.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-07-14 11:32:53 -03:00
Paulo Zanoni
c2d656c5d6 kms_frontbuffer_tracking: don't hardcode the X/Y big FB offset
While debugging the test failures I tried different values for the
offsets, so having a central place to change them is the only sane
way.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-07-14 11:32:32 -03:00
Paulo Zanoni
9ca8a1bade pm_rpm: remove pm_status_fd declaration
This was forgotten since we moved some code to igt_aux.c a long time
ago.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-07-14 09:40:10 -03:00
Matt Roper
b81f7db593 kms_universal_plane.c: Update sanity checks for gen9
SKL and BXT have some new plane capabilities that previous generations
didn't have; we need to update some of our universal plane tests to
expect success rather than failure when running on these platforms.

Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
2015-07-08 13:54:12 -07:00