History log of /external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_line.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
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_line.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_line.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_line.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_line.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_line.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_line.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_line.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_line.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_line.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_line.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_line.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_line.c
12522041d6e17ac176a8e86c590789bfbbe9def5 06-Aug-2013 Zack Rusin <zackr@vmware.com> draw: fix slot detection

Nowadays -1 for slots means that the semantic is not present, so
we need to store it in a signed variables, otherwise <0 comparisons
are pointless. Fixes
http://bugzilla.eng.vmware.com/show_bug.cgi?id=67811 (at least
with softpipe, edgeflags don't work wit llvmpipe)

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_line.c
d6b3a193d4d525c5048ebf793e6a63fd98f92d64 31-Jul-2013 Zack Rusin <zackr@vmware.com> draw: inject frontface info into wireframe outputs

Draw module can decompose primitives into wireframe models, which
is a fancy word for 'lines', unfortunately that decomposition means
that we weren't able to preserve the original front-face info which
could be derived from the original primitives (lines don't have a
'face'). To fix it allow draw module to inject a fake face semantic
into outputs from which the backends can figure out the original
frontfacing info of the primitives.

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_line.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_line.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_line.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_line.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_line.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_line.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_line.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_line.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
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_line.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_line.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_line.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_line.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_line.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_line.c
6316d540564d116460bfd1382e3eee98480e28ff 07-Oct-2010 Zack Rusin <zackr@vmware.com> llvmpipe: fix rasterization of vertical lines on pixel boundaries
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_line.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_line.c
60a45b03c389f708c513bb2b70c5973175f01068 24-Sep-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: handle FACING interpolants in line and point setup
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_line.c
2ec86793bd43fe15d8f79d04e32d6c524e8ad844 21-Sep-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: fix flatshading in new line code

Calculate interpolants before rearranging the vertices.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_line.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_line.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_line.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_line.c
55f4eab93cf964a2ffa540fef9485b6f737a6f41 27-Aug-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: use util_iround in place of round

Fix mingw build.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_line.c
aea6b415deffd7613d67dc85876afab151b7460e 27-Aug-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: eliminate tri->dx, tri->dy values

Use an internal struct for line setup information.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_line.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_line.c
b91553355f848f2174d53429699b116734781ad7 04-Aug-2010 Hui Qi Tay <hqtay@vmware.com> llvmpipe: native line rasterization with correct pixel rasterization

Line rasterization that follows diamond exit rule.
Can still optimize logic for start/endpoints.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_line.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_line.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_line.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_line.c