<feed xmlns='http://www.w3.org/2005/Atom'>
<title>external_mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c, branch replicant-6.0</title>
<subtitle>external/mesa3d
</subtitle>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/external_mesa3d/'/>
<entry>
<title>llvmpipe: fix lp_rast_plane alignment on 32bit</title>
<updated>2016-03-15T18:42:15+00:00</updated>
<author>
<name>Roland Scheidegger</name>
<email>sroland@vmware.com</email>
</author>
<published>2016-03-15T15:39:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/external_mesa3d/commit/?id=bb2c5e657b5f4c55bcec49a8d96f352ed4c1e013'/>
<id>bb2c5e657b5f4c55bcec49a8d96f352ed4c1e013</id>
<content type='text'>
Some rasterization code relies (for sse) on the first and third planes
(but not the second for now) being 128bit aligned, and we didn't get that
on 32bit - I mistakenly thought the 64bit number in the struct would get
the thing aligned to 64bit even on 32bit archs.
Stephane Marchesin really figured this out.

Reviewed-by: Jose Fonseca &lt;jfonseca@vmware.com&gt;

CC: &lt;mesa-stable@lists.freedesktop.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Some rasterization code relies (for sse) on the first and third planes
(but not the second for now) being 128bit aligned, and we didn't get that
on 32bit - I mistakenly thought the 64bit number in the struct would get
the thing aligned to 64bit even on 32bit archs.
Stephane Marchesin really figured this out.

Reviewed-by: Jose Fonseca &lt;jfonseca@vmware.com&gt;

CC: &lt;mesa-stable@lists.freedesktop.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>llvmpipe: add a few const qualifiers</title>
<updated>2016-02-19T15:51:51+00:00</updated>
<author>
<name>Brian Paul</name>
<email>brianp@vmware.com</email>
</author>
<published>2016-02-19T15:51:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/external_mesa3d/commit/?id=71dcc067a56e76246841ae9208893db186d4b73e'/>
<id>71dcc067a56e76246841ae9208893db186d4b73e</id>
<content type='text'>
Reviewed-by: Roland Scheidegger &lt;sroland@vmware.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reviewed-by: Roland Scheidegger &lt;sroland@vmware.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>llvmpipe: use scissor_planes_needed helper function</title>
<updated>2016-02-03T00:25:45+00:00</updated>
<author>
<name>Roland Scheidegger</name>
<email>sroland@vmware.com</email>
</author>
<published>2016-02-02T23:36:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/external_mesa3d/commit/?id=848a023c053b312ba5e76a124d7088bbf0b69df0'/>
<id>848a023c053b312ba5e76a124d7088bbf0b69df0</id>
<content type='text'>
So it doesn't get out of sync in multiple places.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
So it doesn't get out of sync in multiple places.
</pre>
</div>
</content>
</entry>
<entry>
<title>llvmpipe: drop scissor planes early if the tri is fully inside them</title>
<updated>2016-02-02T04:58:19+00:00</updated>
<author>
<name>Roland Scheidegger</name>
<email>sroland@vmware.com</email>
</author>
<published>2016-02-02T02:14:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/external_mesa3d/commit/?id=99bd96abbb62d2c7da60c6102661b590e05bf143'/>
<id>99bd96abbb62d2c7da60c6102661b590e05bf143</id>
<content type='text'>
If the tri is fully inside a scissor edge (or rather, we just use the
bounding box of the tri for the comparison), then we can drop these
additional scissor "planes" early. We do not even need to allocate
space for them in the tri.

The math actually appears to be slightly iffy due to bounding boxes
being rounded, but it doesn't matter in the end.

Those scissor rects are costly - the 4 planes from the scissor are
already more expensive to calculate than the 3 planes from the tri itself,
and it also prevents us from using the specialized raster code for small
tris.

This helps openarena performance by about 8% or so. Of course, it helps
there that while openarena often enables scissoring (and even moves the
scissor rect around) I have not seen a single tri actually hit the
scissor rect, ever.

v2: drop individual scissor edges, and do it earlier, not even allocating
space for them.
v3: help the compiler a bit with simpler code, suggested by Brian.

