<div><div class="gmail_quote">On Thu, Dec 8, 2011 at 2:45 AM, Tomi Valkeinen <span dir="ltr">&lt;<a href="mailto:tomi.valkeinen@ti.com" target="_blank">tomi.valkeinen@ti.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div>On Wed, 2011-12-07 at 07:29 -0600, Rob Clark wrote:<br>
&gt; On Wed, Dec 7, 2011 at 3:31 AM, Tomi Valkeinen &lt;<a href="mailto:tomi.valkeinen@ti.com" target="_blank">tomi.valkeinen@ti.com</a>&gt; wrote:<br>
&gt; &gt; Hi,<br>
&gt; &gt;<br>
&gt; &gt; On Mon, 2011-12-05 at 19:19 -0600, Rob Clark wrote:<br>
&gt; &gt;&gt; From: Rob Clark &lt;<a href="mailto:rob@ti.com" target="_blank">rob@ti.com</a>&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Support for DMM and tiled buffers.  The DMM/TILER block in omap4+ SoC<br>
&gt; &gt;&gt; provides support for remapping physically discontiguous buffers for<br>
&gt; &gt;&gt; various DMA initiators (DSS, IVAHD, etc) which do not otherwise support<br>
&gt; &gt;&gt; non-physically contiguous buffers, as well as providing support for<br>
&gt; &gt;&gt; tiled buffers.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; See the descriptions in the following two patches for more details.<br>
&gt; &gt;<br>
&gt; &gt; Why is the tiler/dmm driver integrated into the drm driver?<br>
&gt;<br>
&gt; Basically because of a big list of reasons to keep it integrated, and<br>
&gt; no good reason that I could think of to make it a standalone driver.<br>
<br>
</div>Well, I think it&#39;s good architecture to keep independent things<br>
separate. Also we have other display frameworks in the kernel than DRM.<br>
<div><div><br></div></div></blockquote><div><br></div><div>I think we can split it out if we need to support other frameworks.  It isn&#39;t that difficult to do.  If we were to do that, I presume it would still reside in the gpu/ somewhere.  But I think I&#39;d rather wait until we have another framework require access.</div>

<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>
&gt; 1) Because the function/usage is most like a GTT in other systems..<br>
&gt; the usage is really graphics/multimedia related so GEM is a natural<br>
&gt; way to expose it to userspace.  Other places we want to use tiler<br>
&gt; buffers, like camera, are neatly handled by using dmabuf to export the<br>
&gt; GEM buffer to a different device.<br>
&gt;<br>
&gt; 2) We went down the separate driver path in the past, and it really<br>
&gt; exposes a lot of problems.  See the hacks that were done in the past<br>
&gt; to get wakeup/resume sequencing correct when tiler was a separate<br>
&gt; driver.  (hint: the table of page addresses needs to be reprogrammed<br>
&gt; before any access to buffer mapped in DMM is done.. this can be<br>
&gt; accomplished quite simply by restoring the LUT before enabling any<br>
&gt; video pipes when it is in a single driver... although that is still in<br>
&gt; the TODO)<br>
&gt;<br>
&gt; 3) Doing some of the more advanced stuff, like page flipping using<br>
&gt; DMM&#39;s synchronized refill to update page addresses synchronized with<br>
&gt; scannout will, I think, end up being some kinda weird API.. I don&#39;t<br>
&gt; think I&#39;d want to make that a public API exported by one driver<br>
&gt; consumed by another, but not such a problem if it is just something<br>
&gt; used internally by one driver.<br>
&gt;<br>
&gt; 4) The LUT isn&#39;t really big enough to be managed statically like we<br>
&gt; did in the past.. it needs to be managed dynamically, mapping and<br>
&gt; evicting buffers.  This is something that is typical with other gfx<br>
&gt; drivers in their management of their GTT..<br>
&gt;<br>
&gt; 5) I wouldn&#39;t really want to duplicate the userspace mmap&#39;ing games<br>
&gt; for 2d buffers in a lot of different drivers.<br>
<br>
</div></div>I can&#39;t really argue your points as I&#39;m not familiar with the problems<br>
with the tiler. So I&#39;m not questioning the decision to integrate the<br>
tiler code into drm, just expressing my toughts =).<br>
<br>
If the tiler driver had only kernel internal API, and no userspace APIs,<br>
I don&#39;t see why it&#39;d be much more difficult to have as a separate driver<br>
than integrated into DRM. Well, except if the tiler code itself uses<br>
features offered by DRM extensively, and having the tiler code as an<br>
independent driver would mean replicating all those features.<br>
<br>
I guess it&#39;s not quite a fair comparison, but I&#39;m comparing tiler to the<br>
vrfb driver (well, lib is perhaps a better word for it), which doesn&#39;t<br>
depend on any framework and can be used by any kernel component.<br>
<span><font color="#888888"><br></font></span></blockquote><div><br></div><div>No I appreciate your input.  I had thoughts along the same line.  But since I did not have any exported kernel functions, I figured that it should just sit underneath the omapdrm umbrella (so to speak).</div>
<div> </div><div><br></div></div></div>