summaryrefslogtreecommitdiff
path: root/tests/kms_frontbuffer_tracking.c
AgeCommit message (Collapse)Author
2016-03-04kms_frontbuffer_tracking: Remove hardcoded PIPE_AGabriel Feceoru
Use the pipe which is given from the possible_crcs for that connected port instead. On BSW there are constrains for the crtc<-->connector, this fix make this test passing on BSW. v2 (from Paulo): bikeshed the blank lines. Signed-off-by: Gabriel Feceoru <gabriel.feceoru@intel.com> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-03-03kms_frontbuffer_tracking: add missing igt_remove_fb callsPaulo Zanoni
Let's be good citizens and properly handle our garbage. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-03-03tests: fix CRTC assignment for a few testsPaulo Zanoni
All the tests I wrote always assumed that every connector supported CRTC 0. This is not the case for BSW and possibly others, so fix the tests before the CI reports more failures. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-03-03kms_frontbuffer_tracking: try harder to find suitable connectorsPaulo Zanoni
Instead of just giving preference to an eDP primary connector, give preference to one that's eDP and supports pipe A, then try lesser optimal combinations later. We could try to make our test suite use different sets of connectors when testing FBC and PSR, but that would require some rework, and we would still be helpless when testing the combination of FBC+PSR. Also notice that we still hardcode pipe A for the primary connector, regardless of whether it supports it. This will be solved in the next commits. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-03-03kms_frontbuffer_tracking: extract find_connector functionPaulo Zanoni
We're going to make our search for connnectors a little more complicated, so extract the function since we're going to call it a few more times. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-03-03kms_frontbuffer_tracking: don't pass the crtc idx to init_mode_paramsPaulo Zanoni
We already pass the crtc id, so use the id to retrieve the index. We'll change the way we pass the crtc id in the next commits, so we'll have to call a function to calculate the index based on the id at that point. Do the change now in order to avoid big commits later. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-03-03lib/igt_kms: add kmstest_get_crtc_idxPaulo Zanoni
Move it from pm_rpm.c to lib/igt_kms and remove the hardcoded version from kms_frontbuffer_tracking. I'm also planning to add other callers. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-02-19kms_frontbuffer_tracking: add basic subtestPaulo Zanoni
This test executes one of each of the very basic operations with whatever features are enabled by default in the Kernel, without checking their statuses: we only care about the CRCs. Although it's completely redundant, it will be ran by the CI so we can spot regressions both in the specific features and in the frontbuffer tracking subsystem. We're not checking sink CRCs since they're still unreliable and we don't want false negatives in the CI. It takes 5 seconds to run this test on my machines. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-02-19kms_frontbuffer_tracking: don't fail fbc-farfromfence on SKLPaulo Zanoni
SKL doesn't do the same dspaddr_offset magic as the older gens, so FBC may not be enabled on fbc-farfromfence. This is not a bug since FBC is just disabled, and this is the expected case of the current Kernel, so let's not fail the test. If/once we land the proper infrastructure to fix this in the Kernel we may revert this commit. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-01-29kms_frontbuffer_tracking: standardize the used FB sizesPaulo Zanoni
We want to make sure that both tiled and untiled buffers have the same size for the same width/height/format. This will allow better control over the failure paths exercised by our tests: when we try to flip from tiled to untiled, we'll be sure that we won't execute the error path that checks for buffer sizes. v2: Use the new igt_calc_fb_size() instead of implementing our own size calculation (Daniel). v3: We can now use igt_drm_format_to_bpp() (Daniel). Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-01-29kms_frontbuffer_tracking: use igt_drm_format_to_bpp()Paulo Zanoni
The only format from fb_get_bpp() not supported by igt_drm_format_to_bpp() is ARGB2101010, but we don't really use it in kms_frontbuffer_tracking, so we can do the switch. Adding ARGB2101010 to igt_fb won't be that simple since there's no equivalent Cairo format, and igt_fb users assume that all formats known by igt_fb have equivalent Cairo formats. Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@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-07kms_frontbuffer_tracking: Skip on unreliable CRC.Rodrigo Vivi
Even with all sink crc re-works we still have platforms where after 6 vblanks it is unable to calculate the sink crc. But if we don't get the sink crc it isn't true that test failed, but that we have no ways to say test passed or failed. So let's print a message and move forward in case sink crc cannot help us to know if the screen has been updated. v2: Also include a message on setup_sink_crc and also only skip when it is mandatory, i.e. when running for PSR. Acked-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
2015-12-07kms_frontbuffer_tracking: Make sink crc mandatory only for PSR.Rodrigo Vivi
Unfortunately Sink CRC is not 100% reliable for all platforms. So we cannot block FBC tests nor skip them when we are getting unreliable Sink CRC results, or not getting them at all. Acked-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
2015-12-07kms_frontbuffer_tracking: Increase the time we wait for PSR.Rodrigo Vivi
With commit (drm/i915: Delay first PSR activation.) in kernel PSR might take a bit longer to really activate after the modeset. The first PSR activation after modeset is taking 5 times the panel power cycle delay time, which is 600ms for our machines here. So timeout here needs to be a minimum of 3s. However let's use 5s as the safe value in case we find machines with higher power cycle delay. Since we do a lot of assert(psr_disabled), this commit is increasing the time it takes to run the whole set of PSR tests by a few minutes, which had been reduced by commit f4db3b18841 ("kms_frontbuffer_tracking: reduce the PSR wait timeout to 2s"). Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@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-27kms_frontbuffer_tracking: add tilingchange subtestPaulo Zanoni
During the review of a recent FBC patch, Ville pointed a problem that happens when we use the page flip IOCTL to switch between buffers that have different tiling formats. This test should catch the problem introduced by that patch - which was not merged, by the way, so the test should be passing. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-11-27kms_frontbuffer_tracking: assert the stride changes at stridechange()Paulo Zanoni
We use igt_create_fb(), which decides the stride by itself: there's no guarantee that making a buffer 512 pixels bigger is going to make its stride change. I had a fix for this problem that was supposed to be applied before this patch, but due to a rework request I'm changing the order of the patches, so we should expect to hit this assertion for now. At least the root cause of the problem is clear now. v2: Update the commit message due to the patch order changing. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-11-27kms_frontbuffer_tracking: expand badstride and stridechangePaulo Zanoni
Make those subtests try to change the stride using multiple APIs so we can catch errors that affect full modesets, fast modesets and page flips. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-11-27kms_frontbuffer_tracking: move flip_type to struct test_modePaulo Zanoni
Handle it just like we handle t->format. IMHO, it's better. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-11-27kms_frontbuffer_tracking: do page flips using the planes APIPaulo Zanoni
Add a new FLIP_PLANES enum so we can do "page flips" using it too. The goal is to exercise the fast modeset paths on the Kernel. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-11-11tests: remove duplicate struct member initializersThomas Wood
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-11-03tests: Run igt.cocciDaniel Stone
Signed-off-by: Daniel Stone <daniels@collabora.com>
2015-10-23kms_frontbuffer_tracking: remove opt.only_featurePaulo Zanoni
That option is not needed anymore since: commit 982934625ac67234c6d85c6cf29a5a487e54d4f0 Author: Thomas Wood <thomas.wood@intel.com> Date: Wed Sep 16 14:36:24 2015 +0100 lib: allow wildcard matching when specifying subtests In fact, using "--run-subtest 'fbc-*'" is better than using --fbc-only due to how SKIPs are handled. In the former, only the tests matching the expression are tried, so the number of SKIPs only contains the number of tests on the specified pattern that were skipped. If you used --fbc-only, all the non-fbc tests would count as SKIPs, so it would be harder to know which of the tests marked as skipped were actual FBC tests. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-10-23kms_frontbuffer_tracking: add stridechange subtestPaulo Zanoni
This is a corner case not exercised by the other subtests. The test is expected to pass both with the current Kernel tree and with the patches that are on the mailing list. The patches currently on the mailing list change how the CFB is allocated, and this subtest is designed to make sure everything still works as expected. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-10-23kms_frontbuffer_tracking: add flag to not assert feature statusPaulo Zanoni
This will be used by the stridechange subtest. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-10-23kms_frontbuffer_tracking: unset crtcs after getting the base blue CRCPaulo Zanoni
This fixes the failures for cases where you use --run-subtest to run single subtests that don't use any drawing patterns. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-10-08kms_frontbuffer_tracking: add fliptrack subtestPaulo Zanoni
The current upstream Kernel code stops and then restarts FBC at every page flip. I am working on patches to keep FBC enabled all the time, so this brings the possibility of having the hardware tracking mechanism looking at the old buffer instead of the new one. This test should catch this problem. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-10-08kms_frontbuffer_tracking: don't mode unset when checking sink CRC supportPaulo Zanoni
There's no reason to do a mode unset since we don't care about whether FBC or PSR are enabled or disabled. This should save about a second for each time you invoke the program. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-10-08kms_frontbuffer_tracking: add scaledprimary subtestPaulo Zanoni
It's not testing a lot since we lack the Kernel Stolen Memory Checker, but some day this will be useful. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-10-08kms_frontbuffer_tracking: set the universal planes cap in the setupPaulo Zanoni
... instead of just setting it for the fullscreen_plane subtest and then unsetting it. We want to use it more, so just make sure all the code knows how to deal with multiple planes per CRTC. This also allows us to do some upfront caching of the plane information, so the code for the tests gets simpler. There's a new test that's going to use all these changes. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-10-08kms_frontbuffer_tracking: change pattern 1's last rect to 1x1Paulo Zanoni
Make sure the tracking mechanism is able to track a write in the very last pixel. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@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-25kms_frontbuffer_tracking: print the status when it's not what we expectPaulo Zanoni
Printing the status on an unexpected failure is always the first thing I do. So do this always. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-08-25kms_frontbuffer_tracking: add slow_draw() subtestPaulo Zanoni
It fails on my SKL machine. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-08-25kms_frontbuffer_tracking: wait for PSR to be HW Enabled & ActivePaulo Zanoni
Make sure PSR is fully there. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-08-25kms_frontbuffer_tracking: add options for setting the shared fb X/YPaulo Zanoni
I'm using this to debug some aspects of the GTT tracking. While at it, do a small rename and fix the ASCII art. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@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-14kms_frontbuffer_tracking: reduce the FBC wait timeout to 2sPaulo Zanoni
Just like we did for PSR, let's do it for FBC. FBC gets reenabled in just 50ms, so the 5000ms timeout is huge. On the other hand, we only pay the 5000ms timeout full price 9 times when running kms_frontbuffer_tracking --fbc-only, so this change shouldn't save too much time. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-08-14kms_frontbuffer_tracking: reduce the PSR wait timeout to 2sPaulo Zanoni
PSR only takes up to 100ms to be enabled, but we were using 5000ms timeouts. The problem with PSR is that the MMAP_GTT tests have to assert that PSR is disabled and stays disabled during the whole timeout, so that 5s cost is a little to high when we consider that we do the full 5s wait 74 times when running kms_frontbuffer_tracking --psr-only. By reducing to 2s we still make sure we're safe, since we're waiting 20x the time PSR needs to get reenabled, and we reduce the runtime of running kms_frontbuffer_tracking --psr-only from 14m10s to 10m29s. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-08-14kms_frontbuffer_tracking: add subtests for rgb565 and rgb101010Paulo Zanoni
Make sure valid formats work properly and invalid formats keep the features disabled. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-08-14kms_frontbuffer_tracking: fix psr-farfromfence assertionsPaulo Zanoni
We're using GTT draws and they disable PSR. This test is mostly for FBC anyway. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-08-14kms_frontbuffer_tracking: split prepare_subtest() in two functionsPaulo Zanoni
And remove duplicated code by calling prepare_subtest_data() on rte_subtest(). Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-08-14kms_frontbuffer_tracking: remove duplicated pairs on multidrawPaulo Zanoni
If we already tested the combination of m1+m2, don't test m2+m1 later: the drawing pattern used already has 4 squares, so we're already testing the "m2 followed by m1" case. This should reduce the test time from about 60s to about 30s. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-08-14kms_frontbuffer_tracking: SKIP if not enough stolen is availablePaulo Zanoni
This is not an FBC bug. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-08-14kms_frontbuffer_tracking: use all drawing methods on multidraw_subtestPaulo Zanoni
Instead of having a single pair of methods per subtest. Having this in pairs is not very useful since we end doing all the drawing methods per subtest anyway. This saves a few modesets, which makes eDP slightly faster - about 22s on my local machine. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-08-14kms_frontbuffer_tracking: improve support for multiple pixel formatsPaulo Zanoni
We now have per-pixel-format FBs and CRC values. Also t->format to indicate the format we're using on the subtest. We still only use the default RGB888 format (AKA FORMAT_DEFAULT) for all tests since multiplying the current number of tests by the number of new pixel formats doesn't sound like a great idea. With this, it should be really easy to add new tests that use different pixel formats. Also, if you want a full IGT run on a specific pixel format, all you need to do is to change FORMAT_DEFAULT. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-08-14kms_frontbuffer_tracking: add information about more formatsPaulo Zanoni
We're not using those formats yet, but a simple change to create_fb() allows us to use these formats without problems now. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-08-14kms_frontbuffer_tracking: introduce enum colorPaulo Zanoni
We want to add support for different pixel formats and the current hardcoded pixel values won't work with that. So add enum color and its auxiliary functions so we can decide the pixel values based on the chosen color enum. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-08-14kms_frontbuffer_tracking: don't pass the format to create_fb()Paulo Zanoni
It is create_fb() who is going to decide the buffer format based on the arguments provided by the caller. This is another step for the non-XRGB8888 support. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>