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>
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>
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>
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>
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>
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>
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>
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@>
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>
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>
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>
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>
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>
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>
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>
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>
Make sure resource streamer flags works only in correct ring in
addition to checking next flag after the RS boundary fails.
v2: Make sure we reject RS on pre-hsw.
v3: Don't skip 1<<15 for the exec flags (Jani Nikula)
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Abdiel Janulgue <abdiel.janulgue@linux.intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
I just remembered that those Makefile.sources files where also
included by the Android build system, so we can't use automake's
conditionals in there.
So, we want to use GNU make's one. Unfortunately, after all those years,
GNU automake still doesn't do anything useful with GNU make's ifeq:
lib/Makefile.sources:66: error: else without if
automake will helpfully signal that the 'else' corresponding to the
'ifeq' doesn't have a corresponding 'if'. Well, yeah, thanks.
Fortunately, we can work around this by cunningly inserting a space
before 'ifeq', 'else' and 'endif' and fool automake's regex-based
checks.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Since the introduction of igt_stats and its usage in gem_exec_nop, we
need to link the tests against libm. My rebasing bot complained when
linking gem_exec_nop:
lib/igt_stats.c:492: undefined reference to `sqrt'
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
When developing, it's quite annoying that the version changes every
commit, causing the library to be rebuild and every single binary
re-linked.
Add a config option to skip that.
I remember Ville asking for this "feature" as well.
v2: Option is now called --disable-git-hash (Thomas)
Various spelling mistakes (Thomas)
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
igt_save_module_param is an internal static function and therefore isn't
included in the public API documentation.
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
The section id is generated from the section title and is used to create
the html output filename, which therefore causes problems if it includes
a '/' character.
Cc: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
In order to keep the GPU in a consistent state between samples, we have
to wait for it to fall asleep before proceeding.
For fun hook up igt_stats.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
https://en.wikipedia.org/wiki/Trimean
The trimean is a the most efficient 3-point L-estimator (estimator
of central tendency, i.e. average), even more robust than the
median at estimating the average of a sample population.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
https://en.wikipedia.org/wiki/Interquartile_mean
The IQM is a truncated mean and so is very similar to the scoring
method used in sports that are evaluated by a panel of judges:
discard the lowest and the highest scores; calculate the mean
value of the remaining scores.
It's useful to hide outliers in measurements (due to cold cache etc),
without having to worry too much about the actual distribution.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Add forking subtests to gem_ringfill. Tests cause consistent GPU
hangs on SKL.
v2: Removed noop parts.
v3:
- Allow executing the tests in order too (Chris Wilson).
- Rename the tests to -forked-1
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
[ickle: Extend to cover forked-N]
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89959
Chris mentioned he wanted to be able to measure a variable "for one
second" and use igt_stats to store them. That's one case where we don't
know the number of data points upfront.
We should really support that, so here it is.
v2: Just free ->sorted when a new capacity is needed.
ensure_sorted_values() will then reallocate the array to the new
capacity on demand (Chris)
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Chris had a doubt, and I was lazy and didn't do a similar test for the
quartiles/median than for the mean (test_invalidate_mean()). Plug that
gap.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>