History log of /external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
bb2c5e657b5f4c55bcec49a8d96f352ed4c1e013 15-Mar-2016 Roland Scheidegger <sroland@vmware.com> llvmpipe: fix lp_rast_plane alignment on 32bit

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 <jfonseca@vmware.com>

CC: <mesa-stable@lists.freedesktop.org>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
71dcc067a56e76246841ae9208893db186d4b73e 19-Feb-2016 Brian Paul <brianp@vmware.com> llvmpipe: add a few const qualifiers

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
848a023c053b312ba5e76a124d7088bbf0b69df0 03-Feb-2016 Roland Scheidegger <sroland@vmware.com> llvmpipe: use scissor_planes_needed helper function

So it doesn't get out of sync in multiple places.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
99bd96abbb62d2c7da60c6102661b590e05bf143 02-Feb-2016 Roland Scheidegger <sroland@vmware.com> llvmpipe: drop scissor planes early if the tri is fully inside them

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 <brianp@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
9d2a34e1054370663de06124aa1bc6282b450fe1 31-Jan-2016 Roland Scheidegger <sroland@vmware.com> llvmpipe: minor cleanup of sse2 for calc_fixed_position

Just slightly simpler assembly.

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
529aa8249a29577f160e1f289472b0da7241b90f 17-Jan-2016 Oded Gabbay <oded.gabbay@gmail.com> llvmpipe: fix arguments order given to vec_andc

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) & b" while
vec_andc performs "r = a & (~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 <oded.gabbay@gmail.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
38cdcb000d6890f3bab479ab8061d9811ded9d39 13-Jan-2016 Roland Scheidegger <sroland@vmware.com> llvmpipe: (trivial) use cast wrapper for __m128d to __m128 casts

some compiler was unhappy.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
16530fdc82cde61495c66abe704e88d7752dfdbf 03-Jan-2016 Roland Scheidegger <sroland@vmware.com> llvmpipe: scale up bounding box planes to subpixel precision

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 <brianp@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
0298f5aca761da1fdb7ded4d8943b2a7f9f4b36f 02-Jan-2016 Roland Scheidegger <sroland@vmware.com> llvmpipe: add sse code for fixed position calculation

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->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 <brianp@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
2923c7a0ed92a29da029183356e81ad55e615cf7 02-Jan-2016 Roland Scheidegger <sroland@vmware.com> llvmpipe: do 64bit plane calculations in the sse path

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->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 <jfonseca@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
fad283ba9e691d0d5d170f388e75542f2c39e559 02-Jan-2016 Roland Scheidegger <sroland@vmware.com> llvmpipe: don't store eo as 64bit int

eo, just like dcdx and dcdy, cannot overflow 32bit.
Store it as unsigned though just in case (it cannot be negative, but
in theory twice as big as dcdx or dcdy so this gives it one more bit).
This doesn't really change anything, albeit it might help minimally on
32bit archs.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
b61b9a377edb566af2f015c159f5f8779d9b27d9 31-Dec-2015 Roland Scheidegger <sroland@vmware.com> llvmpipe: use aligned data for the assembly program in setup

Back in the day (before 24678700edaf5bb9da9be93a1367f1a24cfaa471) the values
were not actually in a struct but even then I can't see why we didn't simply
align the values. Especially since it's trivial to do so.
(Not that it actually matters since the code is pretty much unused for now.)

Reviewed-by: Oded Gabbay <oded.gabbay@gmail.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
3bbe16ea79bb5738109df36780cc99119a006d91 13-Dec-2015 Oded Gabbay <oded.gabbay@gmail.com> llvmpipe: Optimize do_triangle_ccw for POWER8

This patch converts the SSE optimization done in do_triangle_ccw to
VMX/VSX.

I measured the results on POWER8 machine with 32 cores at 3.4GHz and
16GB of RAM.

FPS/Score
Name Before After Delta
------------------------------------------------
glmark2 (score) 136.6 139.8 2.34%
openarena 16.14 16.35 1.30%
xonotic 4.655 4.707 1.11%

v2:

- Convert loads to use aligned loads
- Make sure code is build only on POWER8 LE machine

Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
13eb5f596bc8ece3d1805b388aa53917e6158d7b 04-Dec-2015 Edward O'Callaghan <eocallaghan@alterapraxis.com> gallium/drivers: Sanitize NULL checks into canonical form

Use NULL tests of the form `if (ptr)' or `if (!ptr)'.
They do not depend on the definition of the symbol NULL.
Further, they provide the opportunity for the accidental
assignment, are clear and succinct.

Signed-off-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
ddaf8d7b10c57cc44ed0d69554e54b3573007315 03-Dec-2015 Roland Scheidegger <sroland@vmware.com> llvmpipe: use provoking vertex for layer/viewport

