summaryrefslogtreecommitdiff
path: root/tests/kms_rotation_crc.c
AgeCommit message (Collapse)Author
2015-05-01kms_rotation_crc: Do not leak framebuffers during test durationTvrtko Ursulin
Test used to call prepare_crtc twice in the plane loop and leaked two framebuffers per [subtest]x[pipe]x[plane]. What the loops really wants to do, instead of second invocation of prepare_crtc, is to just turn on the display with the unrotated fb to verify that the plane property has been restored by the VT transition from previous to graphics mode. To enable that factor out code which does that from prepare_crtc into commit_crtc and call it instead. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Sonika Jindal <sonika.jindal@intel.com> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-27kms_rotation_crc: Use main test for negative casesTvrtko Ursulin
Saves a good amount of code duplication by supporting expected failures from the main loop. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Sonika Jindal <sonika.jindal@intel.com> Reviewed-by: Sonika Jindal <sonika.jindal@intel.com> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-27kms_rotation_crc: No need to square the buffer in paintTvrtko Ursulin
Now that size is calculated in a single place and correct geometry passed in, paint squares does not need to concern itself with it. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Sonika Jindal <sonika.jindal@intel.com> Reviewed-by: Sonika Jindal <sonika.jindal@intel.com> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-27kms_rotation_crc: Consolidate plane and cursor code pathsTvrtko Ursulin
There can only be one, either a plane or a cursor, in each subtest so there is no need for two framebuffer varilables and also some codepaths can be unified. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Sonika Jindal <sonika.jindal@intel.com> Reviewed-by: Sonika Jindal <sonika.jindal@intel.com> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-27kms_rotation_crc: Negative test does not need to render anythingTvrtko Ursulin
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Sonika Jindal <sonika.jindal@intel.com> Reviewed-by: Sonika Jindal <sonika.jindal@intel.com> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-27kms_rotation_crc: Remove unused variable in negative testTvrtko Ursulin
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Sonika Jindal <sonika.jindal@intel.com> Reviewed-by: Sonika Jindal <sonika.jindal@intel.com> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-27kms_rotation_crc: Framebuffer used for initial modeset does not need to be ↵Tvrtko Ursulin
painted It is just there to light up the display using the full modeset. Also renamed it from fb_full to fb_modeset to be more descriptive. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Sonika Jindal <sonika.jindal@intel.com> Reviewed-by: Sonika Jindal <sonika.jindal@intel.com> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-27kms_rotation_crc: Local framebuffers do not need to be globalTvrtko Ursulin
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Sonika Jindal <sonika.jindal@intel.com> Reviewed-by: Sonika Jindal <sonika.jindal@intel.com> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-22kms_rotation_crc: Adding test for 90/270 rotationSonika Jindal
Adding 90/270 rotation testcase for primary and sprite planes. v2: Added position test for sprite. Checking for gen > 9 for 90/270. Some cleanup and rebase. v3: Added test for unsupported tiling and unsupported pixel format for 90/270 v4: Added the legacy commit to initiate modeset in the negative test(Tvrtko) Signed-off-by: Sonika Jindal <sonika.jindal@intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Signed-off-by: Thomas Wood <thomas.wood@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>
2014-11-24lib/igt_debugfs: Don't setup crc in _newDaniel Vetter
The problem is that this causes writes to registers, and if the pipe is off they might go nowhere (e.g. when runtime pm is enabled). Furthermore we can only really check once the modeset setup is done, but again most tests set up the CRC structure before calling igt_commit and friends. We could add crc restore support to the kernel's rpm code, but that will end up being rather invasive and fragile hard-to-test code. Now originally this was needed back when CRC support wasn't available everywhere. But that's fixed now. So given all this just drop that sanity check and make sure that we only touch the debugfs file (and so the hw state) when we know the pipe is running in the desired configuration. A complementary kernel patch will try to catch offenders by returning -EIO if the pipe is off. v2: Forgot to git add one hunk. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=86092 Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2014-10-23kms_rotation_crc: Add test for cursor rotation (v2)Sonika Jindal
v2: Slight rebasing onto latest i-g-t codebase (Matt). Signed-off-by: Sonika Jindal <sonika.jindal@intel.com> Reviewed-by: Matt Roper <matthew.d.roper@intel.com> Signed-off-by: Matt Roper <matthew.d.roper@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-26kms_rotation_crc: Calling commit2 instead of legacy commitSonika Jindal
Since planes are universal now, using commit2 so that drmModeSetPlane can be called for primary plane as well instead of drmModeSetCrtc. drmModeSetPlane will update the x,y,w,h for the plane. Cc: Damien Lespiau <damien.lespiau@intel.com> Signed-off-by: Sonika Jindal <sonika.jindal@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-08-14tests: check plane rotation is reset after the VT mode is restoredThomas Wood
Make sure the rotation is reset after the VT mode is restored by collecting the unrotated CRC and comparing with the CRC value after VT mode has been restored. The CRC is used to ensure the hardware state is checked, rather than any software state. References: https://bugs.freedesktop.org/show_bug.cgi?id=82236 Signed-off-by: Thomas Wood <thomas.wood@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-07-11kms_rotation_crc: Use the igt_kms enum to encode the plane rotationDamien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Remove unnecessary includesDamien Lespiau
Turns out we didn't need most of them. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Always use the primary plane to compute the reference CRCDamien Lespiau
Trying to disable the primary planes isn't exactly working at the moment. W/A it until it works. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Document the two steps in prepare_crtc()Damien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Properly paint the whole frame bufferDamien Lespiau
The -1 meant we weren't properly filling the whole fb. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Don't commit with no fb set upDamien Lespiau
prepare_crtc() was trying to commit a display state without any fb to scan out... Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Allow the sprite test to run even without universal planesDamien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: No need to test for NULL before freeing the pipe CRC objectDamien Lespiau
igt_pipe_crc_free() does that check already. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Remove plane from the stateDamien Lespiau
having everythin in the data_t structure makes it hard to understand what should be set when. Replace that by explicit function parameters. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Remove the sleep(2)Damien Lespiau
One can inspect the output of the igt_kms API by setting IGT_DISPLAY_WAIT_AT_COMMIT=1. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Remove 'output' from the stateDamien Lespiau
This restore the balance between prepare_crtc() and cleanup_crtc(), both now taking the output as a parameter. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Remove the test on output->validDamien Lespiau
This test is already done by the for_each_connected_output() macro. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Use for_each_pipe()Damien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Remove now unnecessary definesDamien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Use igt_plane_set_rotation()Damien Lespiau
More code we can remove from the test. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Don't store 'pipe' in the stateDamien Lespiau
This variable is only needed for prepare_crtc(), need need to put it in the test state. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Don't store rotate in the test stateDamien Lespiau
We don't use it anywhere else than the test function. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Always disable the plane in cleanupDamien Lespiau
There's no need for this check, always use set_fb(NULL) on the plane. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Unify the two testsDamien Lespiau
The only difference is which plane we are talking about. So we really need one function here with a paramater. Well, almost. For the primary plane we need to ensure we support unviversal planes. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Just store the igt_plane_t in dataDamien Lespiau
Now that we're always using an igt_plane_t, we can get rid of ->type to use ->directly without those switch() or if()/else Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Skip the tests if rotation is not supportedDamien Lespiau
This happens when the kernel lacks the rotation patches. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Style issue: binary operators need spaces before and afterDamien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Use drm_plane from igt_plane_tDamien Lespiau
So we don't need all that extra code to grab the drm_plane structure for the primary_plane. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Remove useless commentsDamien Lespiau
A typical example of what comments shouldn't be: case DRM_PLANE_TYPE_PRIMARY: /* primary */ Well, yes!, it's written just there, PRIMARY! Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Factor out common primary/sprite code in prepare_crtc()Damien Lespiau
This results in less code, always a good thing. Also, we only really need one reference CRC. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Factor out the square drawing functionDamien Lespiau
Making function to the similar things is very common in programming. Let's do it once again. Cairo being a drawing library, it can be used to do the rotation! Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Fix style issue: single statement conditionalsDamien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Fix style issue: '{' at the end of linesDamien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Require universal planes for the testing primary rotationDamien Lespiau
Otherwise the test will fail instead of just skipping. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Test the validity of the output firstDamien Lespiau
So we don't need code to unwind what we just did. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Update the copyright to have this year as wellDamien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Align a few wrapped lines to the opening braceDamien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11kms_rotation_crc: Make more functions staticDamien Lespiau
More of the same. This time no need to move code around, just adding static. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>