DRM connector/encoder/crtc framework documentation?

Jesse Barnes jbarnes at virtuousgeek.org
Tue Apr 20 09:41:51 PDT 2010


On Tue, 20 Apr 2010 10:56:41 -0500
Matt Sealey <matt at genesi-usa.com> wrote:

> Hi guys,
> 
> Is there any canonical or even rough, old documentation (I noticed a
> connector/encoder structure change lately) on how the DRM
> crtc/encoder/connector framework is constructed and what the
> responsibilities of each component are in a display driver?

I put together this documentation as a start; I've been waiting on Dave
to apply the corresponding source to the tree before working on it much
more. Would be good to get additional contributors as well.

> What we have is an i.MX515 with a display controller (IPU) which can
> do video overlay and all that fancy stuff. This is the CRTC right?
> This would be setting up clocks, and managing which GEM object is the
> current framebuffer?

The CRTCs generally contain actual mode timing information, as well as
a corresponding memory object for the framebuffer.  Current drivers map
CRTCs to display/overlay planes internally.

> Implementing a GEM memory manager to allocate framebuffers and other
> objects goes under this, and then the CRTC talks to it's encoder.. but
> how does the connector come in? All I see is that it is a sort of
> abstraction for parsing EDID data such that you can find out if you're
> running HDMI ("TV mode" on a TV) or DVI-like displays ("PC mode" on a
> TV).

Connectors should correspond to physical connectors attached to your
encoders.  If your configuration is simple, you could just tie your
encoder & connector code together, instantiating specific connectors
for your encoders if dynamic reconfiguration isn't possible.

> Is there a simple skeleton (maybe a virtual or off-screen
> framebuffer?) implementing the framework so I can relieve myself of
> having to pick apart Intel and Radeon drivers and working out for
> myself why and how they differ in implementation?
> 
> BTW the other question is: for future-proofing do I use GEM or TTM or what?

The TTM core is more driver independent at this point, but it's also
more complex, so it just depends on your needs.  Check out i915_gem.c
for details on how the driver specific portion of GEM should work
(basically cache domain management, buffer tracking, and execution
buffer management).

-- 
Jesse Barnes, Intel Open Source Technology Center
-------------- next part --------------
A non-text attachment was scrubbed...
Name: drm.pdf
Type: application/pdf
Size: 142454 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20100420/f6dbb56d/attachment-0001.pdf>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: drm.xml
Type: application/xml
Size: 32573 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20100420/f6dbb56d/attachment-0001.xml>


More information about the dri-devel mailing list