d3d10 actually requires using provoking (first) vertex. GL is happy with
any vertex (as long as we say it's undefined in the corresponding queries).
Up to now we actually used vertex 0 for viewport index, and vertex 1 for
layer (for tris), which really didn't make sense (probably a typo). Also,$
since we reorder vertices of clockwise triangle, that actually meant we used
a different vertex depending if the traingle was cw or ccw (still ok by gl).
However, it should be consistent with what draw (clip) does, and using
provoking vertex seems like the sensible choice (draw clip will be fixed
next as it is totally broken there).
While here, also use the correct viewport always even when not needed
in setup (we pass it down to jit fragment shader it might be needed there
for getting correct near/far depth values).

No piglit changes.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
a2a1a5805fd617e7f3cc8be44dd79b50da07ebb9 21-Jul-2015 Ilia Mirkin <imirkin@alum.mit.edu> gallium: replace INLINE with inline

Generated by running:
git grep -l INLINE src/gallium/ | xargs sed -i 's/\bINLINE\b/inline/g'
git grep -l INLINE src/mesa/state_tracker/ | xargs sed -i 's/\bINLINE\b/inline/g'
git checkout src/gallium/state_trackers/clover/Doxyfile

and manual edits to
src/gallium/include/pipe/p_compiler.h
src/gallium/README.portability

to remove mentions of the inline define.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Acked-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
a0ddc547779585b308feb70777f1f95f12c00a81 26-Nov-2014 José Fonseca <jfonseca@vmware.com> draw,gallivm,llvmpipe: Avoid implicit casts of 32-bit shifts to 64-bits.

Addresses MSVC warnings "result of 32-bit shift implicitly converted to
64 bits (was 64-bit shift intended?)", which can often be symptom of
bugs, but in these cases were all benign.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
877128505431adaf817dc8069172ebe4a1cdf5d8 17-Jan-2014 José Fonseca <jfonseca@vmware.com> s/Tungsten Graphics/VMware/

Tungsten Graphics Inc. was acquired by VMware Inc. in 2008. Leaving the
old copyright name is creating unnecessary confusion, hence this change.

This was the sed script I used:

$ cat tg2vmw.sed
# Run as:
#
# git reset --hard HEAD && find include scons src -type f -not -name 'sed*' -print0 | xargs -0 sed -i -f tg2vmw.sed
#

# Rename copyrights
s/Tungsten Gra\(ph\|hp\)ics,\? [iI]nc\.\?\(, Cedar Park\)\?\(, Austin\)\?\(, \(Texas\|TX\)\)\?\.\?/VMware, Inc./g
/Copyright/s/Tungsten Graphics\(,\? [iI]nc\.\)\?\(, Cedar Park\)\?\(, Austin\)\?\(, \(Texas\|TX\)\)\?\.\?/VMware, Inc./
s/TUNGSTEN GRAPHICS/VMWARE/g

# Rename emails
s/alanh@tungstengraphics.com/alanh@vmware.com/
s/jens@tungstengraphics.com/jowen@vmware.com/g
s/jrfonseca-at-tungstengraphics-dot-com/jfonseca-at-vmware-dot-com/
s/jrfonseca\?@tungstengraphics.com/jfonseca@vmware.com/g
s/keithw\?@tungstengraphics.com/keithw@vmware.com/g
s/michel@tungstengraphics.com/daenzer@vmware.com/g
s/thomas-at-tungstengraphics-dot-com/thellstom-at-vmware-dot-com/
s/zack@tungstengraphics.com/zackr@vmware.com/

# Remove dead links
s@Tungsten Graphics (http://www.tungstengraphics.com)@Tungsten Graphics@g

# C string src/gallium/state_trackers/vega/api_misc.c
s/"Tungsten Graphics, Inc"/"VMware, Inc"/

Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
37de6b06821b208920ccf6fb99fbc727d0344004 07-Jan-2014 José Fonseca <jfonseca@vmware.com> llvmpipe: Respect bottom_edge_rule when computing the rasterization bounding boxes.

This was inadvertently forgotten when replacing gl_rasterization_rules
with lower_left_origin and half_pixel_center (commit
2737abb44efebfa10ac84b183c20fc5818d1514e).

This makes a difference when lower_left_origin != half_pixel_center, e.g,
D3D10.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Zack Rusin <zackr@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
bfcf1ba1c4879102eb05460528b02a23d81eac99 13-Dec-2013 Roland Scheidegger <sroland@vmware.com> llvmpipe: (trivial) get rid of triangle subdivision code

This code was always problematic, and with 64bit rasterization we no longer
need it at all.

Reviewed-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
0319ea9ff6a9cc2eba4879fbe09c6fac137d6ce1 26-Nov-2013 Matthew McClure <mcclurem@vmware.com> llvmpipe: clamp fragment shader depth write to the current viewport depth range.

With this patch, generate_fs_loop will clamp any fragment shader depth writes
to the viewport's min and max depth values. Viewport selection is determined
by the geometry shader output for the viewport array index. If no index is
specified, then the default viewport index is zero. Semantics for this path
can be found in draw_clamp_viewport_idx and lp_clamp_viewport_idx.

lp_jit_viewport was created to store viewport information visible to JIT code,
and is validated when the LP_NEW_VIEWPORT dirty flag is set.

lp_rast_shader_inputs is responsible for passing the viewport_index through
the rasterizer stage to fragment stage (via lp_jit_thread_data).

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
0510ec67e2c5b5ddb4755564314ccfe057555984 25-Oct-2013 Zack Rusin <zackr@vmware.com> llvmpipe: support 8bit subpixel precision

8 bit precision is required by d3d10 but unfortunately
requires 64 bit rasterizer. This commit implements
64 bit rasterization with full support for 8bit subpixel
precision. It's a combination of all individual commits
from the llvmpipe-rast-64 branch.

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
edde6c77bd1cb91f6f7c42010919e6f406f507ce 26-Sep-2013 Zack Rusin <zackr@vmware.com> llvmpipe: abstract the code to set number of subpixel bits

As we're moving towards expanding the number of subpixel
bits and the width of the variables used in the computations
we need to make this code a bit more centralized.

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
60c448faea54a56047202204c486b8d399429909 19-Sep-2013 Zack Rusin <zackr@vmware.com> llvmpipe: count c_primitives before discarding null prims

We need to count the clipper primitives before the rasterizer
discards one it considers to be null.

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
71ecc2cf71e678daca347bb10dd48e037ecd10af 24-Sep-2013 Zack Rusin <zackr@vmware.com> Revert "llvmpipe: increase number of subpixel bits to eight"

This reverts commit 755c11dc5e94f17097c186edaaa39d818396f14c.
We agreed that this is band-aid that's not very useful and
the proper solution is to rewrite the rasterization algo
so that it operates on 64 bit values.

Signed-off-by: Zack Rusin <zackr@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
e5ec5aef2be4d667a1f28f0ee0105dd6dc204732 23-Sep-2013 Zack Rusin <zackr@vmware.com> llvmpipe: align the array used for subdivived vertices

When subdiving a triangle we're using a temporary array to store
the new coordinates for the subdivided triangles. Unfortunately
the array used for that was not aligned properly causing
random crashes in the llvm jit code which was trying to load
vectors from it.

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
755c11dc5e94f17097c186edaaa39d818396f14c 19-Sep-2013 Zack Rusin <zackr@vmware.com> llvmpipe: increase number of subpixel bits to eight

Unfortunately d3d10 requires a lot higher precision (e.g.
wgf11clipping tests for it). The smallest number of precision
bits with which it passes is 8. That means that we need to
decrease the maximum length of an edge that we can handle without
subdivision by 4 bits. Abstracted the code a bit to make it easier
to change once to switch to 64bit rasterization.

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
27cedd8aecccea808a35ef297477cac5fe87e476 13-Aug-2013 Zack Rusin <zackr@vmware.com> llvmpipe: fix pipeline statistics with a null ps

If the fragment shader is null then pixel shader invocations have
to be equal to zero. And if we're running a null ps then clipper
invocations and primitives should be equal to zero but only
if both stancil and depth testing are disabled.

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
59b8689d3706fbb739d9b15943907ae67f35de95 27-Jun-2013 Roland Scheidegger <sroland@vmware.com> llvmpipe: fix a bug in opaque optimization

If there are queries active the opaque optimization reseting the bin needs to
be disabled.
(Not really tested since the bug was discovered by code inspection not
an actual test failure.)

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
2e4da1f59444c550e4b1e31dd5cfec39d7ef2a26 26-Jun-2013 Roland Scheidegger <sroland@vmware.com> llvmpipe: add support for nested / overlapping queries

OpenGL doesn't support this but d3d10 does.
It is a bit of a pain as it is necessary to keep track of queries
still active at the end of a scene, which is also why I cheat a bit
and limit the amount of simultaneously active queries to (arbitrary)
16 (simplifies things because don't have to deal with a real list
that way). I can't think of a reason why you'd really want large
numbers of overlapping/nested queries so it is hopefully fine.
(This only affects queries which need to be binned.)

v2: don't copy remainder of array when deleting an entry simply replace
the deleted entry with the last one (order doesn't matter).

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
08203428800554215657f1ebf19d74328103800e 25-Jun-2013 Roland Scheidegger <sroland@vmware.com> llvmpipe: rework query logic

Previously lp_rast_begin_query commands were always inserted into each bin,
and re-issued if the scene was restarted, while lp_rast_end_query commands
were executed for each still active query at the end of tile rasterization.
Also, the ps_invocations and vis_counter were set to zero when the respective
command was encountered.
This however cannot work for multiple queries of the same type (note that
occlusion counter and occlusion predicate while different type were also
affected).
So, change the logic to always set the ps_invocations and vis_counter to zero
at the start of tile rasterization, and then use "start" and "end" per-thread
query values when encountering the begin/end query commands instead, which
should work for multiple queries of the same type. This also means queries do
not have to be reissued in a new scene, however they still need to be finished
at end of tile rasterization, so a list of queries still active at the end of
a scene needs to be maintained.
Also while here don't bin the queries which don't do anything in rasterization.
(This change does not actually handle multiple queries of the same type yet,
as the list of active queries is just a simple fixed array and setup can still
only have one query active per type.)

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
dc5dc4fd943e1da5207e0489c355e9a7ba1dff87 19-Jun-2013 Roland Scheidegger <sroland@vmware.com> llvmpipe: handle more queries

Handle PIPE_QUERY_GPU_FINISHED and PIPE_QUERY_TIMESTAMP_DISJOINT, and
also fill out the ps_invocations and c_primitives from the
PIPE_QUERY_PIPELINE_STATISTICS (the others in there should already
be handled). Note that ps_invocations isn't pixel exact, just 16 pixel
exact but I guess it's better than nothing.
Doesn't really seem to work correctly but there's probably bugs elsewhere.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
d8146f240e628e70d4c07f7e805a179f70c36e23 07-Jun-2013 Roland Scheidegger <sroland@vmware.com> llvmpipe: add support for layered rendering

Mostly just make sure the layer parameter gets passed through to the right
places (and get clamped, can do this at setup time), fix up clears to
clear all layers and disable opaque optimization. Luckily don't need to
touch the jitted code.
(Clears invoked via pipe's clear_render_target method will not work however
since the pipe_util_clear function used for it doesn't handle clearing
multiple layers yet.)

v2: per Brian's suggestion, prettify var initialization and add some comments,
add assertion for impossible layer specification for surface.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
c88ce3480c715ab40f4d488c86c90213b1472613 25-May-2013 Zack Rusin <zackr@vmware.com> llvmpipe: clamp scissors to be between 0 and max

We need to clamp to make sure invalid shader doesn't crash our
driver. The spec says to return 0-th index for everything that's
out of bounds.

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: José Fonseca<jfonseca@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
97b8ae429ec64003e258764db12ea69d4e978f6d 24-May-2013 Zack Rusin <zackr@vmware.com> llvmpipe: implement support for multiple viewports

Largely related to making sure the rasterizer can correctly
pick out the correct scissor box for the current viewport.

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: José Fonseca<jfonseca@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
2737abb44efebfa10ac84b183c20fc5818d1514e 23-Apr-2013 José Fonseca <jfonseca@vmware.com> gallium: Replace gl_rasterization_rules with lower_left_origin and half_pixel_center.

Squashed commit of the following:

commit 04c5fa2cbb8e89d6f2fa5a75af1cca03b1f6b852
Author: José Fonseca <jfonseca@vmware.com>
Date: Tue Apr 23 17:37:18 2013 +0100

gallium: s/lower_left_origin/bottom_edge_rule/

commit 4dff4f64fa83b9737def136fffd161d55e4f1722
Author: José Fonseca <jfonseca@vmware.com>
Date: Tue Apr 23 17:35:04 2013 +0100

gallium: Move diagram to docs.

commit 442a63012c8c3c3797f45e03f2ca20ad5f399832
Author: James Benton <jbenton@vmware.com>
Date: Fri May 11 17:50:55 2012 +0100

gallium: Replace gl_rasterization_rules with lower_left_origin and half_pixel_center.

This change is necessary to achieve correct results when using OpenGL
FBOs.

Reviewed-by: Marek Olšák <maraeo@gmail.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
1165ff1af1853c9f1156221e1225ed5fb92a4507 26-Mar-2013 Brian Paul <brianp@vmware.com> llvmpipe: use triangle subdivision to avoid fixed-point overflow issues

If we're drawing to a surface that's 2048 x 2048 pixels or larger there's
danger of fixed-point overflow in the triangle rasterization code. That
leads to various rendering glitches.

Rather than implement some intricate changes to the rasterization code,
simply subdivide triangles into smaller subtriangles to avoid the issue.
Only do this when the drawing surface is larger than 2048 by 2048.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
e90c56bc4eb6d6f33861eb1b89ee9127e361e407 29-Mar-2013 Brian Paul <brianp@vmware.com> llvmpipe: add 'f' suffix to 1.0 in fixed_to_float()
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
1ec421823b1263a7b482adf48a15b186ea91efd2 17-May-2012 Olivier Galibert <galibert@pobox.com> llvmpipe: Don't mess with the provoking vertex when inverting a triangle.

Fixes a bunch of piglit tests related to flat interpolation of floats.

Signed-off-by: Olivier Galibert <galibert@pobox.com>
Signed-off-by: José Fonseca <jose.r.fonseca@gmail.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
24678700edaf5bb9da9be93a1367f1a24cfaa471 14-May-2012 James Benton <jbenton@vmware.com> llvmpipe: Calculate fixed point coordinates for triangle setup earlier.

This allows us to calculate the triangle's area using fixed point,
previously it was cacluated in floating point space. It was possible
that a triangle which had negative area in floating point space had
a positive area in fixed point space.

Fixes fdo 40920.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
11aa82cc0bda6bd9162f76553a3f68e28978edae 10-May-2012 James Benton <jbenton@vmware.com> llvmpipe: Fix triangle bounding box calculation to be correctly inclusive or exclusive

Tested with custom rasterisation test tool added to piglit suite, reduced errors

Signed-off-by: José Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
e2072a1046039403d814613553e7b3b563d43dfc 05-Oct-2011 José Fonseca <jfonseca@vmware.com> llvmpipe: Fix the 4 planes (lines) case properly.

The previous change was not effective for lines, because there is no
4 planes 4x4 block rasterization path: it is handled by the 16x16 block
case too, and the 16x16 block was not being budged as it should.

This fixes assertion failures on line rasterization.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
c620087432b2055aa9301f19f8b6444080698c90 05-Oct-2011 José Fonseca <jfonseca@vmware.com> llvmpipe: Ensure the 16x16 special rasterization path does not touch outside the tile.

llvmpipe has a few special rasterization paths for triangles contained in
16x16 blocks, but it allows the 16x16 block to be aligned only to a 4x4
grid.

Some 16x16 blocks could actually intersect the tile
if the triangle is 16 pixels in one dimension but 4 in the other, causing
a buffer overflow.

The fix consists of budging the 16x16 blocks back inside the tile.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
c8f1687ce70c3a2e0de7a7d50e1619cb4cf8cc50 05-Nov-2010 Brian Paul <brianp@vmware.com> llvmpipe: added some debug assertions, but disabled
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
98445b43071414a6bd82d0618002611c6ad70257 02-Nov-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: avoid generating tri_16 for tris which extend past tile bounds

Don't trim triangle bounding box to scissor/draw-region until after
the logic for emitting tri_16. Don't generate tri_16 commands for
triangles with untrimmed bounding boxes outside the current tile.

This is important as the tri-16 itself can extend past tile bounds and
we don't want to add code to it to check against tile bounds (slow) or
restrict it to locations within a tile (pessimistic).
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
9da17fed2e7645a401a378ae690eb23513948e18 18-Oct-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: remove unused arg from jit_setup_tri function
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
0072acd447dc6be652e63752e50215c3105322c8 18-Oct-2010 Keith Whitwell <keithw@vmware.com> Merge remote branch 'origin/master' into lp-setup-llvm

Conflicts:
src/gallium/drivers/llvmpipe/lp_setup_coef.c
src/gallium/drivers/llvmpipe/lp_setup_coef.h
src/gallium/drivers/llvmpipe/lp_setup_coef_intrin.c
src/gallium/drivers/llvmpipe/lp_setup_point.c
src/gallium/drivers/llvmpipe/lp_setup_tri.c
src/gallium/drivers/llvmpipe/lp_state_derived.c
src/gallium/drivers/llvmpipe/lp_state_fs.h
ca2b2ac131933b4171b519813df1aaa3a81621cd 18-Oct-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: fail cleanly on malloc failure in lp_setup_alloc_triangle
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
392b0954c265fdd66b2de99ab677d2e662935682 15-Oct-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: use aligned loads/stores for plane values
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
9f9a17eba8d6080bf30f17c8a7eaed97b10a559f 12-Oct-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: do plane calculations with intrinsics

This is a step towards moving this code into the rasterizer.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
8965f042b327ad8697963e757f4607f4bb13a045 15-Oct-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: don't store plane.ei value in binned data

Further reduce the size of a binned triangle.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
9bf8a55c4b29d55320fc2e7875ecf0e9ca164ee8 15-Oct-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: slightly shrink the size of a binned triangle
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
0a1c9001037a13b69b157994e7983aa3dee158d3 15-Oct-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: don't pass frontfacing as a float
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
4195febeecd2d2f5571afdb90cbb185a4759f50a 15-Oct-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: reintroduce SET_STATE binner command

But bin lazily only into bins which are receiving geometry.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
0ca0382d1bfd1e9128fa4b588ce1411f7b8a85df 12-Oct-2010 Keith Whitwell <keithw@vmware.com> Revert "llvmpipe: try to keep plane c values small"

This reverts commit 9773722c2b09d5f0615a47cecf4347859474dc56.

Looks like there are some floor/rounding issues here that need
to be better understood.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
9773722c2b09d5f0615a47cecf4347859474dc56 12-Oct-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: try to keep plane c values small

Avoid accumulating more and more fixed point bits.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
0ff132e5a633170afaed0aea54d01438c895b8ab 08-Oct-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: add rast_tri_4_16 for small lines and points
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
eeb13e2352d7a44881b011cb3232bb80aee0c826 23-Sep-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: clean up setup_tri a little
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
29d6a1483d6c4ecb9c34989423e025b3784ec019 08-Oct-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: avoid overflow in triangle culling

Avoid multiplying fixed-point values. Calculate triangle area in
floating point use that for culling.

Lift area calculations up a level as we are already doing this in the
triangle_both() case.

Would like to share the calculated area with attribute interpolation,
but the way the code is structured makes this difficult.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
ad6730fadbbeacea96322e31064ede9ea7ebad6f 08-Oct-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: fail gracefully on oom in scene creation
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
72258387786332c49b3275b8136a99be7591bf7f 24-Sep-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: handle up to 8 planes in triangle binner
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
5b4c43d98556c5a4806757513bcb196a724518c5 05-Sep-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: use llvm for attribute interpolant calculation

Basically no change relative to hard-coded version, but this will
be useful for other changes later.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
59ca1ae84b2c15c8a94211da158f563e45560bcd 15-Sep-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: return zero from floor_pot(zero)
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
c40858fa0dac28dc5096973ac267630ba5725003 13-Sep-2010 Witold Baryluk <baryluk@smp.if.uj.edu.pl> llvmpipe: Change asm to __asm__.

According to gcc documentation both are equivalent,
second are prefered as first can make conflict with existing symbols.

Signed-off-by: José Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
501d43028e8e551dd36ede00fb85095183c32037 13-Sep-2010 José Fonseca <jfonseca@vmware.com> llvmpipe: Unbreak rasterization on 64bit.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
b97c75e6a3a95be503f0509be0791a21b4d0f8d8 13-Sep-2010 José Fonseca <jfonseca@vmware.com> llvmpipe: use gcc asm only with gcc
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
c4046d4fda2fe838659bff99bfa17f57f895a943 08-Sep-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: introduce tri_3_4 for tiny triangles
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
4b56e86e67d281b1c57f1f5e6b1a686d0dcd6ebb 08-Sep-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: allow tri_3_16 at any 4-aligned location within a tile

Doesn't require 16-alignment, so catch more cases.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
9df8a7565db608eaccf917632bf6c702203531b8 01-Sep-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: move more coef setup into lp_setup_coef.c
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
9f6e8e1d6b8696a3ee96cba01b2466ba7a1a8ef6 07-Sep-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: use opcodes instead of function pointers in bins

Also, move some state from rasterizer struct to the scene.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
6419ecd02ce43a2614822e228f306d4db589f317 27-Aug-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: enforce fixed memory limit on scenes
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
5024d9b90e88cdc3d8aca14d45cf845efbfb8633 27-Aug-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: move whole-tile emit into a function
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
3783053fa59fceef59fe0356af5c8dbc095e9adf 26-Aug-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: update line rasterization code to current master
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
5286dd701640976ffc328e8e85fb3830746851a1 19-Jul-2010 Hui Qi Tay <hqtay@vmware.com> llvmpipe: native rasterization for lines

Rasterize lines directly by treating them as 4-sided polygons.
Still need to check the exact pixel rasteration.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
0be0ad5d58806bc12ec2c7bb3c00e7f8c7a6d6c4 22-Aug-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: intrinsics version of triangle coeficient calculation

Looks nice, but makes almost no impact on performance - maybe
a percent or so in isosurf, nothing elsewhere. May be of use
later on.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
29bcbf5e797a18430285c75abb8a9300c8defe1d 24-Aug-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: track drawing region as a single u_rect
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
d808f7b53ec71a7684bac7e6b536911fc27d5238 24-Aug-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: better triangle debugging
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
c25151dd6a06acd93c8bf0d9e79fdcf134ffe818 20-Aug-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: cull zero-area triangles early
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
c9b7bece0569d9e193591ebff329acd1d9bd9e3c 15-Aug-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: special case triangles which fall in a single 16x16 block

Check for these and route them to a dedicated handler with one fewer
levels of recursive rasterization.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
ff26594a92df37608a3efe47e4d4f3a55bcd6bc1 15-Aug-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: remove all traces of step arrays, pos_tables

No need to calculate these values any longer, nor to store them in the
bin data. Improves isosurf a bit more, 115->123 fps.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
66f57235d5e507b17f3cbf1329a803337ca08666 11-Aug-2010 José Fonseca <jfonseca@vmware.com> llvmpipe: Debug code to dump interpolation coefficients.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
3deca2e284f0709e94bec5267febc7ccb34c17b8 11-Aug-2010 José Fonseca <jfonseca@vmware.com> llvmpipe: Use single precision divide for one over area computation.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
d023fb39288be943d1c8ec5a60e9ff5778f4642f 14-Jul-2010 José Fonseca <jfonseca@vmware.com> llvmpipe: Remove redundant alignments.

The lp_rast_shader_inputs' alignment is irrelevant now that it contains
pointers instead of actual data.

Likewise, lp_rast_triangle's size alignment is meaningless.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
e21e7ab4da859198dfa9845b4a7207c49db54771 10-Jul-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: eliminate the set_state rasterizer command

Just put a pointer to the state in the tri->inputs struct. Remove
some complex logic for eliminating unused statechanges in bins at the
expense of a slightly larger triangle struct.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
d4b64167b56f780d0dea73193c345622888fbc16 17-Jun-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: pass mask into fragment shader

Move this code back out to C for now, will generate separately.

Shader now takes a mask parameter instead of C0/C1/C2/etc.

Shader does not currently use that parameter and rasterizes whole
pixel stamps always.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
4ca3e0d84ba21ac4e37ecea0eed05a0bfcb3f098 24-Jun-2010 José Fonseca <jfonseca@vmware.com> llvmpipe: Don't reset the bin when there's a zsbuf bound.

The previous rendering may have secondary effects on the zsbuf.

Fixes the missing tiles on gearbox.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
6ce68ad3ca242076bbb93fdd99bb448f87a31d15 01-Jun-2010 José Fonseca <jfonseca@vmware.com> llvmpipe: Use struct lp_shader_input in the interpolator.

Eliminates all this identical yet slightly different code to decide how
shader inputs should be interpolated.

As bonus, don't interpolate the position twice when it is listed in the
TGSI shader inputs.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
149cb7682e37ce719d693f120e68dde60ba73bdf 01-Jun-2010 José Fonseca <jfonseca@vmware.com> llvmpipe: Don't waste time interpolating unused input channels.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
18fb9ff6d8f58a08e559070cf29f26ed0caa567f 26-May-2010 José Fonseca <jfonseca@vmware.com> llvmpipe: Pass the fs variant to the rasterizer.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
151b3bb3af722f0e14e209171acc2239d3cf2817 28-May-2010 Brian Paul <brianp@vmware.com> llvmpipe: add out of memory checking to triangle setup path
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
e5ee8b4fae2983512f9c70f2f021fc8c35e62a75 17-May-2010 Brian Paul <brianp@vmware.com> llvmpipe: fix front/back tri culling mix-up
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
0bd1cbcd0d28dbadfb0c3e1f8b048a18b56bc72c 14-May-2010 Keith Whitwell <keithw@vmware.com> gallium: convert rasterizer state to use gl-style front/back concepts

Use front/back instead of cw/ccw throughout.
Also, use offset_point/line/fill instead of offset_cw/ccw.

Brings gallium representation of this state into line with its main
user, and also what turns out to be the most common hardware
representation.

This fixes a long-standing bias in the interface towards the
architecture of the software rasterizer.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
246d39059e21bdc840128d448bcd79a957bbd1d1 05-May-2010 Brian Paul <brianp@vmware.com> llvmpipe: update driver's provoking vertex code

Note that the lp_setup_vbuf.c code is very, very similar to the
corresponding code in softpipe. It could probably be shared.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
db4ccc004a96255f3ad0dc26467f2243a133c24b 20-Apr-2010 Brian Paul <brianp@vmware.com> llvmpipe: fix incorrect front-facing value for fragment shader

The TGSI convention is +1 for front-facing, -1 for back-facing
Fixes glean glsl1 gl_FrontFacing tests.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
a59771fb5305a4a8bda35bc7175eceecd0a950ee 17-Apr-2010 Brian Paul <brianp@vmware.com> llvmpipe: triangle function comments
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
8ba14fab9a8fb4b7e7224062693ab4d487a138b8 16-Apr-2010 Brian Paul <brianp@vmware.com> llvmpipe: print_triangle() func (disabled)
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
22e6dc387039e79f6d1435ae8b7422a6514d5d10 18-Mar-2010 Brian Paul <brianp@vmware.com> gallivm/llvmpipe: added lp_rast_shader_inputs::facing and pass through

The triangle rasterizer sets this field to indicate front/back-facing.
It gets passed into the generated fragment code as another parameter.
Used now for stencil front/back selection but will also be used for
fragment shaders in general (see TGSI_SEMANTIC_FACE).

With this commit two-sided stenciling mostly works but there's
still a bug or two...
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
a80e33f40731f07e8a39896bfdcd1b1504aedc1f 13-Mar-2010 José Fonseca <jfonseca@vmware.com> llvmpipe: Obey rasterization rules.

Replicates softpipe.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
3160cbabccf1f7d8bdf344242507b9c3082f15c6 13-Mar-2010 José Fonseca <jfonseca@vmware.com> llvmpipe: setup_context -> lp_setup_context

Otherwise IDEs and debuggers have trouble distinguishing from softpipe's
setup_context.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
4053d337035a17c3bded6458093acf56d1878cba 03-Mar-2010 José Fonseca <jfonseca@vmware.com> llvmpipe: Store the original triangle coordinates in the debug build.

For debugging purposes only.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
764c172aa96d48e1cf18b903661064c1ef8df1b5 11-Feb-2010 José Fonseca <jfonseca@vmware.com> llvmpipe: Clamp both extremes of triangles to framebuffer size.

Fix segmentation fault when triangles crossed the axis.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
1d23954a0848f8dd87b214f3a7ec3ae3c04ab0c1 22-Jan-2010 Brian Paul <brianp@vmware.com> llvmpipe: s/inline/INLINE/
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
e24ea786faad502da63cc4d59b0c30e3f1915c45 22-Jan-2010 Brian Paul <brianp@vmware.com> llvmpipe: consolidate lp_scene_alloc_aligned() calls

Use just one call instead of four. Good for a few more fps.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
798a9d3f942df1953a538073c85d6a6fed3775db 22-Jan-2010 Brian Paul <brianp@vmware.com> llvmpipe: re-use a1 var in linear_coef()
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
ff9b55da9a6e3b5aa2d42eac7d79c675a679af57 22-Jan-2010 Brian Paul <brianp@vmware.com> llvmpipe: area is an int here, not float
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
a904a7b99043c19493db5c0945b046795a5932b1 22-Jan-2010 Brian Paul <brianp@vmware.com> llvmpipe: manually unroll the inputs.step[] setup code

Good for a few more fps in some tests.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
cd9d9e2436a0815f6ed3a61d2cdf8fad53278506 21-Jan-2010 Brian Paul <brianp@vmware.com> llvmpipe: added simple perf/statistics counting facility

Currently counting number of tris, how many tiles of each size are
fully covered, partially covered or empty, etc.

Set LP_DEBUG=counters to enable. Results are printed upon context
destruction.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
75f262b8b441e05f5b8811db1c205220200d64ad 19-Jan-2010 Brian Paul <brianp@vmware.com> llvmpipe: updated comments
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
fdfe06ad804ea13e6e436d66c1bcafe0bde2f545 15-Jan-2010 Brian Paul <brianp@vmware.com> llvmpipe: implement scissor test in triangle setup
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
adb48d535082f5a311751e1866997e381b2d3038 15-Jan-2010 Brian Paul <brianp@vmware.com> llvmpipe: remove lp_rast_triangle::min/max fields

These values aren't needed outside the do_triangle_ccw() function.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
4bef3575e605d890d9f228391b4724d27b025f49 15-Jan-2010 Brian Paul <brianp@vmware.com> llvmpipe: change 'in' to boolean, add comments
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
ca12e30d97b83fb33e1f8f83da05b5ed2809b0af 15-Jan-2010 Brian Paul <brianp@vmware.com> llvmpipe: minor comment update
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
f19f218e7aad76639a6aacabda8101ba87bb4896 14-Jan-2010 Brian Paul <brianp@vmware.com> llvmpipe: minor assorted clean-ups
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
a1acbff299c444913418e65da473745cd901a2db 13-Jan-2010 José Fonseca <jfonseca@vmware.com> llvmpipe: Reset the bin when shading a whole tile with an opaque shader.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
212f3a6cb3cb49127a6e5588553fe2d327f46563 13-Jan-2010 Brian Paul <brianp@vmware.com> llvmpipe: tweak subpixel_snap() arithmetic

This adjustment fixes some rasterization differences between llvmpipe
and softpipe (and other renderers).
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
214ffad01598c8780417b9fa9df75e951c8ac049 13-Jan-2010 Brian Paul <brianp@vmware.com> llvmpipe: clamp maxx,maxy to framebuffer size (in terms of tiles)

In some corner cases the right-most / bottom-most vertex can be
right on the edge of the framebuffer. Because the maxx, maxy vals
are computed with a series of float/int, pixel/tile transformations
we can end up with maxx >= scene->x_tiles or maxy >= scene->y_tiles.
This leads to putting data into bins that never get processed, or
reset. This becomes stale data that can lead to segfaults.

Clamping fixes this.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
094525fb23127e7ca253d732207bbbbe00488a6b 08-Jan-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: remove opencoded constant
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
080c40ab32b2abd6d8381b4a0cc143d36a1652b2 08-Jan-2010 José Fonseca <jfonseca@vmware.com> Merge remote branch 'origin/master' into lp-binning

Conflicts:
src/gallium/auxiliary/util/u_surface.c
src/gallium/drivers/llvmpipe/Makefile
src/gallium/drivers/llvmpipe/SConscript
src/gallium/drivers/llvmpipe/lp_bld_arit.c
src/gallium/drivers/llvmpipe/lp_bld_flow.c
src/gallium/drivers/llvmpipe/lp_bld_interp.c
src/gallium/drivers/llvmpipe/lp_clear.c
src/gallium/drivers/llvmpipe/lp_context.c
src/gallium/drivers/llvmpipe/lp_context.h
src/gallium/drivers/llvmpipe/lp_draw_arrays.c
src/gallium/drivers/llvmpipe/lp_jit.c
src/gallium/drivers/llvmpipe/lp_jit.h
src/gallium/drivers/llvmpipe/lp_prim_vbuf.c
src/gallium/drivers/llvmpipe/lp_setup.c
src/gallium/drivers/llvmpipe/lp_setup_point.c
src/gallium/drivers/llvmpipe/lp_state.h
src/gallium/drivers/llvmpipe/lp_state_blend.c
src/gallium/drivers/llvmpipe/lp_state_derived.c
src/gallium/drivers/llvmpipe/lp_state_fs.c
src/gallium/drivers/llvmpipe/lp_state_sampler.c
src/gallium/drivers/llvmpipe/lp_state_surface.c
src/gallium/drivers/llvmpipe/lp_tex_cache.c
src/gallium/drivers/llvmpipe/lp_tex_cache.h
src/gallium/drivers/llvmpipe/lp_tex_sample.h
src/gallium/drivers/llvmpipe/lp_tile_cache.c
ab9438193083b7f9a3180cb9cea45e269131048a 17-Dec-2009 Brian Paul <brianp@vmware.com> llvmpipe: do final the pixel in/out triangle test in the fragment shader

The test to determine which of the pixels in a 2x2 quad is now done in
the fragment shader rather than in the calling C code. This is a little
faster but there's a few more things to do.

Note that the step[] array elements are in a different order now. Rather
than being in row-major order for the 4x4 grid, they're in "quad-major"
order. The setup of the step arrays is a little more complicated now.
So is the course/intermediate tile test code, but some lookup tables
help with that.

Next steps:
- early-cull 2x2 quads which are totally outside the triangle.
- skip the in/out test for fully contained quads
- make the in/out comparison code tighter/faster.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
663750d5564a225b4720f7ee8bea93ffb309fc88 13-Dec-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: rename bins to scene

It was pretty confusing having an entity named "bin" and another named
"bins", not least because sometimes there was a need to talk about >1
of the "bins" objects, which couldn't be pluralized any further...

Scene is a term used in a bunch of places to talk about what a binner
operates on, so it's a decent choice here.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
22b07b8be4c2939b00e10f17fa91e68682808594 09-Dec-2009 Brian Paul <brianp@vmware.com> llvmpipe: use new lp_setup_get_current_bins() function

This stub function will interface to the queue system...
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
01b1900084152dbacd4025a31ced25f75666ce59 04-Dec-2009 Brian Paul <brianp@vmware.com> llvmpipe: reorganization of binning data structions and funtions

New lp_bins struct contains all bin information.
More move bin-related code into lp_bin.[ch]
Use new/updated bin-access functions to hide implementation details.
The result is more/cleaner separation between the setup and rast components.
This will make double-buffering of the bins easier, etc.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
d9dc3d59760a28d54013d3d164f61d85ec807651 04-Dec-2009 Brian Paul <brianp@vmware.com> llvmpipe: move bin-related structures and functions into new lp_bin.[ch]

And put lp_ prefixes on some functions.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
5c7d1b592ad9ce9e7ee36610f17d41e5c2881d54 04-Dec-2009 Brian Paul <brianp@vmware.com> llvmpipe: remove lp_rast_triangle::oneoverarea field

Makes lp_rast_triangle a little smaller (now 280 bytes on a 32-bit system).
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
b1659b9213f3eeee440590dfe379f0d193948307 04-Dec-2009 Brian Paul <brianp@vmware.com> llvmpipe: bin state-change commands

Previously, each triangle had a pointer to the state to use for shading.
Now we insert state-change commands into the bins. When we execute one
of those commands we just update a 'current state' pointer and use that
pointer when calling the jit shader.

When inserting state-change commands into a bin we check if the previous
command was also a state-change command and simply replace it. This
avoids accumulating useless/redundant state-change commands.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
1796ffd3bcf74a94c800717e77abaf9902c50b4d 04-Dec-2009 Brian Paul <brianp@vmware.com> llvmpipe: fix typo, whitespace
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
04e12e31b252e7a18862c3ac386f302665edb6e7 04-Dec-2009 Brian Paul <brianp@vmware.com> llvmpipe: dynamic allocation of triangle a0/dadx/dady arrays

Much less memory per triangle now.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
30c122a4c90b62ad3d6b7bacb61c04dd38a4b2df 04-Dec-2009 Brian Paul <brianp@vmware.com> llvmpipe: new comment in do_triangle_ccw()
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
7505510c7b7c33f3c571647c0398da7e1b823806 30-Nov-2009 Brian Paul <brianp@vmware.com> llvmpipe: add a bunch of comments
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
694f05ac18c54253910678709f2dd35c36f1e912 21-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: remove one of two definitions of TILESIZE
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
341edde1d2e9f9f989d41869cc436b51942941e4 21-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: remove dead code
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
cccb1842092bd1b9f35aee0ac21d580c0365e4a5 20-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: minor opts to setup_tri
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
7b116e13a2aa28a699e30c907c1b1ae5e04cab28 20-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: pass mask as a linear encoding of the 4x4 block
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
7670628061c2a6ce0a1a787556b0e33a38fd3049 20-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: precalculate some offsets
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
3fd6b724cc406573cf53684cd72fa7f60b65354a 19-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: pre-multiply some constants by fixed_one
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
0580079864c41c236a4167a1543b1a2fc5090362 19-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: fixed-point rasterization
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
269342d916fff3bf0fa0a5c1f26aec30b62ed352 19-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: correctly scale top/left fill adjustments

Was overdoing it previously.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
d9f44abe3bb0c9897937ef7f343a7896a0b4cbf0 19-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: fix typo correcting for fill convention

Adjustments for top-left fill convention were being lost.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
b4924d62c7346da2e0de9ae4f9f23b3fb7fafee8 09-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: fill in tri min/max values
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
6464ec48366fee201c61a481c3205a64279797b2 09-Oct-2009 José Fonseca <jfonseca@vmware.com> llvmpipe: Remove partial tile override.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
82ec7f018d20e46e9c43ea467354dcfe4f03bae3 09-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: correct binning maths for iterating over whole tiles
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
85999695829823e459e11822b4846ed1db5c055d 09-Oct-2009 José Fonseca <jfonseca@vmware.com> llvmpipe: Get jit_context/jit_function across the rasterizer.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
da1808ccc9a53fdd5aa69efa800ece0d3d075b07 09-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: just bin whole tiles for now
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
e215f94f15fd20919cc0ed500dc2efde4f076516 09-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: get lp_setup_tri building
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
4cdd10cb4b60d85f6c231a26739f7d5e264a05e5 09-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: use union lp_cmd_rast_arg directly, rather than through a pointer

The union itself consists of pointers. We don't need to be passing
pointer to pointers.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
415b271b5100d64579690111bc8eb549866865a7 09-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: hook up some state, add stub line and point functions
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
de902d3275d1861beb0cebdf0807a17e2682c8de 09-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: more wip on coefficients
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
0718c7700533a965d7cd06b4f67b82bbae6e66a1 08-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: work on clears and coefficients
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
931210424bc46b2c13919f0ac3e0ef781eff207e 08-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: wip me harder
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
5e13dfe6181952f0f538a77b8a9f91c1d7601ceb 08-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: whip out the intra-tile code from lp_setup_tri.c

The "setup" module handles building per-tile display lists.
Intra-tile rendering is handled by lp_rast*.c
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
e529170c11d3cb5812aabeff0a6ee2d7a2ea66f2 08-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: more wipping
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c
89498d01531cd515c769e570bf799c39fbafc8fb 07-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: import experimental softpipe rasterizer code, wip binning code

WIP, does't build or run.

Rasterizer code is based on Nick Capen's devmaster posts and the
larrabee articles, but currently doesn't share either the performance
or correctness of either...
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_tri.c