summaryrefslogtreecommitdiff
path: root/tests/kms_flip.c
AgeCommit message (Collapse)Author
2017-11-15Revert "tests/kms_flip: Make flip-vs-panning-vs-hang change DSPSURF"Maarten Lankhorst
This reverts commit 7296e09ee7f17e6d564e52cf64ee900670849429. This commit was accidentally applied twice, the first time in commit e4ba3b75e6de35483b2edea21ceda145ef0b3311. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> CC: Daniel Vetter <daniel.vetter@ffwll.ch> #irc
2017-10-18tests: Clean up igt_skip_on_simulation() usesArkadiusz Hiler
General update to reflect current state of things. Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Acked-by: Radoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com> Acked-by: Petri Latvala <petri.latvala@intel.com>
2017-09-08build: Nuke #ifdef HAVE_CONFIG_H cargo-cultDaniel Vetter
We have it. Daniel Stone said the #ifdef HAVE_CONFIG_H comes from the X11 transition to the modular build, where in the imake -> modular build transition config.h wasn't universally available. Now we just make this a requirement (so yeah Android better generate one too). v2: Improve commit message a bit. Reviewed-by: Eric Anholt <eric@anholt.net> Acked-by: Jani Nikula <jani.nikula@intel.com> Acked-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Acked-by: Petri Latvala <petri.latvala@intel.com> Acked-by: Daniel Stone <daniels@collabora.com> Acked-by: Radoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2017-09-07igt/gem_exec_schedule: Basic tests for preemptionChris Wilson
We queue N low priority hanging batches across the engines and check that our high priority write over takes them. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>
2017-08-15tests/kms_flip: fix spin_batch conversionDaniel Vetter
The goal of these subtests was just to delay a kms operation a little bit. The goal wasn't to - spin until the operation was completed. That results in a gpu hang, and gpu hangs need igt_hang for safety. - complete it before the operation. That's just pointless. Fix it by using the timeout support. This was all broken in the initial conversation: commit 96ec8cb3b5ec1fc2927d6cff8e09930082301d7e Author: Abdiel Janulgue <abdiel.janulgue@linux.intel.com> Date: Sat Oct 29 01:01:05 2016 +0300 igt/kms_flip: Use new igt_spin_batch Note that part of the damage was removed already in commit b0081ea9cb7d39234fd0fcc64dd56ed4f5d50b05 Author: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Date: Wed Aug 9 11:11:52 2017 +0200 tests/kms_flip: Remove $engine-flip-vs-dpms/modeset But this patch also made things worse, because it remove code that wasn't dead yet (because it didn't remove all the dpms vs spinning batch tests). v2: Augment commit message and use macro for 1s-in-ns. Cc: Tomeu Vizoso <tomeu.vizoso@collabora.com> Cc: Abdiel Janulgue <abdiel.janulgue@linux.intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2017-08-14tests/kms_flip: Remove $engine-flip-vs-dpms/modesetMaarten Lankhorst
This is already tested in kms_busy, and without cs flips there's no point in doing those tests any more. The removed tests were broken and caused GPU hangs because the spin batch was not unblocked correctly. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2017-07-07tests/kms_flip: Make panning tests actually pan all the timeVille Syrjälä
Currently the panning tests actually stop panning when they hit the right edge fo the framebuffer. Let's make them ping-pong across the fb to make it clear that they are indeed trying to pan around all the time. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2017-06-20tests/kms_flip: degrade warn to debugMaarten Lankhorst
This is explicitly tested in kms_setmode.basic Suggested-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
2017-04-07tests/kms_*: Use correct DRM context versionDaniel Stone
DRM_EVENT_CONTEXT_VERSION is the latest context version supported by whatever version of libdrm is present. igt was blindly asserting it supported whatever version that may be, even if it actually didn't. With libdrm 2.4.78, setting a higher context version than 2 will attempt to call the page_flip_handler2 vfunc if it was non-NULL, which being a random chunk of stack memory, it might well have been. Set the version as 2, which should be bumped only with the appropriate version checks. Signed-off-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
2017-02-08kms_flip: Handle EINTR in poll call for -interruptible tests.Maarten Lankhorst
This fixes the following failure in kms_flip: (kms_flip:12099) CRITICAL: Test assertion failure function calibrate_ts, file kms_flip.c:1190: (kms_flip:12099) CRITICAL: Failed assertion: poll(&(struct pollfd){drm_fd, POLLIN}, 1, -1) == 1 (kms_flip:12099) CRITICAL: Last errno: 4, Interrupted system call Stack trace: #0 [__igt_fail_assert+0xf1] #1 [run_test_on_crtc_set.constprop.13+0x18f3] #2 [run_pair+0x31f] #3 [main+0x463] #4 [__libc_start_main+0xf0] #5 [_start+0x29] #6 [<unknown>+0x29] Subtest 2x-plain-flip-ts-check-interruptible failed. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99651 Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
2016-12-06igt/kms_flip: Poll before reading from nonblocking drm_fdChris Wilson
If we run the full testsuite, the drm_fd is set to nonblocking - so we have to explicitly wait using poll rather than rely on a blocking read for the vblank event. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-12-06igt/kms_flip.c: Fix timings checkDorota Czaplejewicz
Adjust the description and constants in the timing check to match each other. Relax the timing constraint to prevent false positives in vblank interval checking.
2016-12-01igt/kms_flip: Fix set_dpms called with an idle boAbdiel Janulgue
Signed-off-by: Abdiel Janulgue <abdiel.janulgue@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-11-29igt/kms_flip: Use new igt_spin_batchAbdiel Janulgue
v7: Reuse NSEC_PER_SEC defines v8: Don't wait on the fb, it must be busy. Exit the spin batch when flip is queued (Chris Wilson) v10: Adapt to api rename Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> Signed-off-by: Abdiel Janulgue <abdiel.janulgue@linux.intel.com>
2016-11-10lib: Pass tiling constant where that's expectedTomeu Vizoso
We were passing in two places a framebuffer modifier constant instead of a tiling constant. Also adds igt_fb_mod_to_tiling so tests can do that by themselves. Cc: Tvrtko Ursulin <tursulin@ursulin.net> Fixes: 8a1a38661f56 ("lib: Add igt_create_bo_with_dimensions") Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
2016-11-02igt/kms_flip: Use the computed vblank interval for TS checkingChris Wilson
Since the modeline may differ from actual hardware timings, do not rely upon it but instead measure the actual and verify that it does not change across the various flip/vblank configurations. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-11-02igt/kms_flip: Mark frame_time() as coming from the modeChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-10-24igt/kms_flip: Calibrate timestamp errorsChris Wilson
We assert that the interval between a vblank and a flip corresponds with the computed frametime derived from the modeline. However, historically the dotclock is unreliable (in error of about 1%) for VBT supplied data about LVDS panels - the situation looks to be much improved with eDP at least. The simple fact that we cannot rely on the manufacturer's supplied modeline causes us to fail the test. So before we claim a driver failure, do a calibration pass and check for inconsistencies with the modeline. v2: Refine the failure message when skipping Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-10-22igt/kms_flip: Print more information to debug for flip timing checksChris Wilson
We have a cantiga that doesn't pass igt@kms_flip@basic-flip-vs-wf_vblank, and so knowing why is off the upmost priority! Before the assertions print the values we are about to test in greater detail. References: https://bugs.freedesktop.org/show_bug.cgi?id=98352 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-10-13lib/igt_aux: Add support for various system suspend/resume optionsImre Deak
To have a more accurate idea about any suspend/resume issues we can perform the s/r until various phases in the s/r sequence. This way we can isolate the given problem as being a device driver, kernel core or BIOS related issue. Actual subtests using these new s/r phases will be added as follow-up. While at it also add the freeze suspend target, it's something we also would need to test. Signed-off-by: Imre Deak <imre.deak@intel.com>
2016-09-13igt/gem_busy: Prevent banning when running multiple hang testsChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-08-26igt/kms_flip: There's no such thing as bo-too-bigChris Wilson
Since we can now use the entire global GTT for display, we can handle framebuffers that no longer fit into the mappable aperture. Update the kms_flip/bo-too-big expectations. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97502 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-07-04kms_flip: Change __wait_for_vblank to use helper function.Robert Foss
Change __wait_for_vblank() to use kmstest_get_vbl_flag() helper function. Signed-off-by: Robert Foss <robert.foss@collabora.com> Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
2016-06-22tests/kms_flip: Check that the last vs. current seq/ts are consistentVille Syrjälä
Let's make sure the ts vs. seq difference between the current and last events match. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2016-06-22tests/kms_flip: Print the expected diff between two eventsVille Syrjälä
To aid in diagnosing failures, print out the expected time difference between the two events. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2016-06-22tests/kms_flip: Account for diff.tv_secs in jitter checkVille Syrjälä
Include diff.tv_secs in the jitter comparison. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2016-06-22tests/kms_flip: Use USEC_PER_SECVille Syrjälä
Replace some opencoded numbers with USEC_PER_SEC, and print the usec_diff with 6 decimal digits to make things more consistent. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2016-06-22tests/kms_flip: Constify some function argumentsVille Syrjälä
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2016-06-22tests/kms_flip: Print timestamps in a consistent formVille Syrjälä
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2016-05-16tests/kms_flip: Adjust tolerance when counting framesFeceoru, Gabriel
basic-flip-vs-wf_vblank subtest sometimes fails asserting counted frames to be aproximately equal with the estimated number. This is a false negative, one of the reasons being the precision lost when truncating a fractional number. Fixed this by using floating point arithmetic. Cc: Jani Nikula <jani.nikula@intel.com> Cc: Daniel Vetter <daniel.vetter@intel.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=95380 [mvlad] Signed-off-by: Gabriel Feceoru <gabriel.feceoru@intel.com> Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
2016-04-25tests/kms_flip: Open DRM device with DRIVER_ANYTomeu Vizoso
So that this test can be run in drivers other than i915. Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
2016-04-25tests/kms_flip: Move bufmgr requirement into subtestsTomeu Vizoso
Because bufmgr is currently a i915-only thing and it's only needed in a subset of the subtests, require it only in the subtests that actually need it so that the other subtests aren't skipped without a reason. Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
2016-04-25tests/kms_flip: Create tiled BOs only when neededTomeu Vizoso
Because attempts to create a tiled BO will cause a igt_require call to fail on drivers that don't support tiling, do so in the subtest that actually needs it so that other subtests aren't skipped without reason. Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
2016-04-25kms_flip: Shorten basic tests a bitTvrtko Ursulin
Seems like an overkill for a basic test to keep flipping for a full minute. Dial it down a bit. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
2016-04-09igt/kms_flip: Convert over to real hang injectionChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-01-08tests/kms_flip: Increase TEST_TS_CONT max seq difference to 150Ville Syrjälä
During suspend tests we can exceed the current 100 frame difference in sequence numbers. Bump the limit to 150 frames. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2016-01-08Fix a bunch of printf typesVille Syrjälä
igt_kms.c: In function ‘igt_crtc_set_background’: igt_kms.c:1940:2: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 5 has type ‘uint64_t’ [-Wformat=] LOG(display, "%s.%d: crtc_set_background(%lu)\n", ^ intel_firmware_decode.c: In function ‘csr_open’: intel_firmware_decode.c:169:2: warning: format ‘%zd’ expects argument of type ‘signed size_t’, but argument 3 has type ‘__off_t’ [-Wformat=] printf("Firmware: %s (%zd bytes)\n", filename, st.st_size); ^ intel_gpu_top.c: In function ‘main’: intel_gpu_top.c:683:10: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 3 has type ‘uint64_t’ [-Wformat=] stats[i] - last_stats[i]); ^ hsw_compute_wrpll.c: In function ‘main’: hsw_compute_wrpll.c:644:3: warning: format ‘%li’ expects argument of type ‘long int’, but argument 7 has type ‘long long int’ [-Wformat=] igt_fail_on_f(ref->r2 != r2 || ref->n2 != n2 || ref->p != p, ^ gem_gtt_hog.c: In function ‘__real_main155’: gem_gtt_hog.c:177:2: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 4 has type ‘unsigned int’ [-Wformat=] igt_info("Time to execute %lu children: %7.3fms\n", ^ kms_flip.c: In function ‘run_test_step’: kms_flip.c:985:3: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 10 has type ‘__time_t’ [-Wformat=] igt_assert_f(end - start > 0.9 * frame_time(o) && ^ kms_flip.c:985:3: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 11 has type ‘__suseconds_t’ [-Wformat=] kms_frontbuffer_tracking.c: In function ‘setup_sink_crc’: kms_frontbuffer_tracking.c:1364:3: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 4 has type ‘ssize_t’ [-Wformat=] igt_info("Unexpected sink CRC error, rc=:%ld errno:%d %s\n", ^ Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2015-12-04lib/kms+tests: Use cached connector stateDaniel Vetter
Speeds up testcases except for those where we want to exercise the probing itself. The only exceptions left where we do a full probe are - pm_rpm: We use it to make sure the kernel doesn't get things wrong with power domains, so we really want to exercise the full probe paths. And there the only place really is the specific validation done with the data gathered by get_drm_info. - kmstest_force_ functions: Newer kernels should be better at re-probing state when the force sysfs fields change, but better safe than sorry. v2: I also consolidated the start_n_modes and start_connectors while at it - move one of the fixup hunks to this patch that accidentally got misplaced (Thomas). Cc: Thomas Wood <thomas.wood@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2015-11-27lib/igt_fb: also pass the stride to igt_create_fb_with_bo_size()Paulo Zanoni
If the caller is going to specify a custom size, it's likely that he will also specify a custom stride. The automatic stride picked by create_bo_for_fb() is too huge for tiled buffers, so if the caller wants smaller buffers, then he'll need a smaller stride too, otherwise the Kernel will reject the addfb IOCTL due to stride * height being bigger than the size. I want to make tests/kms_frontbuffer_tracking use igt_create_fb_with_bo_size() so I can provide smaller buffers that will fit into the CFB. I'm also planning to make all frontbuffers with the same width/height/format have the same stride and size regardless of tiling method so I can exercise specific code paths. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-11-16tests/kms_flip: Add a note that the test was skipped when modeset failsVille Syrjälä
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2015-11-16tests/kms_flip: Modeset pipes in reverse orderVille Syrjälä
To make more multi-pipe tests run on IVB, do the modesets in the reverse order (ie. pipe C first, pipe A last). This way pipe B can't reserve the 2 shared FDI lanes before pipe C is set up. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2015-11-16tests/kms_flip: Disable all pipes before each testVille Syrjälä
Currently kms_flip leaks the state of the pipes from one subtest to the next. Meaning a single pipe test can actually have two or more pipes actually up and running, and similarly a two pipe test can have three pipes running. This is particularly nasty on IVB since one of the pipes still running but not actually part of the test maybe have reserved the shared FDI lanes, thus preventing one of the pipes taking part in the test from being enabled. To avoid such problems explicitly disable all pipes before each subtests. v2: Use kmstest_unset_all_crtcs() (Paulo) Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2015-11-16tests/kms_flip: Use human readable pipe and connector namesVille Syrjälä
Print the pipes and connectors in a human readable form instead of using the integer IDs. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2015-10-23tests/kms_flip: Dump the timestamps, counters, etc. with higher debug levelsVille Syrjälä
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2015-10-23tests/kms_flip: Improve the accuracy of out frame time calculationVille Syrjälä
Don't use the rounded vrefresh info to predict the frame duration. Instead calculate if from the clock. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2015-09-11convert drm_open_any*() calls to drm_open_driver*(DRIVER_INTEL) calls with cocciMicah Fedke
Apply the new API to all call sites within the test suite using the following semantic patch: // Semantic patch for replacing drm_open_any* with arch-specific drm_open_driver* calls @@ identifier i =~ "\bdrm_open_any\b"; @@ - i() + drm_open_driver(DRIVER_INTEL) @@ identifier i =~ "\bdrm_open_any_master\b"; @@ - i() + drm_open_driver_master(DRIVER_INTEL) @@ identifier i =~ "\bdrm_open_any_render\b"; @@ - i() + drm_open_driver_render(DRIVER_INTEL) @@ identifier i =~ "\b__drm_open_any\b"; @@ - i() + __drm_open_driver(DRIVER_INTEL) Signed-off-by: Micah Fedke <micah.fedke@collabora.co.uk> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-08-21lib: add a single include headerThomas Wood
Add a header that includes all the headers for the library. This allows reorganisation of the library without affecting programs using it and also simplifies the headers that need to be included to use the library. Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-08-14tests/kms_flip: add basic tests for flip, flip vs dpms, and flip modeset v2Jesse Barnes
Simple variants that don't do multiple output or interruptible testing. v2: add vblank variant, remove duplication (Daniel) Reviewed-by: Daniel Vetter <daniel@ffwll.ch> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
2015-08-12lib/core: Add igt_reset_timeoutDaniel Vetter
Convenience wrapper suggested by Chris for igt_set_timeout(0, NULL). v2: While at it add an empty line in kms_flip to make set/reset_timeout a visual block. Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2015-08-12lib/core: Add optional reason for timeout failureDaniel Vetter
"Timed out" isn't a terribly informative message, allow users to set something more informative. Inspired by a request from Jesse. Cc: Jesse Barnes <jbarnes@virtuousgeek.org> Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>