History log of /external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
b6d3a435a0e0e53a9e8cc4c4249dc7c2f897a83d 24-Jan-2011 Jakob Bornecrantz <wallbraker@gmail.com> draw: Only run prepare when state, prim and opt changes

In bad applications like ipers which does a lot of draw calls with
no state changes this helps to greatly reduce time spent in prepare.
In ipers around 7% of CPU was spent in various prepare functions,
after this commit no prepare function show on the profile.

This commit also has the added benefit of now grouping all pipelined
drawing into a single draw call if the driver uses vbuf_render.

Reviewed-by: Stéphane Marchesin <marcheu@chromium.org>
Tested-by: Stéphane Marchesin <marcheu@chromium.org>
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
4465efc3bf8d755a9afb7a4bb5382e2f5bf113e1 21-Sep-2011 Brian Paul <brianp@vmware.com> draw: add support for guard-band clipping
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
6c0dc4bafbdbdc0cb4b6e5934fe064226dbd47ec 20-Aug-2010 Keith Whitwell <keithw@vmware.com> draw: specialized cliptesting routines
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
a97419a3ba86fd112a22b5786c4f34f8d8a54f2d 07-Aug-2010 Chia-I Wu <olv@lunarg.com> draw: Remove varray and vcache.

They have been deprecated by vsplit.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.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.h
56213a64fe9e4270fd7886675b1e8224b2d88794 07-Aug-2010 Chia-I Wu <olv@lunarg.com> draw: Add new util function draw_pt_trim_count.

draw_pt_trim_count is renamed from trim in draw_pt.c.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
9d2be38fad109d9a10942fddde0b9dc3824c329c 18-Jul-2010 Chia-I Wu <olv@lunarg.com> draw: Simplify frontend interface a little.

The run method is simplified to take the start vertex and the vertex
count.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
f132498347c41294042db0cc6830abe928d827de 07-Aug-2010 Chia-I Wu <olv@lunarg.com> draw: Add prim flags to middle ends.

Update the middle end interface to pass the primitive flags from the
frontends to the pipeline. No frontend sets the flags yet.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
64682da8ab7aff7b4ce651db99a32ed1fd8b178c 23-Jun-2010 Keith Whitwell <keithw@vmware.com> draw: don't try to precalculate the pipeline output primitive

We were previously calculating a value which was either the geometry
shader output primitive or the application's input primitive, and
passing that to the various front/middle/back components for use as
the ultimate rendering primtive.

Unfortunately, this was not correct -- if the vcache decomposition
path is active and geometry shaders are *not* active, we can end up
with a third primitive -- specifically the decomposed version of the
input primitive.

Rather than trying to precalculate this, just let the individual
components inform their successors about which primitive type they are
recieving.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
287531772ccea82c8a6c4dab5656d751a8943524 16-Jun-2010 Zack Rusin <zackr@vmware.com> draw: rewrite stream output to handle all the dark corners

register masks, multiple output buffers, multiple primitives,
non-linear vertices (elts) and stride semantics.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
a192b5eeafae80f9f9e7e7e442abc5b44d583d1a 15-Jun-2010 Zack Rusin <zackr@vmware.com> draw: finish the new pipeline setup

Keith came up with a new way of running the pipeline which involves passing
a few info structs around (for fetch, vertices and prims) and allows us
to correctly handle cases where we endup with multiple primitives generated
by the pipeline itself.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
b85a361ccbac956d2842251395c048a4b3f4c440 14-Jun-2010 Keith Whitwell <keithw@vmware.com> draw wip
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
d4ef0f6c67aefe06d8dd647acf8d9005df39a709 09-Jun-2010 Zack Rusin <zack@kde.org> geometry shaders: make gs work with changable primitives and variable number of vertices

lots and lots of fixes for geometry shaders. in particular now we work when the gs
emits a different primitive than the one the pipeline was started with and also
we work when gs emits more vertices than would fit in the original buffer.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
c9db97c8229689060fab0edee7df717f804b99ce 31-May-2010 Zack Rusin <zack@kde.org> gallium: a lot more complete implementation of stream output

interface wise we have everything needed by d3d10 and gl transform feedback.
the draw module misses implementation of some corner cases (e.g. when stream
output wants different number of components per output than normal rendering
paths)
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
2197fac47cb1f87387820678357cc67c9a2536b9 19-Apr-2010 José Fonseca <jfonseca@vmware.com> draw: Implement index bias.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
c5c5cd7132e18f4aad8e73d8ee879f8823c4c1e7 23-Feb-2010 Zack Rusin <zackr@vmware.com> gallium/draw: initial code to properly support llvm in the draw module

code generate big chunks of the vertex pipeline in order to speed up
software vertex processing.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
543b9566bdaa48fea2df1866fa1310c1cdbcde27 30-Dec-2009 Michal Krol <michal@vmware.com> Add lame support for instanceID to draw module.

It's all screaming for integer support -- fake it with float for now.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
a0127b6ced257919180ba3a1bf534b68d9c750be 14-Dec-2009 Roland Scheidegger <sroland@vmware.com> gallium: more work for edgeflags changes

fixes, cleanups, etc.
not working yet
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
a08e348a84f57ed5e8bf5888f1ce13934d2ce8fa 09-Dec-2009 Keith Whitwell <keithw@vmware.com> gallium: first steps to treat edgeflags as regular vertex element

The idea here is to eliminate the set_edgeflags() call in pipe_context
by treating edgeflags as a regular vertex element.

Edgeflags provoke special treatment in hardware, which means we need to
label them in some way, in this case we'll be passing them through the
vertex shader and labelling the vertex shader output with a new TGSI
semantic (TGSI_SEMANTIC_EDGEFLAG).
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
d2e4643767ce2a1f30e6ef1c86c2aa225c025c32 19-Jun-2009 Brian Paul <brianp@vmware.com> draw: use u_reduced_prim() function
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
c6b3c2f34b5fdc30e679068d4e6130ba30efc1e4 30-Apr-2009 Keith Whitwell <keithw@vmware.com> gallium/draw: cope with unused vertex_elements
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
683e7091a953204c9aee1410ac44be3b69bae9fc 13-Mar-2009 Keith Whitwell <keithw@vmware.com> gallium: consolidate bypass_vs and bypass_clipping flags

The draw module provides a similar interface to the driver which
is retained as various bits of hardware may be able to take on
incremental parts of the vertex pipeline. However, there's no
need to advertise all this complexity to the state tracker.

There are basically two modes now - normal and passthrough/screen-coords.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
befa4ff50ec4728de70c04532f8c7342fbd70147 17-Feb-2009 Keith Whitwell <keithw@vmware.com> draw: add map/unmap directives for swtnl driver interface

Previously draw module asked for a pointer into (mapped) vertex data,
which it would incrementally fill and emit draw commands against. This
was hard for the drivers to deal with, especially in the case where a
draw command would force a flush and thus an unmap of the vertex data.

With this change, the draw module explicitly maps & then unmaps vertex
data prior to emitting draw commands.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
e6887a5752774c18cf527477fdd3e57e4893ff3b 25-Aug-2008 Keith Whitwell <keith@tungstengraphics.com> draw: attempt atomic submit of large drawelements calls
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
0a4aea0e86a897d9afb9f2a0ec27f03faf8f1b21 02-Jun-2008 Keith Whitwell <keith@tungstengraphics.com> draw: respect driver's max vertex buffer size
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
82605d7bcd533d7c96cc619c45970efd7229dc3b 29-May-2008 Keith Whitwell <keith@tungstengraphics.com> draw: draw_range_elements trial
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
b23706454bb165a62888d264e95a98a2e4cf139c 13-May-2008 Keith Whitwell <keith@tungstengraphics.com> draw: get rid of fetch-shade-emit frontend hack

The code is now living in it's intended place as a pt middle end.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
bbda45ec769120324f44febf00c6bb170f594f23 12-May-2008 Keith Whitwell <keith@tungstengraphics.com> draw: turn fse path into a middle end

Also add some util functions in pt_util.c
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
b5e5369da5fc50d63a6ece931fac44b555eb0314 12-May-2008 Keith Whitwell <keith@tungstengraphics.com> draw: add fetch-shade-emit path

Enable with TEST_FSE=t. Performs fetch from API-provided vertex buffers,
transformation with one of three (two working) hard-coded shaders, and
final emit to hardware vertices all in a single pass.

Currently only really useful for profiling in conjunction with SP_NO_RAST=t.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
fe586f8612dd517b9a1f0d87fbaf3a75e3caf588 07-May-2008 Zack Rusin <zack@tungstengraphics.com> redo the linear paths
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
abb08e9335b5d7cb004dc9e6cec390ab6968abe5 04-May-2008 Zack Rusin <zack@tungstengraphics.com> implement linear emition and fetching and plug it in the varray paths
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
992d0b997f8f7e965e56852b81e01c290f8c13de 24-Apr-2008 Zack Rusin <zack@tungstengraphics.com> frontend for rendering without elts
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
f93332da5655a31b6c44a1079629a15360ff999b 24-Apr-2008 Keith Whitwell <keith@tungstengraphics.com> draw: handle edgeflags and reset-line-stipple again
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
7d72607e142c0412b88183b849fd701e698b8f79 19-Apr-2008 Keith Whitwell <keith@tungstengraphics.com> draw: move incoming vertex state into draw->pt

This state is effectively private to the vertex processing part
of the draw module.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
c898eae27221bd23b11327553c215a94369eeb99 19-Apr-2008 Keith Whitwell <keith@tungstengraphics.com> draw: always emit header in draw_pt_fetch.c
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
1246d06313f443c91dea07239b43a88ba2b86dde 19-Apr-2008 Keith Whitwell <keith@tungstengraphics.com> draw: remove named clipmask flags, tidy up pt middle ends
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
26c27f6636069ca849a740c3969c577d841484e2 18-Apr-2008 Keith Whitwell <keith@tungstengraphics.com> draw: remove fetch_pipeline middle end -- just use the general path
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
a773f06e969a3992451dd7fe6fd55ea96b2774fa 18-Apr-2008 Keith Whitwell <keith@tungstengraphics.com> draw: split off all the extra functionality in the vertex shader

This will at least allow us to make the initial gains to get decent
vertex performance much more quickly & with higher confidence of getting
it right.

At some later point can look again at code-generating all the
fetch/cliptest/viewport extras in the same block as the vertex shader.
For now, just need to get some decent baseline performance.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
c503e55d74cf84f87f82b3dab3cb4d38b201d47a 17-Apr-2008 Keith Whitwell <keith@tungstengraphics.com> draw: move hw vertex emit to a new module
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
a8582efaca35d09c8ca18918a243a9284583356d 16-Apr-2008 Keith Whitwell <keith@tungstengraphics.com> draw: make pt run pipeline when need_pipeline is true, not just when clipped
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
0c1cb54923f3ab31caa2821e095685277174dd2f 13-Apr-2008 Zack Rusin <zack@tungstengraphics.com> Implement fetch/shade/pipeline or emit vertex passthrough.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
5c19e47362c2d193850e98bd43a2bc2b783b0b5c 06-Apr-2008 Keith Whitwell <keith@tungstengraphics.com> draw: fix edgeflag handling on the pt paths

Encode edgeflags (and reset_stipple info) into the top two bits of the
fetch elements. This info could be moved elsewhere, but for now we
can live with a 1<<30 maximum element size...

Also use the primitive decomposition code from draw_prim.c verbatim, as
it includes all this stuff and is known to work.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
d2cb4ba0bb2388c784f145c59f3798f914dc7f39 03-Apr-2008 Keith Whitwell <keith@tungstengraphics.com> draw: add passthrough path to the pipeline

This handles the case where bypass_vs is set, but vertices need to go
through the pipeline for some reason - eg unfilled polygon mode.

Demonstrates how to drive the pipeline from inside one of these things.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
ae3c91e98ce3355bca22738440f8ba313b3b8b23 02-Apr-2008 Keith Whitwell <keith@tungstengraphics.com> draw: Set the backend prim in the pt 'prepare' operation

Leaving it until 'run' is bad as the primitive is pretty much state
for some drivers and so needs to get set early. In some drivers
this is used to determine things like vertex format, etc -- by the
time we get to 'run', it's too late to change this.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
edfa8201a50c47376b7aa0c05d7851e3e1353bde 01-Apr-2008 Keith Whitwell <keith@tungstengraphics.com> draw: more flatshade_first changes

- Reduce the number of changes to the normal vertex ordering
- Assume that the hardware knows how to do this in the standard case.
- Add support to the passthrough vcache path.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
e0a9ce10f4c30b1aec08c46b6a33885782d40dd0 24-Mar-2008 Keith Whitwell <keith@tungstengraphics.com> draw: pre-declare referenced structs
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
e6ea786c003762143fdf4c63a6fc6a08f27e444e 23-Mar-2008 Keith Whitwell <keith@tungstengraphics.com> draw: fix crlf
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
301b187ca9a811b608894d20bab934af0a10b8ab 23-Mar-2008 Keith Whitwell <keith@tungstengraphics.com> draw: fix some unsigned vs ushort confusion

Middle-end elements are ushort, but prior to that have to treat all
elements as unsigned to avoid wrapping and/or overruns.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h
f40357e25c0520ef1d64ffab03501da4c8b93529 23-Mar-2008 Keith Whitwell <keith@tungstengraphics.com> gallium: beginnings of draw module vertex rework

Trying to put a structure in place that we can actually optimize.
Initially just implementing a passthrough mode, this will fairly soon
replace all the vertex_cache/prim_queue/shader_queue stuff that's so
hard to understand...

Split the vertex processing into a couple of distinct stages:
- Frontend
- Prepares two lists of elements (fetch and draw) to be processed
by the next stage. This stage doesn't fetch or draw vertices, but
makes the decision which to draw. Multiple implementations of this
will implement different strategies, currently just a vcache
implementation.
- MiddleEnd
- Takes the list of fetch elements, fetches them, runs the vertex
shader, cliptest, viewport transform on them to produce a
linear array of vertex_header vertices.
- Passes that list of vertices, plus the draw_elements (which index
into that list) onto the backend
- Backend
- Either the existing primitive/clipping pipeline, or the vbuf_render
hardware backend provided by the driver.

Currently, the middle-end is the old passthrough code, and it build hardware
vertices, not vertex_header vertices as above. It may be that passthrough
is a special case in this respect.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt.h