Reviewed-by: Brian Paul &lt;brianp@vmware.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If the tri is fully inside a scissor edge (or rather, we just use the
bounding box of the tri for the comparison), then we can drop these
additional scissor "planes" early. We do not even need to allocate
space for them in the tri.

The math actually appears to be slightly iffy due to bounding boxes
being rounded, but it doesn't matter in the end.

Those scissor rects are costly - the 4 planes from the scissor are
already more expensive to calculate than the 3 planes from the tri itself,
and it also prevents us from using the specialized raster code for small
tris.

This helps openarena performance by about 8% or so. Of course, it helps
there that while openarena often enables scissoring (and even moves the
scissor rect around) I have not seen a single tri actually hit the
scissor rect, ever.

v2: drop individual scissor edges, and do it earlier, not even allocating
space for them.
v3: help the compiler a bit with simpler code, suggested by Brian.

Reviewed-by: Brian Paul &lt;brianp@vmware.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>llvmpipe: minor cleanup of sse2 for calc_fixed_position</title>
<updated>2016-02-02T04:58:19+00:00</updated>
<author>
<name>Roland Scheidegger</name>
<email>sroland@vmware.com</email>
</author>
<published>2016-01-31T00:27:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/external_mesa3d/commit/?id=9d2a34e1054370663de06124aa1bc6282b450fe1'/>
<id>9d2a34e1054370663de06124aa1bc6282b450fe1</id>
<content type='text'>
Just slightly simpler assembly.

Reviewed-by: Brian Paul &lt;brianp@vmware.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Just slightly simpler assembly.

Reviewed-by: Brian Paul &lt;brianp@vmware.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>llvmpipe: fix arguments order given to vec_andc</title>
<updated>2016-01-17T19:07:27+00:00</updated>
<author>
<name>Oded Gabbay</name>
<email>oded.gabbay@gmail.com</email>
</author>
<published>2016-01-17T12:25:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/external_mesa3d/commit/?id=529aa8249a29577f160e1f289472b0da7241b90f'/>
<id>529aa8249a29577f160e1f289472b0da7241b90f</id>
<content type='text'>
This patch fixes a classic "confuse the enemy" bug.

_mm_andnot_si128 (SSE) and vec_andc (VMX) do the same operation, but the
arguments are opposite.

_mm_andnot_si128 performs "r = (~a) &amp; b" while
vec_andc performs "r = a &amp; (~b)"

To make sure this error won't return in another place, I added a wrapper
function, vec_andnot_si128, in u_pwr8.h, which makes the swap inside.

Signed-off-by: Oded Gabbay &lt;oded.gabbay@gmail.com&gt;
Reviewed-by: Roland Scheidegger &lt;sroland@vmware.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch fixes a classic "confuse the enemy" bug.

_mm_andnot_si128 (SSE) and vec_andc (VMX) do the same operation, but the
arguments are opposite.

_mm_andnot_si128 performs "r = (~a) &amp; b" while
vec_andc performs "r = a &amp; (~b)"

To make sure this error won't return in another place, I added a wrapper
function, vec_andnot_si128, in u_pwr8.h, which makes the swap inside.

Signed-off-by: Oded Gabbay &lt;oded.gabbay@gmail.com&gt;
Reviewed-by: Roland Scheidegger &lt;sroland@vmware.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>llvmpipe: (trivial) use cast wrapper for __m128d to __m128 casts</title>
<updated>2016-01-13T03:48:41+00:00</updated>
<author>
<name>Roland Scheidegger</name>
<email>sroland@vmware.com</email>
</author>
<published>2016-01-13T03:48:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/external_mesa3d/commit/?id=38cdcb000d6890f3bab479ab8061d9811ded9d39'/>
<id>38cdcb000d6890f3bab479ab8061d9811ded9d39</id>
<content type='text'>
some compiler was unhappy.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
some compiler was unhappy.
</pre>
</div>
</content>
</entry>
<entry>
<title>llvmpipe: scale up bounding box planes to subpixel precision</title>
<updated>2016-01-13T02:34:59+00:00</updated>
<author>
<name>Roland Scheidegger</name>
<email>sroland@vmware.com</email>
</author>
<published>2016-01-03T00:13:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/external_mesa3d/commit/?id=16530fdc82cde61495c66abe704e88d7752dfdbf'/>
<id>16530fdc82cde61495c66abe704e88d7752dfdbf</id>
<content type='text'>
Otherwise some planes we get in rasterization have subpixel precision, others
not. Doesn't matter so far, but will soon. (OpenGL actually supports viewports
with subpixel accuracy, so could even do bounding box calcs with that).

