summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
diff options
context:
space:
mode:
authorLyude Paul <lyude@redhat.com>2020-09-30 13:31:50 -0400
committerLyude Paul <lyude@redhat.com>2020-09-30 15:02:42 -0400
commitec36877d20168c2298cd213b7a765cc67c3637f4 (patch)
treee1ec423bc63d32352e20c719eda6ef731837ef34 /.gitlab-ci.yml
parent0229dfe4610102324edf91c2ffe7faa8af31c540 (diff)
tests: Add nouveau-crc tests
We're finally getting CRC support in nouveau, so let's start testing this in igt as well! While the normal CRC capture tests are nice, there's a number of Nvidia-specific hardware characteristics that we need to test as well. The most important one is known as a "notifier context flip". Basically, Nvidia GPUs store generated CRCs in an allocated memory region, referred to as the notifier context, that the driver programs itself. Strangely, this region can only hold a limited number of CRC entries, and once it runs out of available entries the hardware simply sets an overrun bit and stops writing any new CRC entries. Since igt-gpu-tools doesn't really have an expectation of only being able to grab a limited number of CRCs, we work around this in nouveau by allocating two separate CRC notifier regions each time we start capturing CRCs, and then flip between them whenever we get close to filling our currently programmed notifier context. While this keeps the number of CRC entries we lose to an absolute minimum, we are guaranteed to lose exactly one CRC entry between context flips. Thus, we add some tests to ensure that nouveau handles these flips correctly (pipe-[A-F]-ctx-flip-detection), and that igt itself is also able to handle them correctly (pipe-[A-F]-ctx-flip-skip-current-frame). Since these tests use a debugfs interface to manually control the notifier context flip threshold, we also add one test to ensure that any flip thresholds we set are cleared after a single CRC capture (ctx-flip-threshold-reset-after-capture). In addition, we also add some simple tests to test Nvidia-specific CRC sources. Changes since v5: * Fix typo Changes since v4: * Don't clear the currently set display pipe at the end of each iteration of pipe tests, otherwise we'll accidentally leave ourselves with no configured CRTCs when the test exits. Instead clear it at the start of each iteration of pipe tests but only if we just finished testing a different pipe. * Get rid of outdated comment about test_ctx_flip_detection() being limited to a single pipe * Clarify comments describing guarding against CRC collisions in test_ctx_flip_detection() * Make a small doc blurb for test_ctx_flip_detection(), it's a rather unusual and nvidia-specific behavior * Mention in test_ctx_flip_detection() that we also explicitly check that we've skipped -exactly- one frame. tl;dr more then one frame is too slow, less then one frame means a context flip just didn't happen when it should have. * Also check that the flip threshold we set in test_ctx_flip_threshold_reset_after_capture() isn't ignored by the driver * s/(create|destroy)_colors()/\1_crc_colors/g Changes since v3: * Update .gitlab-ci.yml to make nouveau exempt from the test-list-diff test, since all the cool kids are doing it and we don't care about autotools for nouveau Changes since v2: * Fix missing include in tests/nouveau_crc.c, this should fix builds for aarch64 Changes since v1: * Fix copyright year in nouveau_crc.c Reviewed-by: Jeremy Cline <jcline@redhat.com> Signed-off-by: Lyude Paul <lyude@redhat.com>
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r--.gitlab-ci.yml2
1 files changed, 1 insertions, 1 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d7fdbfde..e226d9d7 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -241,7 +241,7 @@ test:test-list-diff:
- build:tests-debian-autotools
- build:tests-debian-meson
stage: test
- script: diff <(sed "s/ /\n/g" meson-test-list.txt| grep -v 'vc4\|v3d\|panfrost' | sort) <(sed "s/ /\n/g" autotools-test-list.txt | sort)
+ script: diff <(sed "s/ /\n/g" meson-test-list.txt| grep -v 'vc4\|v3d\|panfrost\|nouveau' | sort) <(sed "s/ /\n/g" autotools-test-list.txt | sort)
test:list-undocumented-tests:
dependencies: