History log of /external/mesa3d/src/gallium/drivers/softpipe/sp_state_so.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
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/drivers/softpipe/sp_state_so.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/drivers/softpipe/sp_state_so.c
4f4a1be2009863ea34a69b22f58aa1ca08cd710f 19-Nov-2011 Marek Olšák <maraeo@gmail.com> gallium: disable stream output in drivers that support it

I am going to make interface changes and I don't want to break compilation.
/external/mesa3d/src/gallium/drivers/softpipe/sp_state_so.c
5b2406c0b9069363259a3d4b9486b081be5ade03 25-Sep-2010 Brian Paul <brianp@vmware.com> softpipe: make stream out state functions static
/external/mesa3d/src/gallium/drivers/softpipe/sp_state_so.c
1551b4da8c7ee3c13e07c7aa79cf148ca444d0f5 12-Jun-2010 Zack Rusin <zackr@vmware.com> softpipe: small cleanup
/external/mesa3d/src/gallium/drivers/softpipe/sp_state_so.c
38b13459be46bb6d243365d93d4e44ccfa370d69 08-Jun-2010 Zack Rusin <zack@kde.org> softpipe: make sure that invalid calls to sosettargets don't crash us
/external/mesa3d/src/gallium/drivers/softpipe/sp_state_so.c
ba5975dd3274a3cc760e79dabaf9c11b96673f4a 01-Jun-2010 Zack Rusin <zack@kde.org> gallium: add interface for DrawAuto and implement it in softpipe
/external/mesa3d/src/gallium/drivers/softpipe/sp_state_so.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/drivers/softpipe/sp_state_so.c