Reviewed-by: Brian Paul &lt;brianp@vmware.com&gt;
Reviewed-by: Jose Fonseca &lt;jfonseca@vmware.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Otherwise some planes we get in rasterization have subpixel precision, others
not. Doesn't matter so far, but will soon. (OpenGL actually supports viewports
with subpixel accuracy, so could even do bounding box calcs with that).

Reviewed-by: Brian Paul &lt;brianp@vmware.com&gt;
Reviewed-by: Jose Fonseca &lt;jfonseca@vmware.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>llvmpipe: add sse code for fixed position calculation</title>
<updated>2016-01-13T02:34:09+00:00</updated>
<author>
<name>Roland Scheidegger</name>
<email>sroland@vmware.com</email>
</author>
<published>2016-01-02T03:59:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/external_mesa3d/commit/?id=0298f5aca761da1fdb7ded4d8943b2a7f9f4b36f'/>
<id>0298f5aca761da1fdb7ded4d8943b2a7f9f4b36f</id>
<content type='text'>
This is quite a few less instructions, albeit still do the 2 64bit muls
with scalar c code (they'd need way more shuffles, plus fixup for the signed
mul so it totally doesn't seem worth it - x86 can do 32x32-&gt;64bit signed
scalar muls natively just fine after all (even on 32bit).

(This still doesn't have a very measurable performance impact in reality,
although profiler seems to say time spent in setup indeed has gone down by
10% or so overall. Maybe good for a 3% or so improvement in openarena.)

Reviewed-by: Brian Paul &lt;brianp@vmware.com&gt;
Reviewed-by: Jose Fonseca &lt;jfonseca@vmware.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is quite a few less instructions, albeit still do the 2 64bit muls
with scalar c code (they'd need way more shuffles, plus fixup for the signed
mul so it totally doesn't seem worth it - x86 can do 32x32-&gt;64bit signed
scalar muls natively just fine after all (even on 32bit).

(This still doesn't have a very measurable performance impact in reality,
although profiler seems to say time spent in setup indeed has gone down by
10% or so overall. Maybe good for a 3% or so improvement in openarena.)

Reviewed-by: Brian Paul &lt;brianp@vmware.com&gt;
Reviewed-by: Jose Fonseca &lt;jfonseca@vmware.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>llvmpipe: do 64bit plane calculations in the sse path</title>
<updated>2016-01-07T23:34:14+00:00</updated>
<author>
<name>Roland Scheidegger</name>
<email>sroland@vmware.com</email>
</author>
<published>2016-01-02T03:59:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.replicant.us/replicant/external_mesa3d/commit/?id=2923c7a0ed92a29da029183356e81ad55e615cf7'/>
<id>2923c7a0ed92a29da029183356e81ad55e615cf7</id>
<content type='text'>
The sse path was pretty much disabled for practical purposes because the
largest allowed fb size was 128x128. So, adapt it for 64bit plane calculations.
This is actually not that difficult, though a problem is that we can't do
a signed 32x32-&gt;64bit mul, only unsigned, so need to fix that up. Overall,
the code still looks reasonable, though it's not like changes there in
setup really make much of a difference in the end...

Reviewed-by: Jose Fonseca &lt;jfonseca@vmware.com&gt;
Reviewed-by: Brian Paul &lt;brianp@vmware.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The sse path was pretty much disabled for practical purposes because the
largest allowed fb size was 128x128. So, adapt it for 64bit plane calculations.
This is actually not that difficult, though a problem is that we can't do
a signed 32x32-&gt;64bit mul, only unsigned, so need to fix that up. Overall,
the code still looks reasonable, though it's not like changes there in
setup really make much of a difference in the end...

Reviewed-by: Jose Fonseca &lt;jfonseca@vmware.com&gt;
Reviewed-by: Brian Paul &lt;brianp@vmware.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
