summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2014-12-18tests: add pm_fbcHEADmasterPaulo Zanoni3-0/+1297
A new test for FBC. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2014-12-08tests/kms_fbc_crc: also gem_sync() on exec_nop()Paulo Zanoni1-0/+2
When we're doing the context subtest, at the end of prepare_test() we exec a single nop batch on the front buffer, which invalidates FBC. With the new frontbuffer tracking scheme it may take a while for FBC to be reenabled, so we end up failing the first fbc_enabled() assertion inside test_crc(). Other possible implementations: - Call gem_sync() at the specific prepare_test() point, not at every exec_nop() call. - Change the fbc_enabled() assertion to wait_for_fbc_enabled() and give it a bigger timeout value. Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2014-12-08tests/kms_fbc_crc: add wait_for_fbc_enabled()Paulo Zanoni1-9/+10
The code has a common pattern of "wait 300ms, then check if FBC is enabled". Most of the time FBC is enabled in either 50ms or 0ms, so introduce wait_for_fbc_enabled(), which can return much earlier if FBC is actually enabled before the 300ms timeout. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2014-12-08tests/kms_fb_crc: call gem_sync() instead of gem_bo_busy()Paulo Zanoni1-2/+2
The way kms_fbc_crc works is that it does an operation that may trigger/invalidate/update FBC, then it sleeps for 300ms to wait for FBC to kick in again, then it calls "igt_assert(fbc_enabled())". This was causing problems where the BLT test would eventually fail in the fbc_eanbled() assertion. With the recent FBC move to front buffer rendering tracking, if we don't call gem_sync() after submitting render and blt commands, it may take much more than 300ms for FBC to be reenabled: i915_gem_execbuffer2() indirectly calls intel_fb_obj_invalidate(), which disables FBC, and then it is only reenabled when i915_gem_retire_work_handler() happens and indirectly calls intel_frontbuffer_flush(). Notice that while FBC is not yet enabled, the screen contents are correct, so this shouldn't really be a "bug". The gem_sync() call will make sure the long waits don't happen. With this, 300ms should be much more than enough: either we wait about 50ms for FBC to be re-enabled - intel_enable_fbc() uses a delayed work - or it's instantaneous - on the cases where we just do the nuke. Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2014-12-08lib: add igt_wait()Paulo Zanoni3-40/+46
Just a little helper for code that needs to wait for a certain condition to happen. It has the nice advantage that it can survive the signal helper. Despite the callers added in this patch, there is another that will go in a separate patch, and another in a new IGT test file that I plan to push later. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2014-12-08tests/pm_rps: vlv: round middle point to freq supported by HWImre Deak1-7/+37
When setting the calculated middle frequency value the test assumes that the HW/kernel rounds this value according to a 50MHz step value. This is not so at least on VLV/CHV, on my B0 BYT-M for example this step value is 22MHz, so there the test will fail. To fix this get the nearest supported value by setting the target frequency as a min or max frequency and read it back. The kernel will round the returned value to the nearest supported. v2: - remove the 50MHz rounding that was done for non-VLV platforms, the new way of rounding should provide the correct value for all platforms (Ville) Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Imre Deak <imre.deak@intel.com>
2014-12-08tests/pm_rps: vlv: load gpu for idle min/max testsImre Deak1-4/+19
When changing the sysfs GT min/max frequencies, the kernel won't explicitly change the current frequency, unless it becomes out of bound based on the new min/max values. The test happens to work on non-VLV platforms because on those the kernel resets the current frequency unconditionally (to adjust the RPS interrupt mask as a side-effect) and that will lead to an RPS interrupt setting the minimum frequency. To fix this load the GPU after decreasing the min frequency and before checking the current frequency. This should set the current frequency to the minimum. Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Imre Deak <imre.deak@intel.com>
2014-12-08tests/pm_rps: vlv: wait for freq to settleImre Deak1-0/+34
At least on VLV when forcing a new GT frequency by writing to the min/max freq sysfs entries the kernel doesn't wait until the new frequency settles, so the subsequent readback check might fail. To fix this wait until the current frequency is between the min/max values using a 10ms timeout. Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Imre Deak <imre.deak@intel.com>
2014-12-08igt/drm_read: Require that pipe 0 is activeChris Wilson1-1/+44
As we require a pipe enabled to generate vblanks, the first step is to then to check that pipe 0 is active or else skip the test. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-12-05igt/drm_read: Abuse read(drm)Chris Wilson3-0/+182
Check that the more obvious userspace error conditions are handled by the kernel, ideally without loss of data. These include nonblocking waits, passing invalid buffers and passing buffers of the incorrect length. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-12-05intel_error_decode: Decode the ERROR register on Sandybridge and IvybridgeChris Wilson1-0/+57
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-12-04gem_bad_reloc: Don't flip-flop between SKIP and PASSDamien Lespiau1-1/+9
Here is a cheap way for this test to give consistent results. This doesn't change the usefulness of this test, hopefully. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=85270 Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-12-04tests: add gem_gpgpu_fill to .gitignoreThomas Wood1-0/+1
gem_gpgpu_fill was added in commit 4ec8479 (tests: Add gem_gpgpu_fill), but wasn't added to .gitignore. Cc: Zhenyu Wang <zhenyuw@linux.intel.com> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-12-04lib: always reset connectors after the state is forcedThomas Wood1-7/+7
Install the exit handler to reset connector states whenever kmstest_force_connector is called, so that the connector states are always reset even if a test fails. Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-12-04lib: remove igt_edid.hThomas Wood7-152/+2
This has been replaced by igt_kms_get_base_edid(). Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-12-04tests: use base edidThomas Wood2-21/+14
Use the base edid for testing, which includes several different display modes. Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-12-04tests/kms_force_connector: split into subtestsThomas Wood1-78/+91
v2: fix the initial mode count Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-12-04igt_kms: add a base edidThomas Wood2-0/+113
Add a basic edid block that includes several different display modes. Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-12-04tests: add more test descriptionsThomas Wood66-4/+167
Add more test descriptions based on exiting comments. Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-12-04docs: treat the test description as cdataThomas Wood1-2/+2
Enclose the test description in cdata tags since the test descriptions come from the tests themselves and may not be escaped for use in xml. Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-12-04docs: add a glossary of test name termsThomas Wood3-15/+115
Add a glossary of test name terms based on the details in tests/NAMING-CONVENTION. Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-12-04docs: add exit status documentationThomas Wood1-0/+39
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-12-04docs: add subtest lists to test descriptionsThomas Wood1-1/+10
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-12-04docs: split the test program documentation into sectionsThomas Wood5-83/+217
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-12-04tests: Add gem_gpgpu_fillZhenyu Wang2-0/+142
This is simply a copy of gem_media_fill but using new GPGPU fill operation. v2: Use general fill func pointer. Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
2014-12-04lib: Add GPGPU fillZhenyu Wang7-7/+244
This is to add fill operation using GPGPU pipeline which is similar to current media fill. This can be used to simply verify GPGPU pipeline and help to enable it on newer HW, currently it works on Gen7 only and will add support on later platform. Now this sets very simply thread group dispatch for one thread per thread group on SIMD16 dispatch. So the fill shader just uses thread group ID for buffer offset. v2: No new fill func typedef but adapt to igt_fillfunc_t. Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
2014-12-04lib: rename igt_media_fillfunc_t typedef to igt_fillfunc_tZhenyu Wang3-15/+15
This makes fill function more general to prepare for other fill method using GPGPU pipeline. Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
2014-12-01tests/drv_hangman: remove check for other drm clientsTim Gore1-22/+0
This test will not run on Android as the coreu service remains running even after the android system is stopped. Coreu is a client of drm and when the test finds this it fails an assert. Coreu is started by the init process and there is no tidy, non invasive way to stop it (init just restarts it). Coreu isn't doing anything and would not be expected to interfere with this test. In addition, all the other igt tests just rely on the user/test script to ensure that there are no other drm clients, so this test can do the same. On Android we must rely on coreu being dormant when this test runs. Signed-off-by: Tim Gore <tim.gore@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-12-01tests/Android.mk: Add kms_pwrite_crc to cairo test listTim Gore1-1/+2
kms_pwrite_crc was recently added and requires cairo, so add this to the list of tests to exclude if cairo is not avaiable Signed-off-by: Tim Gore <tim.gore@intel.com> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-12-01tests/kms_flip: Fix assert about vblank wait durationVille Syrjälä1-3/+9
If we wait for one vblank, we may end up returning almost immediately, so trying to assert anything but >0 about the minimum duration is bogus. Instead wait for two vblanks and then we can assert that we should have be blocked for at least one frame. And move the upper bound to a little over two frames to match. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=79050 Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2014-11-28tests/gem_ring_sync_copy: reduce memory usageTim Gore1-10/+15
gem_ring_sync_copy uses a lot of memory and gets OOM killed on smaller systems (eg android devices). Most of the allocation is for "busy work" to keep the render rings busy and for this we can just re-use the same few buffers over and over. This enables the test to be run on low end devices. Reviewed-by: Damien Lespiau <damien.lespiau@intel.com> Signed-off-by: Tim Gore <tim.gore@intel.com> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-11-25lib: ensure subtests are not added to simple testsThomas Wood4-0/+35
Simple tests do not support subtests, so fail if igt_subtest is used in one. Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-11-25tests: use subtests in gem_tiled_swappingThomas Wood1-30/+34
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-11-25lib: fix symbol names in documentation commentsThomas Wood4-6/+6
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-11-25demos/intel_sprite_on: Added support to compile intel_sprite_on on Android.Gagandeep S Arora4-55/+88
Added Android.mk for intel_sprite_on. v2: Addressed review comments by Daniel Vetter. - Moved the cairo independent functions from igt_kms.c to igt_aux.c. Signed-off-by: Gagandeep S Arora <gagandeep.s.arora@intel.com> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-11-25lib: fix igt_reset_connectorsThomas Wood1-2/+2
Use igt_debugfs_open to open the connector file, since the forced_connectors array now only stores the connector path relative to the debugfs path. Also add some extra error checking to ensure a test failure if the reset fails. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=85829 Signed-off-by: Thomas Wood <thomas.wood@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-11-24lib/igt_debugfs: Don't setup crc in _newDaniel Vetter8-83/+11
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-11-18tests/kms_render: gen2/3 can't do 10bpcDaniel Vetter1-1/+8
So skip those. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=86236 Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-11-18tests/prime_self_import: Track leaked objects accuratelyDaniel Vetter1-2/+2
drm_open_any keeps a buffer handle around for the cleanup sync work, so we can only grab the buffer count after the latst drm_open_any call. Otherwise we'll detect a fake leak. This broke in commit 2f2c491cf3167befe7c79e4b17afb4f6284dfc84 Author: Mika Kuoppala <mika.kuoppala@intel.com> Date: Fri Mar 28 10:52:46 2014 +0200 lib/drmtest: don't dup quiescent fd since that additional open drm fd keeps a gem object for the default context around. Hence why this also only blows up on gen6+ - earlier platforms don't have hw context support. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=79821 Cc: Mika Kuoppala <mika.kuoppala@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2014-11-18lib/aux: Make it clear that rtcwake failures aren't bugsDaniel Vetter1-1/+2
Because QA has a bunch of shitty machines with old distros and tends to re-port this all the time. References: https://bugs.freedesktop.org/show_bug.cgi?id=82232 Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2014-11-17lib/os: Push simulation test down into intel_require_memoryDaniel Vetter7-16/+6
This has the upside that we'll never forget to add it to thrashing tests. But we'll also never miss to move it when adding basic functionality tests to existing binaries. Chris already started this refining work in e.g. commit d77eda6614a1955717f224be023dedf74eb7735d Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Nov 14 07:45:40 2014 +0000 igt/gem_linear_blits: Require that we do the full test by moving igt_skip_on_simulation into subtests. Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2014-11-17lib/os: Pust igt_require into memory check functionDaniel Vetter10-34/+27
More in line with the usual igt pattern and simplifies the code - every called just wrapped it in igt_require. Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2014-11-14configure: update bug reporting urlThomas Wood1-1/+1
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-11-14igt/gem_tiled_blits: Require that we do the full testChris Wilson1-23/+23
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-11-14igt/gem_linear_blits: Require that we do the full testChris Wilson1-21/+22
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-11-14tests/pm_rpm: add gem-evict-pwrite subtestImre Deak2-0/+28
This triggers a device suspended WARN in the kernel in gen6_ggtt_insert_entries() while calling the GEM pwrite ioctl. The sequence is suggested by Daniel. Signed-off-by: Imre Deak <imre.deak@intel.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-11-13tests/kms_pwrite_crc: Add pwrite vs display coherency testVille Syrjälä3-1/+220
Add a test to verify that pwriting to a future scanout buffer works correctly. The specific problem occurs when the buffer is already UC/WT before the pwrite, not the current scanout buffer, and not currently in the CPU write domain. With the buggy kernel no clflush will be performed after the pwrite, and hence we end up with cache dirt on the display. The problem only affects LLC platforms (non-LLC would clflush anyway after pwrite), but we can let the test run on all platforms. v2: Fix typos in commit message and add to .gitignore Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2014-11-13lib: only skip subsequent tests if a timeout occurs outside of a subtestThomas Wood1-7/+6
Make timeout behaviour more consistent with igt_fail, where subsequent subtests are only skipped if the failure occurs outside of a subtest. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=85718 Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-11-13tests/kms_flip: add a timeout for the nonblocking-read testThomas Wood1-0/+2
kms_flip/nonblocking-read will block indefinitely if it fails, so introduce a timeout to indicate test failure. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=85718 Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-11-13lib/tests: add a test for igt_set_timeoutThomas Wood3-0/+11
Signed-off-by: Thomas Wood <thomas.wood@intel.com>