summaryrefslogtreecommitdiff
path: root/tests/kms_plane.c
AgeCommit message (Collapse)Author
2019-04-02tests/kms_plane: Fix crop testVille Syrjälä
Set the src/dst viewports correctly when trying to crop off the edges. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110296 Fixes: 80eb61459791 ("tests/kms_plane: Remove the upscaling requirement") Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2019-03-29tests/kms_plane: Test all modifiers as wellVille Syrjälä
Instead of just testing each pixel format let's test every format+modifier combo. Obviously testing with solid filled fbs isn't the most effective way to detect tiling problems, but we can't really do much more if we want to keep comparing YUV vs. RGB results (unless we start to render the RGB content in a way that matches the YUV subsampling behaviour of the hardware). Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2019-03-29tests/kms_plane: Eliminate modeset between every planeVille Syrjälä
Move the pipe/primary plane stuff outside the plane loop so that we can avoid all that overhead (including a modeset) when switching from one plane to another. Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2019-03-29tests/kms_plane: Reduce the plane size 64x64Ville Syrjälä
Reduce the plane size further to speed up the test. 64x64 is the universal i915 minimum cursor size so we'll use that. And since we chose wisely we'll make cursors use the reduced size as well. Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2019-03-29tests/kms_plane: Remove the upscaling requirementVille Syrjälä
No point in requiring upscaling when trying to use a small fb to test pixel formats. Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2019-03-19tests/kms_plane: Use just one valid outputArkadiusz Hiler
Since those are just pipe CRC tests output does not really matter. Instead of running the test number-of-connected-outputs times per pipe, let's run them just once. Cc: Martin Peres <martin.peres@free.fr> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
2019-03-19tests/kms_plane: Print count of mismatched colorsArkadiusz Hiler
Currently we are printing one igt_warn for each CRC mismatch, which gets quite overwhelming with having to see the same error 8 times for each color tested: WARNING: CRC mismatch with format NV12 (0x3231564e) on A.3 WARNING: CRC mismatch with format NV12 (0x3231564e) on A.3 WARNING: CRC mismatch with format NV12 (0x3231564e) on A.3 WARNING: CRC mismatch with format NV12 (0x3231564e) on A.3 WARNING: CRC mismatch with format NV12 (0x3231564e) on A.3 WARNING: CRC mismatch with format NV12 (0x3231564e) on A.3 WARNING: CRC mismatch with format NV12 (0x3231564e) on A.3 WARNING: CRC mismatch with format NV12 (0x3231564e) on A.3 Since the most interesting information here is which format on which pipe/plane is broken we can skip igt_warn just once. For those weirder and rarer case where just certain colors would fail we still provide the count and the mask of color array indices that failed: WARNING: CRC mismatches with format NV12 (0x3231564e) on A.3 with 8/8 solid colors tested (0xFF) v2 (Petri): Print a mask so it's possible to know which colors failed. Cc: Martin Peres <martin.peres@linux.intel.com> Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Reviewed-by: Martin Peres <martin.peres@linux.intel.com> Signed-off-by: Petri Latvala <petri.latvala@intel.com> Acked-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
2019-03-14tests/kms_plane: Set output to PIPE_NONE at end of test_format_planeNicholas Kazlauskas
AMDGPU rejects commits that have an active CRTC without an active primary plane. The pixel-format-pipe-* tests fail on AMDGPU during the cleanup at the end of the test due to the final commit disabling all the planes but not the CRTC. Disable the CRTC when cleaning up by setting the output to PIPE_NONE. Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2019-03-13lib/igt_fb: better format printingDaniel Vetter
Steal if from kms_plane.c and put it into igt_fb.h Also tiny bikeshed to remove the space, so it fits more tidily into the usual name1=value1, name2=value2 style printing. v2: Rebase v3: It better compile :-/ Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> (v1) Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2019-03-13tests/kms_plane: Reduce execution time by reducing source size and ↵Maarten Lankhorst
performing upscaling. Execution time is way too high because of all the various conversion routines and inefficient accesses done by pixman on uncached memory. Fix it by reducing the source fb siaze, and using scaling to increase to span the entire crtc. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> [mlankhorst: Set src w/h to upscaled fb w/h to remove a magic constant.] Reviewed-by: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
2019-03-12Revert "tests: kms_plane: Disable XBGR8888"Arkadiusz Hiler
This reverts commit 067a68969b2d41e101ac778b06f2743fa69b27ab. With the kms_plane pixel format tests now exhaustively testing all the formats even with early CRC mismatches, it's better to not hide such issues in IGT. There are other systems in place to do such things. Cc: Maxime Ripard <maxime.ripard@bootlin.com> Cc: Daniel Vetter <daniel@ffwll.ch> Reviewed-by: Martin Peres <martin.peres@linux.intel.com> Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2019-03-12tests/kms_plane: Keep testing pixel formats even if one failsArkadiusz Hiler
In the pixel-format-pipe-*-planes* family of subtests currently we exit early if there is any CRC mismatch, leaving all the remaining formats untested. Let's fix that by moving the assert till after all the iterations. Also log each mismatch with its context in a single line so that it's easy to look for. Cc: Daniel Vetter <daniel@ffwll.ch> Reviewed-by: Martin Peres <martin.peres@linux.intel.com> Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
2019-03-12tests/kms_plane: Open DRM DEVICE with DRIVER_ANYMamta Shukla
Open DRM DEVICE with DRIVER_ANY so that this test can run in other drivers as well. Signed-off-by: Mamta Shukla <mamtashukla555@gmail.com> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
2019-01-08tests: Enable plane tests for AMDGPUNicholas Kazlauskas
The i915 specific feature requirements that would have failed subtests from kms_plane, kms_plane_multiple and kms_plane_scaling have been conditionally guarded against. These tests can now be run on AMDGPU with the i915 specific tests skipped appropriately. Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Reviewed-by: Harry Wentland <harry.wentland@amd.com>
2018-12-04tests/kms_plane: add source clamping testJuha-Pekka Heikkila
Add test which create fb bigger than plane and clamp fb from all sides. v2 (Maarten Lankhorst): Fix typo, create different color border around clamped fb where during test border should stay outside visible area. Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
2018-10-08tests: kms_plane: Disable XBGR8888Maxime Ripard
For some reason, the XBGR8888 CRC check will fail in the kms_plane tests. Since that format will be enabled and checked by that test in the next commit, make sure we don't introduce a regression for no particular reason. Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com> Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Acked-by: Martin Peres <martin.peres@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-08-14tests: Replace calls to igt_pipe_crc_drain + get_single with ↵Maarten Lankhorst
igt_pipe_crc_get_current() This is a more race free of accomplishing the same. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2018-06-08tests/kms_plane: crc check plane pixel formatsVille Syrjälä
Insted of just trying out each pixel format once, let's try each one with a set of colors (RGB,CMY,white,black). We'll grab a reference CRC for each using XRGB8888, and then compare that with the CRC we get with any other format. We have to use a solid color fb because chroma subsampling would generally prevent us from getting a match if we had any color transitions in the fb contents. We also abuse the legacy LUT to drop the precision down to 6 bits so that still errors causes by the RGB<->YCbCr conversion end up being ignored. v2: don't set Broadcast RGB prop if it's not there v3: Drop the Broadcast RGB prop since igt_kms already does it (Maarten) v4: Don't check ARGB8888 twice on cursors Add vblank wait after the commit to make sure we grab the crc for the new fb Don't turn the plane off between every check Fix the commit message to say we keep only 6 msbs, 7 is too much Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> #v3
2018-02-12lib/igt_fb: Add igt_fb_supported_format()Maarten Lankhorst
This makes it possible to iterate whether a format is supported or not, without each driver having to open code it. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Mika Kahola <mika.kahola@intel.com> Tested-by: Vidya Srinivas <vidya.srinivas@intel.com>
2018-02-01lib/igt_fb: Add igt_put_cairo_ctx as counter to igt_get_cairo_ctxMaarten Lankhorst
This will allow support for NV12 in the future, where igt_get_cairo_ctx will return a RGB image to draw with, which will be converted in igt_put_cairo_ctx so tests don't have to add special support for NV12. This is the same as cairo_destroy + checking for errors, but not all tests use this correctly so it's better to have a single handler for it. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2018-01-15tests/kms_plane: Run test for all supported pixel formats, v2.Mahesh Kumar
This patch adds a subtest related to pixel format testing. The test tries to create framebuffer with all supported pixel formats on every plane, and tries to draw them using cairo and commits the same on display. Changes since v1: - Make the test more generic and try on all planes, including legacy cursor. Signed-off-by: Mahesh Kumar <mahesh1.kumar@intel.com> Signed-off-by: Jyoti Yadav <jyoti.r.yadav@intel.com> Signed-off-by: Vidya Srinivas <vidya.srinivas@intel.com> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Mika Kahola <mika.kahola@intel.com>
2017-11-30kms_plane: Enumerate outputs before planes in panning subtestsImre Deak
Enumerating outputs before planes allows us to calculate the reference CRC only once for each subtest instead of calculating it for each plane tested. This removes an extra modeset during the test of each plane, speeding up things, especially on internal panels with long power cycle delays. In addition when testing multiple outputs we'll now test all planes for a given output in one go, so we can avoid the full modeset we currently have when switching from one output to another when testing a given plane. Signed-off-by: Imre Deak <imre.deak@intel.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2017-11-30kms_plane: Enumerate outputs before planes in position subtestsImre Deak
Enumerating outputs before planes allows us to calculate the reference CRC only once for each subtest instead of calculating it for each plane tested. This removes an extra modeset during the test of each plane, speeding up things, especially on internal panels with long power cycle delays. In addition when testing multiple outputs we'll now test all planes for a given output in one go, so we can avoid the full modeset we currently have when switching from one output to another when testing a given plane. While at it remove the redundant igt_skip_on() for non-existant pipes and planes, we check for these already earlier. Signed-off-by: Imre Deak <imre.deak@intel.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2017-09-08tests/kms_plane: Appease gcc -Wempty-bodyDaniel Vetter
Not exactly sure what's the point, but oh well. 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-08-14lib/kms: Add for_each_pipe_staticDaniel Vetter
for_each_pipe cannot be used for enumerating testcases, so provide something that can. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
2017-06-16tests: Rename I915_MAX_PIPES to IGT_MAX_PIPESLeo (Sunpeng) Li
Name should not be driver-specific. Signed-off-by: Leo (Sunpeng) Li <sunpeng.li@amd.com> Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
2017-06-16tests: Increase value of I915_MAX_PIPES to 6Leo (Sunpeng) Li
Increasing max pipe count to 6 to support AMD GPU's. Since some tests' behavior depends on this value, small changes are made to remove this dependency: * kms_ccs: Early abort if wanted_pipe is out-of-bounds. * kms_concurrent: Check if pipe is within bounds first. * kms_pipe_color: Prevent skipping of subsequent tests by placing generated tests in a 'igt_subtest_group'. * kms_plane: Move pipe and plane index checking to subtest group level. v2: Change invalid pipe check on kmstest_pipe_name() to use I915_MAX_PIPE v3: Change tabs to spaces in 'enum pipe' Signed-off-by: Leo (Sunpeng) Li <sunpeng.li@amd.com> Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Tested-by: Tomi Sarvela <tomi.p.sarvela@intel.com>
2017-03-21Restore "lib: Open debugfs files for the given DRM device"Chris Wilson
This reverts commit 25fbae15262cf570e207e62f50e7c5233e06bc67, restoring commit 301ad44cdf1b868b1ab89096721da91fa8541fdc Author: Tomeu Vizoso <tomeu.vizoso@collabora.com> Date: Thu Mar 2 10:37:11 2017 +0100 lib: Open debugfs files for the given DRM device with fixes. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2017-03-21Revert "lib: Open debugfs files for the given DRM device"Tomeu Vizoso
This reverts commit 301ad44cdf1b868b1ab89096721da91fa8541fdc. When a render-only device is opened and gem_quiescent_gpu is called, we need to use the debugfs dir for the master device instead. Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
2017-03-21lib: Open debugfs files for the given DRM deviceTomeu Vizoso
When opening a DRM debugfs file, locate the right path based on the given DRM device FD. This is needed so, in setups with more than one DRM device, any operations on debugfs files affect the expected DRM device. v2: - rebased and fixed new API additions v3: - updated chamelium test, which was missed previously - use the minor of the device for the debugfs path, not the major - have a proper exit handler for calling igt_hpd_storm_reset with the right device fd. Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> Reviewed-by: Robert Foss <robert.foss@collabora.com> Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
2017-01-31tests/kms_plane: Add support for dynamic number of planesRobert Foss
Add changes reflecting the new support for dynamic number of planes per pipe. Signed-off-by: Robert Foss <robert.foss@collabora.com> Reviewed-by: Mika Kahola <mika.kahola@intel.com>
2017-01-16kms_plane: Use for_each_valid_output_on_pipe.Maarten Lankhorst
This is better because some outputs may not be used on all pipes. This correctly causes some tests to skip on CHV/VLV when there is no output for a given pipe. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
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-07-26igt_kms: Remove pan members from igt_plane, v2.Maarten Lankhorst
They're duplicates with src_x/y, so just use those. Changes since v1: - Fix order of parameters in calls to igt_fb_set_position. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Ander Conselvan de Oliveira <conselvan2@gmail.com>
2016-05-04tests/kms_plane: Skip the test when configuration couldn't be appliedFeceoru, Gabriel
This could happen when the selected pipe cannot be used with the connected port due do HW constrains. v2: Apply review comment (Marius) bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=86763 Signed-off-by: Gabriel Feceoru <gabriel.feceoru@intel.com> Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
2016-05-04tests/kms_plane: Skip on no connected outputsFeceoru, Gabriel
When no display is connected all kms_plane subtests pass although no testing is done. Change it by reporting the subtests as skipped. Signed-off-by: Gabriel Feceoru <gabriel.feceoru@intel.com> Signed-off-by: Marius Vlad <marius.c.vlad@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-05-14lib/debugfs: wait_for_keypress("crc") when collecting CRCPaulo Zanoni
Let's just steal the "crc" namespace and add this by default to igt_pipe_crc_collect_crc() instead of adding more calls to other tests. If tests want special waits on just some of their collect_crc() calls, they can use another name instead of "crc". This is very useful when developing, especially when the CRC we get is wrong: we want to look at the screen to see what's going on before we can think about how to fix the problem. So let's add this to the lib instead of adding this to every single test I need to debug. v2: Add some documentation (Daniel). Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-03-23tests: Remove usage of igt_crc_equal and _non_nullDaniel Vetter
Tests should positively check for crc matches, not for mismatches. Enforce this by only exposing and igt_assert function for comparing crcs. For the few tests which didn't just do this as consistency checks but to do functional tests add FIXME comments that some reference crc values are missing. Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2015-03-23lib/debugfs: Add igt_assert_crc_equalDaniel Vetter
Because of hash collisions tests should only ever compare crc checksums for equality. Checking for inequality can result in random failures. To ensure this only expose and igt_assert function and use that. Follow-up patches will rework the code for tests which don't follow this requirement and try to compare for CRC inequality. v2: Rebase on top of Matt's kms_plane changes. Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2015-03-12tiling: Convert framebuffer helpers to use fb modifiersTvrtko Ursulin
This converts the IGT API only, underneath legacy set_tiling is still used. v2: One got away in kms_flip. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-03-06tests/kms_plane: Ensure planes recover from DPMSMatt Roper
i915 was using the main atomic 'disable plane' to turn off sprite planes during a CRTC disable. This was problematic because it modified the plane state, preventing us from recovering the original state later. One such case was that during a DPMS OFF followed by a DPMS ON, any sprite planes would not be restored properly. Let's add a test that toggles DPMS off and on and ensures that the CRC remains the same (i.e., planes are successfully restored unchanged). Signed-off-by: Matt Roper <matthew.d.roper@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-02-25tests: improve pipe enumerationThomas Wood
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-01-20kms_plane: Add test that suspends/resumes before getting crcAnder Conselvan de Oliveira
This adds a test that does a suspend/resume cycle between configuring a plane and getting the crc value for the pipe. The intention is to test if the user requested stated is restored properly, instead of being clobbered by the state read out from the hardware. Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-09-30test/kms, pm: use drm_open_any_masterImre Deak
These tests require DRM master right, so make sure they have it from the beginning. This gives an early indication if another DRM master is running and makes the given test skip (with a proper explanation of the reason) instead of exiting with error. Signed-off-by: Imre Deak <imre.deak@intel.com>
2014-08-21kms_plane: Adjust to the new igt_create.*fb() APIDamien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-08-12lib/igt_kms: set_vt_graphics_mode is a low-level helperDaniel Vetter
So give it a kmstest_ prefix and shuffle it around a bit. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-08-12lib/igt_kms: Unify pipe name helpersDaniel Vetter
And add api doc while at it. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>