On Fri, Jan 15, 2016 at 02:46:45PM +0200, Ville Syrjälä wrote: > On Fri, Jan 15, 2016 at 11:06:42AM +0200, Marius Vlad wrote: > > lib/igt_kms: Briefly describe Intel-to-DRM mapping between pipes, encoders and > > connectors. > > > > Signed-off-by: Marius Vlad <marius.c.vlad@xxxxxxxxx> > > --- > > lib/igt_kms.c | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > 1 file changed, 82 insertions(+) > > > > diff --git a/lib/igt_kms.c b/lib/igt_kms.c > > index c7a0b77..caa8837 100644 > > --- a/lib/igt_kms.c > > +++ b/lib/igt_kms.c > > @@ -68,6 +68,88 @@ > > * functions have all igt_ prefixes. This part is still very much work in > > * progress and so also lacks a bit documentation for the individual functions. > > * > > + * Intel/DRM terminology and display connections: > > + * > > + * Intel documentation describes the road from memory to an output connector as > > + * follows: > > + * > > + * |[!<-- language="C" --> > > + * .--------. .-------. .-------------. .-----. > > + * | Memory |---->| Pipes |---->| Transcoders |---->| DDI | > > + * '--------' '-------' '-------------' '-----' > > + * ]| > > + * > > + * Pipes represent the front-end of the display contain the planes, blending, > > + * and color correction, while the transcoders contain timing generators, > > + * encoders, A/V mixers and PSR (Panel-Self Refresh) controllers. Finally the > > + * DDI represent the connectors attached to the display. > > + * > > + * > > + * In DRM we have the following: > > + * > > + * |[!<-- language="C" --> > > + * .-----------. .-------. .-----------. .------------. > > + * | Framebuff |---->| Pipes |---->| Encoders |---->| Connectors | > > + * '-----------' '-------' '-----------' '------------' > > "Framebuff"? > > Also should this say crtc instead of pipe? Right, pipe indeed. > > > + * ]| > > + * > > + * > > + * The frame buffer ties a reference to a memory object and provides a pointer > > + * to the actual data. > > + * > > + * The pipe is used to set the display mode, timings and gamma tables. On some > > + * hardware models this is tied with the transcoder. In DRM-parlance this is > > + * referred as a CRTC. > > + * > > + * Each pipe has multiple planes. On older hardware these planes where known as > > + * primary plane, overlay/sprite plane, and cursor plane. From GEN9 (SKL/BXT) > > + * each pipe has three planes and a cursor plane. > > Not quite true. > > > Each plane can be used as a > > + * primary, as a sprite or as an overlay plane. The planes are the ones that > > + * retrieve the pixels from memory and pushes them to the encoder. > > + * > > + * A pipe prior to GEN9: > > Really more like g4x-bdw. Before g4x it was totally different, and gen4 was > sort of mix of both the old and the new. And vlv/chv have two sprites on > each pipe. > > So given all the variations in the hardware, and the fact that it keeps > changing all the time, I'm not convinced there's any point in > documenting this in igt. It'll get stale real quick, and there are > efforts to decouple igt from i915 as much as possible, so next thing you > know someone else will want to docuemnt their favorite hardware here as > well. > > So if we do want to document this stuff, then I think it should be > somewhere in the kernel modeset code (around crtc/plane init I suppose). Yes, it might make more sense to be in the kernel. What I wanted to achieve with this small intro was to bridge the gap between DRM terminology and the one in Intel 01.org PRM for igt. For a first timer is rather tedious to identify software/hadware abstraction when looking at the PRMs and when looking in igt -- I know for a fact that I'm still having trouble identifying those parts. Daniel has already suggested to add some documention between DRM-to-Intel Mappings in the kernel. Do you suggest that we should document all platforms? > > > + * > > + * |[!<-- language="C" --> > > + * .--------. > > + * | Memory | .--------. > > + * | |------------>| Cursor |------>... > > + * | | '--------' > > + * | | > > + * | | .--------. > > + * | |-------->| Sprite |---------->... > > + * | | '--------' > > + * | | > > + * | | .---------. > > + * | |----->| Primary |------------>... > > + * | | '---------' > > + * '--------' > > + * ]| > > + * > > + * A pipe with universal planes: > > + * > > + * |[!<-- language="C" --> > > + * .--------. > > + * | Memory | .--------. > > + * | |------------>| Cursor |------>... > > + * | | '--------' > > + * | | > > + * | | .-------. > > + * | |-------->| Plane |---------->... > > + * | | '-------' > > + * | | > > + * | | .-------. > > + * | |----->| Plane |------------>... > > + * | | '-------' > > + * '--------' > > + * ]| > > + * > > + * The encoder is used to convert, depending on the output, pixels from pipes > > + * to signals understood by the connector. > > + * > > + * The connector will connect to the output display. This contains information > > + * about the attached display such as EDID, DPMS and information about modes > > + * supported by the display. > > + * > > * Note that this library's header pulls in the [i-g-t > > * framebuffer](intel-gpu-tools-Framebuffer.html) library as a > > * dependency. > > -- > > 2.6.2 > > > > _______________________________________________ > > Intel-gfx mailing list > > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > > http://lists.freedesktop.org/mailman/listinfo/intel-gfx > > -- > Ville Syrjälä > Intel OTC
Attachment:
signature.asc
Description: Digital signature
_______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx