History log of /external/mesa3d/src/gallium/auxiliary/draw/draw_pt_so_emit.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
2449695e822421fdcaf1c66dffc12d7d705ea69d 17-Dec-2011 Marek Olšák <maraeo@gmail.com> gallium: improve the pipe_stream_output_info struct (v2)

There are 3 changes:

1) stride is specified for each buffer, not just one, so that drivers don't
have to derive it from the outputs

2) new per-output property dst_offset, which specifies the offset
into the buffer in dwords where the output should be stored,
so that drivers don't have to compute the offsets manually;
this will also be useful for gl_SkipComponents
from ARB_transform_feedback3

3) register_mask is removed, instead, there is start_component
and num_components; register_mask with non-consecutive 1s
doesn't make much sense (some hardware cannot do packing of components)

Christoph Bumiller: fixed nvc0.

v2: resolve merge conflicts in Draw and clean it up
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_so_emit.c
8597c986d739212024bcb663470b929095230a12 10-Jan-2012 Brian Paul <brianp@vmware.com> draw: remove unused 'so' variable in draw_pt_so_emit()
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_so_emit.c
ec8cbd79ac4065111365a6720c9564de56855cc8 04-Jan-2012 Dave Airlie <airlied@redhat.com> draw/softpipe: EXT_transform_feedback support (v2)

This replaces the current code with an implementation compatible with
the new gallium interface. I've left some of the remains of the interface
intact so llvmpipe keeps building correctly, and I'll take a look at fixing
llvmpipe up later.

v2: fixup as per Brian's review

Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_so_emit.c
861a029ddb31e91bb4d8e18ab708d0d172f63aad 15-Dec-2011 Marek Olšák <maraeo@gmail.com> gallium: interface changes necessary to implement transform feedback (v5)

Namely:
- EXT_transform_feedback
- ARB_transform_feedback2
- ARB_transform_feedback_instanced

The old interface was not useful for OpenGL and had to be reworked.

This interface was originally designed for OpenGL, but additional
changes have been made in order to make st/d3d1x support easier.

The most notable change is the stream-out info must be linked
with a vertex or geometry shader and cannot be set independently.
This is due to limitations of existing hardware (special shader
instructions must be used to write into stream-out buffers),
and it's also how OpenGL works (stream outputs must be specified
prior to linking shaders).

Other than that, each stream output buffer has a "view" into it that
internally maintains the number of bytes which have been written
into it. (one buffer can be bound in several different transform
feedback objects in OpenGL, so we must be able to have several views
around) The set_stream_output_targets function contains a parameter
saying whether new data should be appended or not.

Also, the view can optionally be used to provide the vertex
count for draw_vbo. Note that the count is supposed to be stored
in device memory and the CPU never gets to know its value.

OpenGL way | Gallium way
------------------------------------
BeginTF = set_so_targets(append_bitmask = 0)
PauseTF = set_so_targets(num_targets = 0)
ResumeTF = set_so_targets(append_bitmask = ~0)
EndTF = set_so_targets(num_targets = 0)
DrawTF = use pipe_draw_info::count_from_stream_output

v2: * removed the reset_stream_output_targets function
* added a parameter append_bitmask to set_stream_output_targets,
each bit specifies whether new data should be appended to each
buffer or not.
v3: * added PIPE_CAP_STREAM_OUTPUT_PAUSE_RESUME for ARB_tfb2,
note that the draw-auto subset is always required (for d3d10),
only the pause/resume functionality is limited if the CAP is not
advertised
v4: * update gallium/docs
v5: * compactified struct pipe_stream_output_info, updated dump/trace
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_so_emit.c
c3fee80f2b35f6a7e48d6015bfc759c66b7e1a2c 07-Aug-2010 Chia-I Wu <olv@lunarg.com> draw: Remove DRAW_PIPE_MAX_VERTICES and DRAW_PIPE_FLAG_MASK.

The higher bits of draw elements are no longer used for the stipple or
edge flags.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_so_emit.c
f1fc444bb05421404f42e8d08e9085c6fb6ce7a9 04-Aug-2010 Chia-I Wu <olv@lunarg.com> draw: Mask out vertex flags in GS and stream output.

This fixes out-of-bound access to the vertices.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_so_emit.c
94d256591d83ac1330f7237e865784618d124d09 01-Aug-2010 Chia-I Wu <olv@lunarg.com> draw: Include draw_decompose_tmp.h in draw_so_emit_tmp.h.

Use draw_decompose_tmp.h to replace stream out primitive decomposer.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_so_emit.c
91862051f98e646647906bb15aec5c5d537f87e4 17-Jun-2010 Zack Rusin <zackr@vmware.com> draw: validate stream output buffers

fixes a crash.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_so_emit.c
c85971da31276f17f90fe7d7596c24b5daa204f9 17-Jun-2010 Zack Rusin <zackr@vmware.com> draw: fix some unsigned issue

spotted by Vinson
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_so_emit.c
638a80bc075a4b58123cb9ba03993bd8bfd024cd 16-Jun-2010 Zack Rusin <zackr@vmware.com> draw: make sure we correctly iterate over output buffers on stream out

we kept overwriting the first attribute of a vertex in a single-stream-
out-buffer case
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_so_emit.c
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_so_emit.c
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_so_emit.c
b85a361ccbac956d2842251395c048a4b3f4c440 14-Jun-2010 Keith Whitwell <keithw@vmware.com> draw wip
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_so_emit.c
c217d94cca357d38e244754747a1bd15e9cf2557 09-Jun-2010 Vinson Lee <vlee@vmware.com> draw: Remove unnecessary headers.
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_so_emit.c
b5d2fc2b48ffb09b21eb3148218a73806af22f09 07-Jun-2010 Zack Rusin <zackr@vmware.com> gallium: scream when one of two unimplemented features in draw is used

plus used the correctly specified stride
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_so_emit.c
2c22b8e61dc4adab658c6198feea30c006aa6c58 01-Jun-2010 Zack Rusin <zack@kde.org> gallium: make draw auto work and add relevant caps and docs
/external/mesa3d/src/gallium/auxiliary/draw/draw_pt_so_emit.c
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_so_emit.c