summaryrefslogtreecommitdiff
path: root/tests/kms_frontbuffer_tracking.c
AgeCommit message (Collapse)Author
2019-04-03tests/frontbuffer_tracking: Assert the status of other features on ↵José Roberto de Souza
stridechange subtest As explained in c1edee186d18 ("tests/frontbuffer_tracking: Do not assert FBC state after a page flip changing stride") after changing the plane stride there is the possibility that CFB will not be big enough to keep FBC enabled, that is why do_assertions() is called with DONT_ASSERT_FEATURE_STATUS but DONT_ASSERT_FEATURE_STATUS is overkill and will not check the status of the other features like PSR and DRRS when running combined feature tests and possibly hiding bugs. So lets add a new flag that will only not assert FBC. Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com> Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com> Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
2019-04-03tests/frontbuffer_tracking: Do not assert FBC state after a page flip ↵José Roberto de Souza
changing stride When the stridechange subtest was introduced f23ea58f1fbb ("kms_frontbuffer_tracking: expand badstride and stridechange") atomic was not around and change the stride using drmModePageFlip() was not allowed so it was expected that it would return -EINVAL and kernel would keep the old framebuffer with the smaller plane that is know to fit on CFB(if it don't fit the test will skip on the first full-modeset because "not enough stolen memory" is set). But after the introduction of atomic the subtest was updated by f63e070b469d ("kms_frontbuffer_tracking: Fix tests with the new atomic reality.") to accept a no error return from drmModePageFlip() but the do_assertions() that follows it was not updated. As the subtest function comment states, kernel will do fastsets in this scenario and the allocated CFB could not be enough to keep FBC enabled over the new framebuffer, so here adding the missing DONT_ASSERT_FEATURE_STATUS to ignore the FBC state and just test if CRC match and if kernel do not misbehave. Other way to solve this issue would be make the kernel do a full-modeset when CFB is not enough for the new plane so FBC is disabled with the CRC freeing the actual CFB and then after enable CRTC again it will try to enable FBC again if it can allocate the required CFB but by the subtest comment this is not intended. v2: Assert features when drmModePageFlip() fails aka non-atomic driver(Dhinakaran) Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105683 Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com> Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
2019-04-01lib: Share the 1024x768 mode among testsJosé Roberto de Souza
Three test were duplicating this 1024x768 mode so lets move it to lib and share it. Reviewed-by: Mika Kahola <mika.kahola@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
2019-02-01tests/kms_frontbuffer_tracking: Fix skips when PSR is not available.Maarten Lankhorst
Use psr.can_test to determine we can disable PSR, and not skip because PSR is unavailable. Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Cc: José Roberto de Souza <jose.souza@intel.com> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
2019-01-22lib/psr: Add PSR2 support to the remaning psr functionsJosé Roberto de Souza
Add the mode parameter to psr_enable() and psr_sink_support() so PSR1 and PSR2 can be tested separated. For now all PSR tests will run only with PSR1 and the tests for PSR2 will come in the future. Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
2019-01-22lib/psr: Make psr_wait_entry and psr_wait_update aware of the PSR version testedJosé Roberto de Souza
This way we can test both PSR version separated. v4: Dropping psr_state_check() to psr_active_check() Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
2019-01-22lib/psr: Rename psr_wait_exit to psr_wait_updateJosé Roberto de Souza
This is a initial preparation for PSR2 test support, as in PSR2 a update to screen could mean that PSR is still active and the screen will be update by a selective update this renamed is necessary. Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
2019-01-14tests/psr: Share the code check if sink supports PSRJosé Roberto de Souza
The same code checking if sink supports PSR was spread into 3 tests, better move it to lib and reuse. v2: splitted previous patch into this one and the next one(Dhinakaran) Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
2019-01-14lib/psr: Add a macro with the maximum lenght of i915_edp_psr_status and use itJosé Roberto de Souza
So every function reading i915_edp_psr_status can allocate a buffer long enough. Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
2018-12-15tests/kms_frontbuffer_tracking: Make sure GPU is quiescent before handling ↵Maarten Lankhorst
assertions, v2. Typically PSR enables in around 136 ms, but on some tests the we have to explicitly make sure that the gpu is idle before rendering. Otherwise, sometimes we wait for the background flusher to finish, which will take at least a second longer, and causes the wait for PSR to timeout. On kms_frontbuffer_tracking: Starting subtest: psr-2p-scndscrn-shrfb-plflip-blt psr_active(debugfs_fd, true) took 136ms psr_active(debugfs_fd, true) took 136ms psr_active(debugfs_fd, true) took 350ms psr_active(debugfs_fd, true) took 136ms psr_active(debugfs_fd, true) took 1598ms Changes since v1: - Do not call gem_quiescent_gpu on modesetfrombusy subtest, or we get a timeout. Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Cc: José Roberto de Souza <jose.souza@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108733 Suggested-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> #v1
2018-11-07tests/kms_frontbuffer_tracking: Really do not skip on 4k displays, v2.Maarten Lankhorst
The previous fixes to kms_frontbuffer_tracking fixed the sharedfb tests, but the stridechange test still creates its own fb. Use the existing 'big' fb to force a stride change, without ending up with an excessive stride. Changes since v1: - Use the big fb used by the shrfb tests. It already exists and has the right dimensions, so why not? Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2018-10-16tests/kms_frontbuffer_tracking: Do not skip on 4k displays.Maarten Lankhorst
On 4k displays the horizontal resolution is 3840, which when you add 500 gives a stride of 17408 (3840 + 500 + 12 (tile alignment)). Decrease the extra offset to 248, so we end up at exactly 16384, which is the maximum supported stride for FBC. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2018-10-01igt: Require a display (KMS enabled) for KMS testsChris Wilson
Simple rule of thumb, if a kms_* test calls igt_display_init() in its global fixture, skip the entire test if the driver has disabled KMS. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Acked-by: Antonio Argenziano <antonio.argenziano@intel.com>
2018-09-28tests/psr: Wait for PSR exitDhinakaran Pandiyan
PSR appears to not exit immediately after the test commits a page flip, give some leeway for PSR to idle. Let's set the timeout at 40 ms with a 5 ms interval between each status read. Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
2018-09-27lib/igt_fb: Pass around igt_fb internallyVille Syrjälä
Instead of passing around a boatload of integers everywhere let's just pass around the igt_fb struct. That obviously means we have to populate it first sufficiently, to which end we'll add a small helper. Later on the stride/size calculations will consult the already pre-populated igt_fb and fill in the rest as needed. This makes the whole thing a lot less error prone as it's impossible to accidentally pass the arguments in the wrong order when there's just the one of them, and it's a pointer. v2: Rebase due to uint64_t size Cc: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2018-09-20tests/kms_frontbuffer_tracking: Pass the debugfs fd to psr_wait_entry()José Roberto de Souza
psr_wait_entry() uses the fd to the debugfs directory not the fd the drm device. This fix some kms_frontbuffers_tracking tests: ... (kms_frontbuffer_tracking:1353) DEBUG: Calculated CRC: pipe:[94a0476d 00000000 00000000 00000000 00000000] (kms_frontbuffer_tracking:1353) DEBUG: Test requirement passed: !fbc_not_enough_stolen() (kms_frontbuffer_tracking:1353) DEBUG: Test requirement passed: !fbc_stride_not_supported() (kms_frontbuffer_tracking:1353) DEBUG: Test requirement passed: !fbc_mode_too_large() (kms_frontbuffer_tracking:1353) DEBUG: fbc_is_enabled()? FBC enabled Compressing: yes (kms_frontbuffer_tracking:1353) DEBUG: fbc_is_enabled(IGT_LOG_DEBUG) took 0ms (kms_frontbuffer_tracking:1353) DEBUG: fbc_is_compressing() took 0ms (kms_frontbuffer_tracking:1353) CRITICAL: Test assertion failure function do_status_assertions, file ../tests/kms_frontbuffer_tracking.c:1634: (kms_frontbuffer_tracking:1353) CRITICAL: Failed assertion: psr_wait_entry(drm.fd) (kms_frontbuffer_tracking:1353) CRITICAL: Last errno: 20, Not a directory (kms_frontbuffer_tracking:1353) CRITICAL: PSR still disabled (kms_frontbuffer_tracking:1353) igt_core-INFO: Stack trace: (kms_frontbuffer_tracking:1353) igt_core-INFO: #0 ../lib/igt_core.c:1467 __igt_fail_assert() (kms_frontbuffer_tracking:1353) igt_core-INFO: #1 ../tests/kms_frontbuffer_tracking.c:1635 do_status_assertions() (kms_frontbuffer_tracking:1353) igt_core-INFO: #2 ../tests/kms_frontbuffer_tracking.c:1663 __do_assertions() (kms_frontbuffer_tracking:1353) igt_core-INFO: #3 ../tests/kms_frontbuffer_tracking.c:1687 enable_prim_screen_and_wait() (kms_frontbuffer_tracking:1353) igt_core-INFO: #4 ../tests/kms_frontbuffer_tracking.c:1847 prepare_subtest_screens() (kms_frontbuffer_tracking:1353) igt_core-INFO: #5 ../tests/kms_frontbuffer_tracking.c:1867 prepare_subtest() (kms_frontbuffer_tracking:1353) igt_core-INFO: #6 ../tests/kms_frontbuffer_tracking.c:2987 tilingchange_subtest() (kms_frontbuffer_tracking:1353) igt_core-INFO: #7 ../tests/kms_frontbuffer_tracking.c:3474 main() (kms_frontbuffer_tracking:1353) igt_core-INFO: #8 ../csu/libc-start.c:344 __libc_start_main() (kms_frontbuffer_tracking:1353) igt_core-INFO: #9 [_start+0x2a] v2: Fixing code style Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
2018-09-11lib/igt_fb: Make fb size 64bitVille Syrjälä
Switch all fb size handling to 64bits to accomodate >4GiB framebuffers. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2018-09-05tests/psr: Avoid opening of already open debugfs dirDhinakaran Pandiyan
The tests calls igt_debugfs_dir() to open the debugfs dir and further along calls igt_debugfs_read() each time i915_edp_psr_status needs to be read. As igt_debugfs_read() opens the directory unnecessarily, switch to using the newly added igt_debugfs_simple_read() v2: Commit message typo (Jose) Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
2018-09-05lib/debugfs: Function to read debugfs with the directory already openDhinakaran Pandiyan
tests/kms_frontbuffer_tracking and tests/kms_psr read debugfs nodes several times after opening the directory once. There is already an implementation of this in the kms_frontbuffer_tracking, moving that functionality to the library will allow us to share the code with kms_psr and kms_fbcon_fbt Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
2018-08-30tests/kms_frontbuffer_tracking: Don't unset mode after reading CRCMaarten Lankhorst
Until the previous commit we had to disable the mode after reading CRC because otherwise we might not have been enable features correctly. Now we can just stage the disable without applying it, so each subtest can set its desired mode and igt_display will update the state as required. Behavior with legacy PSR: - Modeset enable, read CRC, enable legacy PSR switch, disable CRTC if using legacy PSR by calling igt_display_commit. Next enable CRTC will enable PSR. Behavior with debugfs PSR: - Modeset enable - Read CRC - Enable debugfs PSR switch. PSR enabled. - Next commit will be done by test, which can disable the mode or set a mode. The latter case will be a compatible mode, in which case we avoid the modeset. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
2018-08-30tests/kms_frontbuffer_tracking: Remove redundant modesets for toggling ↵Maarten Lankhorst
features, v5. Disabling PSR and FBC used to require a commit, but now that changes to FBC take effect after the next commit, and PSR is toggled through debugfs we can skip those modesets. Changes since v1: - Try to avoid modesets for PSR if the kernel supports it, but otherwise force a modeset for the changes to take effect. Changes since v2: - Rebase on top of previous PSR changes. Changes since v3: - Rebase on move to lib/igt_psr. Changes since v4: - Split out related changes. (dhnkrn) Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
2018-08-30tests/kms_frontbuffer_tracking: Attempt to enable both screens simultaneously.Maarten Lankhorst
This might save a modeset when the second screen is disabled in the first step, and re-enabled when enabling the secondary screen. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
2018-08-30lib/psr: Add support for toggling edp psr through debugfs, v5.Maarten Lankhorst
It's harmful to write to enable_psr at runtime, and the patch that allows us to change i915_edp_psr_debug with the panel running will require us to abandon the module parameter. Hence the userspace change needs to be put in IGT first before we can change it at kernel time. Toggling it to debugfs will mean we can skip a modeset when changing our feature set. Changes since v1: - Rebase with the previous patches dropped. Changes since v2: - Rebase on top of new api in i915_edp_psr_debug. Changes since v3: - Enable IRQ debugging for extra logging. - Force PSR1 mode. (dhnkrn) - Move PSR enable/disable functions to lib/igt_psr. (dhnkrn) Changes since v4: - Redisable irqs right away when debugfs api doesn't work. (dhnkrn) - Use hex everywhere. (dhnkrn) Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> [mlankhorst: Fix -ENODEV explanation in has_psr_debugfs (dhnkrn)] Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
2018-07-17tests/frontbuffer_tracking: Use the library functions to test PSR.Dhinakaran Pandiyan
kms_frontbuffer_tracking should test PSR the same way that kms_psr does. Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
2018-07-13tests/frontbuffer_tracking: Do not test sink crcDhinakaran Pandiyan
eDP sink crc reads use vblank interrupts that cause PSR exit and therefore makes them unsuitable for PSR testing. Besides that, reading sink CRC via the AUX channel for testing when the HW also is most likely is going to be using AUX channel is a recipe for inconsistent test results. Thirdly, CRC's have been seen to be noisy or vary across sinks for the same driver and test code. We tradeoff the ability to validate what the sink is displaying for correctness. Cc: Daniel Vetter <daniel@ffwll.ch> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
2018-06-21Move declaration to the top of the codeRodrigo Siqueira
This patch fix the following gcc warnings: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] [..] igt_color_encoding.c:45:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] [..] igt_color_encoding.c: In function ‘ycbcr_to_rgb_matrix’: igt_color_encoding.c:72:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] [..] Signed-off-by: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com> Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
2018-04-17tests/kms_frontbuffer_tracking: Ignore FBC errors due mode is too largeSouza, Jose
Depending on the default mode size, some tests will fail because it will exceed the maximum size that hardware tracking can handle, mostly because hardware tracking do not take in care the X and Y offsets, so the plane size + offsets needs be smaller or equal to hardware tracking limmits. Signed-off-by: José Roberto de Souza <jose.souza@intel.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105680 Reviewed-by: Marta Lofstedt <marta.lofstedt@intel.com>
2018-04-11tests/kms_frontbuffer_tracking: Save runtime by removing sleep.Lofstedt, Marta
The kms_frontbuffer_tracking@*suspend subtests spend 20 seconds sleeping around igt_system_suspend_autoresume. I find no other igt test that require sleeping in relation to suspend-resume, so it should be removed. Signed-off-by: Marta Lofstedt <marta.lofstedt@intel.com> Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2018-04-09kms_frontbuffer_tracking: Remove unnecessary modeset from get_sink_crc.Maarten Lankhorst
get_sink_crc() wants the eDP panel enabled to collect a CRC, but this is already required for opening the pipe CRC. This was broken in the conversion to igt_display, because the call to setup_sink_crc was moved. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105503 Reported-by: Marta Löfstedt <marta.lofstedt@intel.com>
2018-03-28tests/kms_frontbuffer_tracking: Fix Y alignment in the scaledprimary ↵Maarten Lankhorst
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>
2018-03-20tests/kms_frontbuffer_tracking: Update check for PSR statusPandiyan, Dhinakaran
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>
2018-03-15tests/kms_frontbuffer_tracking: Reduce fbc status spam, v2.Maarten Lankhorst
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>
2018-03-14tests/kms_frontbuffer_tracking: Respect mode when collecting CRCs.Maarten Lankhorst
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
2018-03-12tests/kms_frontbuffer_tracking: Convert test to use igt_display, v3.Maarten Lankhorst
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>
2018-02-28tests/kms_frontbuffer_tracking: Fix build warningTvrtko Ursulin
Mark drrs_set as static to avoid a build warning. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2018-02-22igt/kms_fronbuffer_tracking: Handle ENODEV when checking i915_edp_psr_status ↵Lofstedt, Marta
for chipset support If the machine doesn't support PSR, it will return -ENODEV from i915_edp_psr_status, which we want to interpret as unsupported. This is in line with what Chris just fixed for FBC. V2: Copy-pasted to the correct place Signed-off-by: Marta Lofstedt <marta.lofstedt@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2018-02-21igt/kms_frontbuffer_tracking: Wait for PSR to be disabledChris Wilson
PSR may not exit instantaneously, so while asserting that PSR is disabled after an action, we may have to wait a short while. Currently that wait is waiting for PSR to enabled and expecting to timeout; this fails when we start the assertion with PSR already enabled. Fix the wait to wait until PSR is disabled rather than timeout. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2018-02-16igt/kms_frontbuffer_tracking: Disable FBC testing for -ENODEVChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Matthew Auld <matthew.auld@intel.com>
2018-02-05tests/kms_frontbuffer_tracking: Including DRRS test coverageLohith BS
Dynamic Refresh Rate Switch(DRRS) is used to switch the panel's refresh rate to the lowest vrefresh supported by panel, when frame is not flipped for more than a Sec. In kernel, DRRS uses the front buffer tracking infrastructure. Hence DRRS test coverage is added along with other frontbuffer tracking based features such as FBC and PSR tests. Here, we are testing DRRS with other features in all possible combinations, in all required test cases, to capture any possible regression. v2: Addressed the comments and suggestions from Vlad, Marius. The signoff details from the earlier work are also included. v3: Modified vblank rate calculation by using reply-sequence, provided by drmWaitVBlank, as suggested by Chris Wilson. v4: As suggested from Chris Wilson and Daniel Vetter 1) Avoided using pthread for calculating vblank refresh rate, instead used drmWaitVBlank reply sequence. 2) Avoided using kernel-specific info like transitional delays, instead polling mechanism with timeout is used. 3) Included edp-DRRS as a subtest in kms_frontbuffer_tracking.c, instead of having a separate test. v5: This patch adds DRRS as a new feature in the kms_frontbuffer_tracking IGT. DRRS switch to lower vrefresh rate is tested at slow-draw subtest. Note: 1) Currently kernel doesn't have support to enable and disable the DRRS feature dynamically(as in case of PSR). Hence if the panel supports DRRS it will be enabled by default. This is in continuation of last patch "https://patchwork.freedesktop.org/patch/162726/" v6: This patch adds runtime enable and disable feature for testing DRRS v7: This patch adds runtime enable and disable feature for testing DRRS through debugfs entry "i915_drrs_ctl". v8: Commit message is updated to reflect current implementation. v9: Addressed Paulo Zanoni comments. Check for DRRS_LOW at tests with OFFSCREEN + FBS_INDIVIDUAL. v10: Corrected DRRS state expectation in suspend related subtests. v11: Removing the global flag is_psr_drrs_combo [Rodrigo]. v12: Rewriting the DRRS inactive deduction [Rodrigo]. v13: En/Dis-able DRRS only when DRRS is capable on the setup. v14: Handle the error states of drrs_enable only [Rodrigo]. v15: Resolved compiler warning and rebased. Signed-off-by: Lohith BS <lohith.bs@intel.com> Signed-off-by: aknautiy <ankit.k.nautiyal@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
2018-02-01lib/igt_fb: Pass format to igt_calc_fb_sizeMaarten Lankhorst
bpp is only sufficient to calculate dimensions for packed formats, in case of planar formats we need to pass the drm format fourcc, which will give us better information. This is required for supporting planar framebuffers. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Mika Kahola <mika.kahola@intel.com>
2018-01-24igt/kms_frontbuffer_tracking: Show FBC status during the waitChris Wilson
Currently, we have a sporadic failure in the multidraw tests where it sometimes fails to start FBC in a timely fashion (and at other times works fine). Try to get a little more information as wait it is waiting for by showing the fbc status at each stage. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2017-12-20igt/kms_frontbuffer_tracking: Make assert(false) more informativeChris Wilson
When reading CI failure reports seeing an "assertion false failed" is confusing as you then have to look for the preceding explanation. Show the actual condition that fails in the assert report. Note that this gives the system a chance at a reprieve and avoids conflicting information such as: (kms_frontbuffer_tracking:1649) DEBUG: Test requirement passed: !fbc_not_enough_stolen() (kms_frontbuffer_tracking:1649) DEBUG: Test requirement passed: !fbc_stride_not_supported() (kms_frontbuffer_tracking:1649) INFO: FBC status: FBC disabled: FBC enabled (active or scheduled) (kms_frontbuffer_tracking:1649) CRITICAL: Test assertion failure function do_status_assertions, file kms_frontbuffer_tracking.c:1714: (kms_frontbuffer_tracking:1649) CRITICAL: Failed assertion: false (kms_frontbuffer_tracking:1649) CRITICAL: FBC disabled Where the fbc status tells us that it was indeed enabled, but the assertion still failed. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
2017-12-19igt/kms_frontbuffer_tracking: Access via GGTT is not guaranteed to be trackedChris Wilson
As the system may use a partial vma for a GGTT mmap, access via the GGTT mmap is not guaranteed to be tracked by FBC's fence. The rule expressed has been that any access to the frontbuffer should be followed by a fb-dirty ioctl, so always apply and expect the driver to ellide no-ops. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
2017-12-15tests/kms_frontbuffer_tracking: Correctly handle debugfs errorsMichal Wajdeczko
In commit 3f6ae7b19 ("igt/kms_frontbuffer_tracking: Keep the debugfs dir around") we introduced custom variant of __igt_debugfs_read function that fires assert when debugfs returns an error. Replace that assert with proper error handling to allow use of errors like -ENODEV. v2: allow only -ENODEV (Chris) Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2017-09-04tests/kms_frontbuffer_tracking: convert macros to functionsDaniel Vetter
Macros that should be C functions but aren't are really hard to read and confusing. Convert them over. v2: Clean up commit message and keep printing the line numbers (Paulo). v3: Actually git add (silly me). Cc: Paulo Zanoni <paulo.r.zanoni@intel.com> Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2017-07-12igt/kms_frontbuffer_tracking: Add Y-tiling supportPraveen Paneri
Allow tests to create Y-tiled bufferes using a separate argument to the test without increasing the number of subtests. v2: Changed tiling option to string (Paulo) v3 (from Paulo): minor nitpicks. Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Praveen Paneri <praveen.paneri@intel.com> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2017-07-12tests/kms_frontbuffer_tracking: Fix multidraw subtestJim Bride
The multidraw subtest was not taking whether or not the GEM buffer had ever been in write-combining mode when checking for PSR state, so fix that. Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Jim Bride <jim.bride@linux.intel.com>
2017-05-04kms_frontbuffer_tracking: Don't poke compressing status for old cpusGabriel Krisman Bertazi
Commit 2804afc606f8 ("kms_frontbuffer_tracking: fix compression checking") removes the check whether the kernel supports reporting the compression status before asserting on it. This breaks the test for no good reason on old CPUs (SNB and earlier) where the kernel can't report the compression status. Instead, we can check if the cpu doesn't support reporting and adopt the same behavior as if --no-fbc-compression-check was used. Changes since v1: - Move verification to setup_fbc (Paulo) Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100677 Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.co.uk> Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2017-04-22igt/kms_frontbuffer_tracking: Declare dependency on functioning GEMChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
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>