Re: Pipe CRCs v1

Daniel Vetter
2013-10-16T10:02:25Z

On Tue, Oct 15, 2013 at 06:55:26PM +0100, Damien Lespiau wrote:
> This series exposes the pipe CRCs on ivybridge through debugfs. It's based on
> the initial work from Shuang He, with some improvements to have a nice user
> space API.
>
> There are several points in the display pipeline where CRCs can be computed
> on the bits flowing there. For instance, it's usually possible to compute
> the CRCs of the primary plane, the sprite plane or the CRCs of the bits
> after the panel fitter (collectively called pipe CRCs).
>
> An intel-gpu-tools series will follow with helpers to use the feature from
> tests and basic testing.
>
> Further work items:
> * make it work on other platforms
> * expose other CRCs than just the pipe CRCs (transcoders, ddi, ...)
> * implement poll() for the result files

I like this and so went ahead and merged it right away. A bit of CRC
support is much better than none and the tests should make sure that
things actually work somewhat.

Polishing that imo still needs to happen:
- Roll out on other platforms. Especially vlv since there we actually want
to have good sprite support.

- Add an "all" alias or something similar which just picks a crc source
take takes the pixels after all sprite/cursor/plane blending, csc and
gamma ramps have been applied. For ivb that seems to be the "pf" source.
To make sure it works we'd need a small testcase that moves
cursors/sprites/planes and changes gamma to make sure we cover all these
things. Then we could finally have automated testcases for checking all
the restore code in our resume paths (or dpms on and all that stuff).

- atomic_t is weakly ordered, even on x86 (since it doesn't even have).
Also, writing a correct lockless ringbuffer is Damn Hard (tm). I don't
see any need to massive performance issues with this, so we need to
switch to normal mutex locking (with a spinlock for the ringbuffer
itself to allow the irq handler to fill it).

- Use it all over the place in igt tests ...

Thanks a lot for doing this.

Cheers, Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch