diff options
author | Lyude Paul <lyude@redhat.com> | 2020-09-30 13:31:50 -0400 |
---|---|---|
committer | Lyude Paul <lyude@redhat.com> | 2020-09-30 15:02:42 -0400 |
commit | ec36877d20168c2298cd213b7a765cc67c3637f4 (patch) | |
tree | e1ec423bc63d32352e20c719eda6ef731837ef34 /.gitlab-ci.yml | |
parent | 0229dfe4610102324edf91c2ffe7faa8af31c540 (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.yml | 2 |
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: |