41 Commits

Author SHA1 Message Date
Daniel Vetter
74670c7bb9 gem_stress: ducttaping mandatory
In other news: We've been missing a unmapping_mapping_range somewhere
in the kernel. But lazy me never came around to digging up the real
cause.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-07-17 23:33:27 +02:00
Chris Wilson
75f7e81fbc gem_stress: Assert we have no pending ops when using the CPU
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-07-08 14:04:24 +01:00
Chris Wilson
4227da8c3c gem_stress: Add an option to test handling of signals
As signals cause the syscalls to be interrupted, we often need to clean
up partial state before returning to userspace. Often a source of
unamusing bugs, so encourage gem_stress to provoke them.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-07-02 09:13:20 +01:00
Daniel Vetter
336f85dafb gem_stress: some stats about incoherencies
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-06-13 22:02:52 +02:00
Daniel Vetter
1007956680 gem_stress: option to disable render copyfunc check
Too noisy - which is an another way of saying too broken :(

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-06-13 20:30:31 +02:00
Daniel Vetter
5b253cee37 gem_stress: option for tile_size
I want to know how large these corruptions can get!

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-06-13 20:30:30 +02:00
Daniel Vetter
c0f34338e7 gem_stress: option to set tiles per buffer
gem_stress -p1 is much more evil than gem_stress -c1, it also manages
to tear appart untiled workloads!

Now duct-taping over it still works (--apply-duct-tape) ... hm.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-06-13 13:18:35 +02:00
Daniel Vetter
6daa883fa3 gem_stress: option to continue despite failures
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-06-13 00:35:01 +02:00
Daniel Vetter
9649dd7ef0 gem_stress: option to override the number of rounds to complete
gem_stress -c 1

... sometimes takes a while to hit a problem.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-06-13 00:58:45 +02:00
Daniel Vetter
1095a825c0 gem_stress: avoid division by 0
Without this height would be 16 with the minimal buffer size.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-06-06 20:16:35 +02:00
Daniel Vetter
fde66f9bf4 gem_stress: disable fence storm when only using untiled buffers
This explains why gem_stress -u worked beforehand - the rendercpy
was not actually used!

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-06-06 20:15:44 +02:00
Daniel Vetter
7250328bb8 gem_stress: round max_dimension down to the next pot
Creates funny rounding problems otherwise.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-06-06 18:59:54 +02:00
Chris Wilson
3d66d913d9 gem_stress: trim buffer sizes to fit into 3D pipeline
Remember the 3D pipeline is much more restricted than the BLT engine,
and we were feeding it buffers much larger than either the
render engine or the sampler could manager.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-06-05 22:21:54 +01:00
Chris Wilson
2933547eb0 gem_stress: cpu maps force tiling to be disabled, so fix the printf
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-06-05 21:36:06 +01:00
Chris Wilson
bfa23b47a5 gem_stress: Add extra passes to intial render copyfunc verification
...and allow for cpu maps!
2011-06-05 21:34:07 +01:00
Chris Wilson
f5e63b12a5 test: Add more gen3 render blitters
... and we have a winner: gen3_mixed_blits reproduces the issue Daniel
Vetter originally found. It seems clear that we have some incoherence
between the RENDER and BLT units on gen3 that no amount of MI_FLUSH can
hide. Hmmm....

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-06-05 18:12:47 +01:00
Chris Wilson
4e1f2f5957 gem_stress: '-b' option to disable BLT copyfunc
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-05-25 13:43:33 +01:00
Chris Wilson
719ffef7c3 gem_stress: Add render copyfunc for SandyBridge
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-05-24 22:08:48 +01:00
Daniel Vetter
b11d67a33b gem_stress: option to use cpu mappings
This things just won't die (libva!!!), so add an option to test them.

_Not_ meant to test snoopable mappings.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-04-27 22:18:23 +02:00
Daniel Vetter
a67091b220 gem_stress: option to only use x-tiling
This seems to be another trick to massively improve correctness
of the render blit. At least on my i945.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-04-12 22:57:08 +02:00
Daniel Vetter
e68652cad6 gem_stress: option to disable tiling
Of all the things I've tried, this seems to be the only thing
to fix tile corruptions reliably on gen2&gen3 (safe for outright
disabling the render copy).

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-04-04 22:13:09 +02:00
Daniel Vetter
272c898807 gem_stress: clean up fence_storm
That little snippet creapt in and magically made render copy work -
by essentially disabling it.

Restore order, everything incoherent again.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-04-04 22:11:19 +02:00
Daniel Vetter
aeb0b6f33c gem_stress: extract emit_blt
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-04-04 22:03:44 +02:00
Daniel Vetter
4fcfc9f102 gem_stress: gen2 render copy
Sometimes acts up like gen3 on my i855gm. Sometimes works flawless.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-04-04 22:03:44 +02:00
Daniel Vetter
a6751bac8d gem_stress: split out gen3 render copy
Header conflicts with other headers for different generations.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-04-01 13:07:43 +02:00
Daniel Vetter
1baab2e43a gem_stress: option to disable render copy
It seems to be randomly broken, every boot in a slightly different
way on my i945gme. Works quite well on my Q35. So add an option to
disable it till this is resolved.

Well, more testing seems to suggest that I've been hunting ghosts.
Or maybe not and it works now simply because it's a different day.
Anyway, leave this in for future testing.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-03-31 20:42:34 +02:00
Daniel Vetter
cd640cca6c gem_stress: render copy on gen3
Headers copied over from xf86-video-intel, code built after the Xrender
support.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-03-29 22:52:50 +02:00
Daniel Vetter
2374af20fe gem_stress: fix set_tiling
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-03-29 22:49:08 +02:00
Daniel Vetter
6a860b7507 gem_stress: ad-hoc tile tracing
Signed-off-by: root <daniel.vetter@ffwll.ch>
2011-03-29 22:49:05 +02:00
Daniel Vetter
130daf9cd0 gem_stress: optin to set num_buffers
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-03-27 15:37:26 +02:00
Daniel Vetter
294c78f4ab gem_stress: variable gpu busy load
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-03-27 15:25:12 +02:00
Daniel Vetter
22fe098bf5 gem_stress: getoptification
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-03-27 14:26:43 +02:00
Daniel Vetter
874163d5c8 gem_stress: dump complete failed tile
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-03-27 14:02:49 +02:00
Daniel Vetter
ad515f817a Move gen5 blitter work-around to lib
Suggested by Chris Wilson to prevent utterly strange gpu hangs.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-03-25 22:09:28 +01:00
Daniel Vetter
bfa6f5d94f gem_stress: limit gtt_size to 256
gem_stress maps all buffers, so more only results in trashing (which
should be handled with an option).

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-03-25 21:54:02 +01:00
Daniel Vetter
2aac22358f gem_stress: implement gen5 blitter work-around
ddx and mesa assume that this is issued after every blit command.
Breaking that invariant results in a dying gpu.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-03-25 21:53:07 +01:00
Daniel Vetter
cfba9dd371 gem_stress: fix blitter_copy on gen4+
Utter fail at copy&pasting.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-03-25 20:42:57 +01:00
Daniel Vetter
3f10ff85bd gem_stress: submit batch if there's only one fence left
... for a copy might use up to two fences!

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-03-21 22:13:18 +01:00
Chris Wilson
652d9eb983 stress: Distinguish between busy_bo and scratch_bo creation sizes
The busy bo has a fixed size (1024x256, 32bpp) whereas the scratch bo
may need to vary their size to exercise different features of fence
allocation.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-03-21 07:58:51 +00:00
Daniel Vetter
80aae9b424 gem_stress: pwrite/pread support
And a few other things:
- inline checking when copying tiles with the cpu, fails _much_ faster.
- bo size seems to have a tremendous effect, put on the TODO.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-03-20 21:12:32 +01:00
Daniel Vetter
08cf53703e Add gem stress test
Not where I want it to be, yet. And not as good as I've hoped in detecting
broken kernels.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-03-20 21:12:32 +01:00