<div class="gmail_quote">On Tue, May 18, 2010 at 10:42 PM, Roland Scheidegger <span dir="ltr">&lt;<a href="mailto:sroland@vmware.com">sroland@vmware.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<div><div></div><div class="h5">On 18.05.2010 22:23, Dave Airlie wrote:<br>
&gt; On Wed, May 19, 2010 at 3:04 AM, Roland Scheidegger &lt;<a href="mailto:sroland@vmware.com">sroland@vmware.com</a>&gt; wrote:<br>
&gt;&gt; Hi,<br>
&gt;&gt;<br>
&gt;&gt; I plan to merge the gallium-msaa branch to master soon.<br>
&gt;&gt; It&#39;s actually a bit of a misnomer since the conceptually more important<br>
&gt;&gt; changes in there are about blits...<br>
&gt;&gt;<br>
&gt;&gt; Here&#39;s a short summary what this is about:<br>
&gt;&gt; blits now operate on resources, not surfaces (surface_copy/fill -&gt;<br>
&gt;&gt; resource_copy/fill_region). Note that overlapping blits are no longer<br>
&gt;&gt; permitted (half the code always assumed this wasn&#39;t the case), and these<br>
&gt;&gt; functions are now mandatory (most of the code using these just checked<br>
&gt;&gt; for their presence and if not used util_surface_copy instead, hence it<br>
&gt;&gt; seems cleaner if drivers plug that in themselves, which some already did).<br>
&gt;&gt; Also, there&#39;s an assumption that resource_copy_region works regardless<br>
&gt;&gt; of bind flags (at least for texture targets, actually might also need to<br>
&gt;&gt; work for buffers for &quot;modern&quot; drivers in the future not sure yet), hence<br>
&gt;&gt; there are no longer any PIPE_BIND_BLIT flags (which were quite magic to<br>
&gt;&gt; begin with, since a lot of the code could end up with a quad blit which<br>
&gt;&gt; really wants RENDER_TARGET/SAMPLER_VIEW bind flags instead).<br>
&gt;&gt; It is possible some of the drivers implementation are a bit suboptimal<br>
&gt;&gt; now, as they still use surfaces internally for easier migration (svga,<br>
&gt;&gt; r300g, nouveau might particularly benefit from some cleanup).<br>
&gt;&gt; If a driver implements this just with util_resource_copy_region, it is<br>
&gt;&gt; possible there are performance regressions, since some (certainly not<br>
&gt;&gt; all) state trackers used a quad blitter instead if this wasn&#39;t available.<br>
&gt;&gt; The u_blit code still uses a pipe_surface as destination, which should<br>
&gt;&gt; probably be changed at some point too but the change was already big<br>
&gt;&gt; enough imho.<br>
&gt;&gt;<br>
&gt;&gt; Historically, blits had to operate on surfaces IIRC since there actually<br>
&gt;&gt; were surfaces in gallium not backed by a pipe_resource (then<br>
&gt;&gt; pipe_texture) but those are gone. So get_tex_surface() should actually<br>
&gt;&gt; be viewed as the analogous function to create_sampler_view() (and yes it<br>
&gt;&gt; will migrate to context too and probably renamed to something else), it<br>
&gt;&gt; creates a view of a resource (the pipe_surface) to be used as a render<br>
&gt;&gt; target (color or depth/stencil).<br>
&gt;&gt;<br>
&gt;&gt; The msaa changes are fairly minimal, there&#39;s a new context function to<br>
&gt;&gt; set the sample mask (all drivers have dummy implementations), plus some<br>
&gt;&gt; bits for sample to coverage etc. And a explicit resource_resolve<br>
&gt;&gt; function which is defined as the only way to resolve a multisampled<br>
&gt;&gt; resource, but so far no driver implements multisampling (and the mesa<br>
&gt;&gt; state tracker won&#39;t use it neither).<br>
&gt;&gt;<br>
&gt;&gt; Comments?<br>
&gt;<br>
&gt; I was worried overlapping blits for u_blitter were no longer allowed,<br>
&gt; this is a requirement so please don&#39;t break that if you find its in<br>
&gt; the way.<br>
<br>
</div></div>I was thinking about changing the u_blitter code (I don&#39;t particularly<br>
like that there is all different code to u_blit but doing pretty much<br>
the same), but I left this as is (and there are no plans to change<br>
u_blit code to not handle overlap).<br>
That said though I can&#39;t see why u_blitter code still needs to handle<br>
overlap. Unless I&#39;m missing something overlap can no longer happen<br>
there, at least not in master where r300 is the only user of this.<br></blockquote><div><br>I recall that overlapping surface_copy blits were required by st/xorg. Since you said that the overlapping blits are no longer permitted, the corresponding code can be removed from u_blitter.<br>

<br>-Marek<br></div></div>