Age | Commit message (Collapse) | Author |
|
We'll want to reuse this, so split it out into a (smaller!) helper.
Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
|
The getfb ioctl only supports returning a single buffer handle
(mirroring addfb), which means it should refuse to return us back CCS
buffers.
This is enforced by the kernel as of b24791fe00f8.
Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
|
Wrong file descriptor was passed to the iterator. This had currently no
effect, since it wasn't used in the macro, but needs to be fixed.
At the same time make the macro consistent by checking for engine presence
like the other iterators do.
Added __for_each_engine_class_instance which does not check for engine
presence and so is useful for enumerating all possible engines - like for
instance for subtest enumeration.
And another 'wrong fd used' fixlet in the render node subtests.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reported-by: Michel Thierry <michel.thierry@intel.com>
Cc: Michel Thierry <michel.thierry@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Michel Thierry <michel.thierry@intel.com>
|
|
Only do a full probe when the initial connector status is unknown, and
otherwise skip it. This should speed up kms tests ever so slightly.
Also set pipe to PIPE_NONE for igt_output_refresh(), to make the
connector info slightly more accurate.
Changes since v1:
- Instead of a force_reprobe tristate, only force reprobe from
igt_display_init() when an unknown connection is found.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|
|
subtest, v3.
This is hidden behind the other kms_frontbuffer_tracking failures,
but is its own fail.
On gen9/gen10 we fail the scaledprimary tests because FBC refuses
to be enabled with "plane Y offset is misaligned".
Looking at the kernel, this is a workaround for FIFO underruns
which can be tested as well. Test that with the right alignment, FBC
is enabled and with misalignment FBC is disabled on <= gen10.
Changes since v1:
- Always check both alignments.
Changes since v2:
- Fix gen assignment.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105678
Reviewed-by: Marta Lofstedt <marta.lofstedt@intel.com>
|
|
If we inject a reset into the target context, there is a risk that the
register state is never saved back to memory. The exact interaction
between reset, the context image and the precise timing of our execution
are not well defined. Since we cannot ensure that the context image
remains valid, force a context switch prior to the reset.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105270
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105457
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105545
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
The test is whether with all but one engine busy we record the correct
load on each engine. If we only have one engine, this test degenerates
into all-idle/all-busy, so we can skip to avoid crashing on the
assumption that we have a busy spinner.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
strtod() is locale-dependent. The decimal conversion depends on the radix
character ('.' for some of us like myself) varies by locale. As the
kernel reports its values using the "C" locale, we need to switch to
that when parsing; and switch back before reporting to the user.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105712
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
More than one test assumes that the spinner is running pretty much
immediately after we have create or submitted it.
In actuality there is a variable delay, especially on execlists platforms,
between submission and spin batch starting to run on the hardware.
To enable tests which care about this level of timing to account for this,
we add a new spin batch constructor which provides an output field which
can be polled to determine when the batch actually started running.
This is implemented via MI_STOREDW_IMM from the spin batch, writing into
memory mapped page shared with userspace.
Using this facility from perf_pmu, where applicable, should improve very
occasional test fails across the set and platforms.
v2:
Chris Wilson:
* Use caching mapping if available.
* Handle old gens better.
* Use gem_can_store_dword.
* Cache exec obj array in spin_batch_t for easier resubmit.
v3:
* Forgot I915_EXEC_NO_RELOC. (Chris Wilson)
v4:
* Mask out all non-engine flags in gem_can_store_dword.
* Added some debug logging.
v5:
* Fix relocs and batch munmap. (Chris)
* Added assert idle spinner batch looks as expected.
v6:
* Skip accuracy tests when !gem_can_store_dword.
v7:
* Fix batch recursion reloc address.
v8:
Chris Wilson:
* Pull up gem_can_store_dword check before we start submitting.
* Build spinner batch in a way we can skip store dword when not
needed so we can run on SandyBridge.
v9:
* Fix wait on spinner.
* More tweaks to accuracy test.
v10:
* Dropped accuracy subtest changes due problems with RT thread and
tasklet submission.
v11:
* Use READ_ONCE.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> # IRC
|
|
If we stop relying on regular GPU hangs to be detected, but trigger them
manually as soon as we know our batch of interest is actually executing
on the GPU, we can dramatically speed up various subtests.
This is enabled by the pollable spin batch added in the previous patch.
v2:
* Test gem_wait after reset/wedge and with reset/wedge after a few
predefined intervals since gem_wait invocation. (Chris Wilson)
v3:
Chris Wilson:
* Decrease short test to 1us.
* Use POSIX timers instead of signals to avoid interrupting gem_wait.
* Improve comment.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Antonio Argenziano <antonio.argenziano@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Pollable spin batch exports a spin->running pointer which can be checked
by dereferencing it to see if the spinner is actually executing on the
GPU.
This is useful for tests which want to make sure they do not proceed with
their next step whilst the spinner is potentially only being processed by
the driver and not actually executing.
Pollable spinner can be created with igt_spin_batch_new_poll or
__igt_spin_batch_new_poll, after which igt_spin_busywait_until_running can
be used to busy wait until it is executing.
v2:
* Move READ_ONCE to igt_core.
* Add igt_spin_busywait_until_running. (Chris Wilson)
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Chamelium support requires igt_frame to be built, which requires both
GSL and Pixman.
Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
Some platforms may execute the heavy workload very slowly, such that
using a batch of 1024 takes tens of seconds and immediately overrunning
the 5s timeout on a pass. Added up over a few dozen passes, this turns a
120 second test into 10 minutes. Counter this by doing a warmup loop to
estimate the appropriate queue len for timing.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
|
|
The list of regular expressions for tests that are not to be run in
sharded full test suite rounds, copied from
https://intel-gfx-ci.01.org/blacklist.txt
Signed-off-by: Petri Latvala <petri.latvala@intel.com>
Reviewed-by: Marta Lofstedt <marta.lofstedt@intel.com>
|
|
Original text was written before shard runs existed. Removed the
criteria for testlist contents; The list is still strictly controlled,
but additions/removals will be considered case-by-case.
Signed-off-by: Petri Latvala <petri.latvala@intel.com>
Reviewed-by: Marta Lofstedt <marta.lofstedt@intel.com>
|
|
Signed-off-by: Petri Latvala <petri.latvala@intel.com>
Cc: Marta Lofstedt <marta.lofstedt@intel.com>
Reviewed-by: Marta Lofstedt <marta.lofstedt@intel.com>
|
|
Some tests measure the render's ring size but are actually meant to
measure the smallest across all engines. This patch adds measuring the
smallest size in gem_measure_ring_size_inflight() given the appropriate
parameter.
v2:
- Only expose high level API. (Chris)
v3:
- Use ALL_ENGINES macro.
Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Antonio Argenziano <antonio.argenziano@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Ignore the shennigans of the test surrounding the library call to
gem_test_engine() and focus on answering the query of whether the engine
exists and is operational.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Tested-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Add a new test exercising the GetFB API, specifically including its
behaviour of always returning new handles even if the client already has
a handle to the GEM buffer.
Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
|
Decouple the prop name arrays from the actual enum values
by using named initializers. Should make it less likely that we
end up with the wrong property on account of getting the order
wrong.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Daniel Vetter <daniel@ffwll.ch> #irc
|
|
Make a bunch of string arrays const.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Daniel Vetter <daniel@ffwll.ch> #irc
|
|
igt_display_init() now unconditionally tries to get the plane IN_FORMATS
blob, which causes a hard assert failure if we don't have the property
present.
Check if it's there and return early if not.
Signed-off-by: Daniel Stone <daniels@collabora.com>
Fixes: 98f7614bd725 ("lib: Parse plane IN_FORMATS blobifiers into a nicer form")
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
|
|
This makes scripts/run-tests.sh to look into a build dir by default,
looking for the test lists. With this we can run the script after
building i-g-t with meson without having to resort to the environment
variable.
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
When piglit runs it chdir() to its own directory, so passing a relative
path doesn't work. E.g.:
Fatal Error: IGT directory does not exist. Missing: build/tests
Make sure path is absolute throughout the script.
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
If the script is already running as root, it doens't need to be
executed through sudo. This also moves the calls to exec piglit to a
common function.
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
In interfaces where a parameter allow to select an engine, we usually
use '-1' or '~0u' to select all engines. This patch replaces magic
numbers with a named constant.
Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Antonio Argenziano <antonio.argenziano@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Kernel does not expose the "Active: " flag in edp_psr_status anymore.
So test for "HW Enabled & Active bit: yes", although this isn't completely
accurate either for frontbuffer tests. Let's go with this for now until
the kernel exposes HW PSR status.
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105519
Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Marta Lofstedt <marta.lofstedt@intel.com>
|
|
For gen10, we now add mappings for buffers as they are needed.
Instead of doing this dynamically, we could always map the entire 4GB.
With 4KB pages, the tables would take up 8MB in every AUB. AUBs are
often quite huge compared to 8MB, but they can also be just a few
hundred KB.
This should allow the AUB to create up to about 4GB of allocated
buffers, whereas before we were limited to about 64MB.
While it is unlikely that we'll try to capture AUBs that generate
buffers up to 4GB in size, this change also should allow pinned
buffers to be used anywhere in the first 4GB. (I tested a pinned
buffer at 0xf0000000.)
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Scott D Phillips <scott.d.phillips@intel.com>
|
|
This will allow us to map ranges as they are used, but prevents
remapping already mapped regions.
By mapping ranges as they are used, we can support pinned pages
without having to map all pages of the first 32-bits.
v2:
* Make bitmap manipulation functions independent from 4k page size.
Maybe will be usable also for 1GB pages with PPGTT.
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Scott D Phillips <scott.d.phillips@intel.com>
|
|
This function should allow us to only write the page table entries
that get used.
v2:
* Use align; deobfuscate start addr calc. (Scott)
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Scott D Phillips <scott.d.phillips@intel.com>
|
|
Clean up cursor fb in cleanup_crtc, which means that cursor fb
has to be created after prepare_crtc() is called.
This will fix a small leak when a subtest fails.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
|
igt_display_require_output_on_pipe.
This test is purely about the pipe fifo underrun, so not all outputs
need to be tested. Reorder the tests to run per pipe first, this will
save a modeset for all different sizes when the tests are run per-binary,
and another modeset on each subtest when more than 1 output is connected.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
|
Put a single igt_display_require_output_on_pipe in the fixture,
so we know we always have an output on the pipe and can always
assume it's not NULL.
Changes since v1:
- Move igt_subtest_group upwards, to prevent a skip when no valid
output can be found on pipe A, but can be found on other pipes.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> #v1
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
|
A single output on every pipe will do for testing.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
|
igt_get_single_output_for_pipe() will give a valid output for a pipe,
for_each_pipe_with_single_output will iterate over all pipes, and
will be called for each pipe with an output once.
Changes since v1:
- pipe = __outputs - __output returned a negative number for pipe,
correctly set it to __output - __outputs.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
|
Maintain straight up arrays of format+modifier tuples for each plane,
and also collect up a similar device wide array. These will make it
easy to confirm whether each plane (or the whole device) supports a
specific format+modifier pair.
v2: s/igt_hweight64/igt_hweight/
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Add the binary hamming weight helper to igt_aux.h.
v2: Add just the one macro that works for 64 and 32 bits (Chris)
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Request tracepoints have been renames so update the tool to be able to
find them.
v2: Only support new names.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
When FBC cannot be enabled in one of the tests, we get a lot of repeated
spam at DEBUG level, which overwrites any good debug level data that you
can hope to get out of the test.
When running at the debug level, output FBC info only if changed from last
time, so we don't get the repeated spam.
This makes the debug info from CI slightly more useful.
Changes since v1:
- Clear last_fbc_buf in fbc_wait_until_enabled.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
[mlankhorst: Remove stray from igt_core.c]
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
When the plane scaling is used with YUV 420 planar formats,
the height should be a minimum of 16 scanlines as per BSpec.
Minimum of 8 scanlines is for non-YUV 420 planar formats.
Patch changes the minimum fb height being used in the test
in case of YUV 420 planar (currently done for NV12, as
that is the only planar format supported)
v2: Addressed review comments from Maarten
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
Signed-off-by: Vidya Srinivas <vidya.srinivas@intel.com>
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
|
|
Found when compiling igt with clang:
[284/819] Compiling C object 'tests/kms_crtc_background_color@exe/kms_crtc_background_color.c.o'.
../tests/kms_crtc_background_color.c:140:48: warning: implicit conversion from enumeration type
'enum igt_atomic_crtc_properties' to different enumeration type 'enum igt_atomic_connector_properties' [-Wenum-conversion]
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
|
Commit 8c6b709d96cb9 ("drm/i915: Use new CRC debugfs API") has been in
the kernel for more than a year.
In commit 6d16875736b9f ("lib/igt_debugfs: Remove support for legacy CRC api.")
we've removed support for the legacy CRC testing and we're about to remove
the last remnants from the kernel, so it's time to remove the last tests for
legacy CRC as well.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reported-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> #irc
|
|
Haswell's configuration are a bit different from the following Gens.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105476
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Marta Lofstedt <marta.lofstedt@intel.com>
|
|
Unfortunately I forgot that some of those tests require rcs topology
support which we don't have on Sandybridge. This change split the test
in 2 (first part available on all platforms, second part only with rcs
topology support).
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105475
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
In CI runs we every now and then fail to read correct CRC yielding an error
when comparing reference and grabbed CRC's. Let's first fix the test so that
we drain the pipe first and then read the correct CRC. While at it, let's
simplify the test by combining legacy and atomic tests into a one common
function.
v2: We don't need to drain pipe when we grab first CRC
v3: Nuke legacy commits
References: https://bugs.freedesktop.org/show_bug.cgi?id=103166
Signed-off-by: Mika Kahola <mika.kahola@intel.com>
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|
|
On most platforms ARGB8888 is only supported by the cursor plane,
which doesn't support tiled buffers. Hence the kernel is under no
obligation to accept the request to create a tiled ARGB888
framebuffer. Apparently we've been letting this slip through so
far, but that is about to change.
Fortunately the resulting fb was neer actually used (in fact the
kernel would have rejected the setplane/atomic ioctl with such
a framebuffer). All we're really interested here is the gem BO
which we feed to the kernel via the setcursor ioctl after changing
the tiling to linear. To avoid changing the test drastically we
can simply change the fb to XRGB8888, which combined with X-tiling
is supported on all platforms.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Straight conversion, no behavioral changes yet.
Changes since v1:
- Handle 2x outputs correctly.
Changes since v2:
- Set correct parameters in set_mode_for_params, so atomic commit for
2x outputs doesn't scale.
- Fix accidental scaling in set_prim_plane_for_params.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|
|
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|