History log of /external/mesa3d/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
78a997f72841310620d18daa9015633343d04db1 13-Nov-2016 Roland Scheidegger <sroland@vmware.com> draw: drop unnecessary index overflow handling from vsplit code

This was kind of strange, since it replaced indices which were only
overflowing due to bias with MAX_UINT. This would cause an overflow later
in the shader, except if stride was 0, however the vertex id would be
essentially random then (-1 + eltBias). No test cared about it, though.
So, drop this and just use ordinary int arithmetic wraparound as usual.
This is much simpler to understand and the results are "more correct" or
at least more consistent (vertex id as well as actual fetch results just
correspond to wrapped around arithmetic).
There's only one catch, it is now possible to hit the cache initialization
value also with ushort and ubyte elts path (this wouldn't be an issue if
we'd simply handle the eltBias itself later in the shader). Hence, we need
to make sure the cache logic doesn't think this element has already been
emitted when it has not (I believe some seriously bad things could happen
otherwise). So, borrow the logic which handled this from the uint case, but
not before fixing it up...

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
7a55c436c64a8bb031c8823522cde8f3adc67d89 12-Nov-2016 Roland Scheidegger <sroland@vmware.com> draw: simplify vsplit elts code a bit

vsplit_get_base_idx explicitly returned idx 0 and set the ofbit
in case of overflow. We'd then check the ofbit and use idx 0 instead of
looking it up. This was necessary because DRAW_GET_IDX used to return
DRAW_MAX_FETCH_IDX and not 0 in case of overflows.
However, this is all unnecessary, we can just let DRAW_GET_IDX return 0
in case of overflow. In fact before bbd1e60198548a12be3405fc32dd39a87e8968ab
the code already did that, not sure why this particular bit was changed
(might have been one half of an attempt to get these indices to actual draw
shader execution - in fact I think this would make things less awkward, it
would require moving the eltBias handling to the shader as well).
Note there's other callers of DRAW_GET_IDX - those code paths however
explicitly do not handle index buffer overflows, therefore the overflow
value doesn't matter for them.

Also do some trivial simplification - for (unsigned) a + b, checking res < a
is sufficient for overflow detection, we don't need to check for res < b too
(similar for signed).

And an index buffer overflow check looked bogus - eltMax is the number of
elements in the index buffer, not the maximum element which can be fetched.
(Drop the start check against the idx buffer though, this is already covered
by end check and end < start).

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
b48e16fa2f8b96bb36a6e0a92b6d842c1c246006 17-Oct-2015 Brian Paul <brianp@vmware.com> draw: fix splitting of line loops (v2)

When the draw module splits long line loops, the sections are emitted
as line strips. But the primitive type wasn't set correctly so each
section was being drawn as a loop, introducing extra line segments.

To fix this, we pass a new DRAW_LINE_LOOP_AS_STRIP flag to the run()
function. The linear/elt_run() functions have to check for this flag
and set their primitive type accordingly.

No piglit regressions. Fixes piglit's lineloop with -count 4097 or
higher.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81174

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
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/auxiliary/draw/draw_pt_vsplit_tmp.h
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/auxiliary/draw/draw_pt_vsplit_tmp.h
bbd1e60198548a12be3405fc32dd39a87e8968ab 03-Jul-2013 Zack Rusin <zackr@vmware.com> draw: fix overflows in the indexed rendering paths

The semantics for overflow detection are a bit tricky with
indexed rendering. If the base index in the elements array
overflows, then the index of the first element should be used,
if the index with bias overflows then it should be treated
like a normal overflow. Also overflows need to be checked for
in all paths that either the bias, or the starting index location.

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/auxiliary/draw/draw_pt_vsplit_tmp.h
3998cfa933dcd9134b75d9f0ae2c9cfcd6f2ee45 05-Jun-2013 Rico Schüller <kgbricola@web.de> mesa: remove outdated version lines in comments

Signed-off-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
1883e1d3e972f552aaf6225390a4dc17484fcd3c 15-May-2013 José Fonseca <jfonseca@vmware.com> draw: Fix vsplit regression when the ib can be used directly.

`ib` no longer is offseted by `istart`.

Trivial.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
5104ed3dbf18d47736fc67a8e3e317ea18360fa8 14-May-2013 Zack Rusin <zackr@vmware.com> draw: try to prevent overflows on index buffers

Pass in the size of the index buffer, when available, and use it
to handle out of bounds conditions. The behavior in the case of
an overflow needs to be the same as with other overflows in the
vertex processing pipeline meaning that a vertex should still
be generated but all attributes in it set to zero.

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/auxiliary/draw/draw_pt_vsplit_tmp.h
94f9ea03a12fe1adf90c0e5defb0063cd568b537 02-Nov-2012 Roland Scheidegger <sroland@vmware.com> draw: fix crashes with out-of-bounds indices

The passthrough pipeline needs to check index values (which might be passed
through) as they can be invalid (which causes crashes and various assertion
failures if the clip code runs). Obviously, rendering won't be well-defined,
but those bogus indices might come directly from apps.
There were already debug printfs which reported the out-of-bounds indices but
we really ought to not crash.
While checking at that point doesn't seem like the most efficient solution,
it seems there isn't really another appropriate function to do it.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
f03191048668ebcda56053f4c908e1ac0d98edd0 17-Oct-2012 Brian Paul <brianp@vmware.com> draw: silence MSVC signed/unsigned comparison warnings

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
185ed2105829d6f5eb19edb9abbf0d7977e157c3 25-May-2012 Brian Paul <brianp@vmware.com> draw: simplify index buffer specification

Replace draw_set_index_buffer() and draw_set_mapped_index_buffer() with
draw_set_indexes() which simply takes a pointer and an index size.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
dcbc9be38ecea30506198d0db037cbf532f070e4 05-Apr-2011 José Fonseca <jose.r.fonseca@gmail.com> draw: Fix thinko in debug warnings.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
3733da31e8b4405b65e1b6ca3b6599ecc5af5fe7 31-Mar-2011 José Fonseca <jfonseca@vmware.com> draw: Prevent out-of-bounds vertex buffer access.

Based on some code and ideas from Keith Whitwell.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
3dedd39cdd198afa54ba5b53384d6be2040f9485 31-Mar-2011 José Fonseca <jfonseca@vmware.com> draw: Revert code reorg in previous change.

Because

fetch_count = max_index - min_index + 1

overflows for min_index = 0 and max_index = 0xffffffff.

Fixes fdo 35815.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
dcad6fb670ccc533167d1ae360833989c1eb4823 30-Mar-2011 José Fonseca <jfonseca@vmware.com> draw: Forgot to remove one istart usage.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
713230ff39cd22a2082c12b937889c3ef81973ac 29-Mar-2011 José Fonseca <jfonseca@vmware.com> draw: Fix bug when drawing ushort indices.

When the condition

min_index == 0 && sizeof(ib[0]) == sizeof(draw_elts[0])

was true, we were wrongly ignoring istart and processing indices 0.

Reorder some statements to make the code easier to understand.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
abbb1c8f084c6739bc9d6f559caf26f3f71b2fab 13-Jan-2011 Chia-I Wu <olv@lunarg.com> draw: Fix an off-by-one bug in a vsplit assertion.

When use_spoken is true, istart (the first vertex of this segment) is
replaced by i0 (the spoken vertex of the fan). There are still icount
vertices.

Thanks to Brian Paul for spotting this.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
4f024e0f642f4f743e4d051ec71c00e45bfd361f 25-Aug-2010 Chia-I Wu <olv@lunarg.com> draw: Add draw_set_index_buffer and others.

This commit adds draw_set_index_buffer, draw_set_mapped_index_buffer,
and draw_vbo. The idea behind the new functions is that an index buffer
should be a state.

draw_arrays and draw_set_mapped_element_buffer are preserved, but the
latter will be removed soon.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
a072f0e186522f9de2848989422ad0244f65c961 13-Aug-2010 Chia-I Wu <olv@lunarg.com> drwa: Add PRIMITIVE macro to vsplit.

PRIMITIVE is used by the indexed path to flush the entire primitive with
custom vertex count checks. It replaces the existing fast path.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h
04bc530dbdbe5d004219c9100e35f5d56cfedd80 06-Aug-2010 Chia-I Wu <olv@lunarg.com> draw: Add vsplit frontend.

vsplit is based on varray. It sets the split flags when a primitive is
splitted. It also has support for indexed primitives.

For indexed primitives, unlike vcache, vsplit splits the primitives
instead of decomposes them.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h