History log of /external/mesa3d/src/gallium/drivers/llvmpipe/lp_state_so.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/drivers/llvmpipe/lp_state_so.c
97144eef036cd94068944202214cb8e722b3839d 15-Dec-2011 Christoph Bumiller <e0425955@student.tuwien.ac.at> llvmpipe: adapt to struct stream_output_info modifications

My fault, I broke it with v5 of 861a029ddb31e91bb4d8e18ab708d0d172f63aad.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_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/llvmpipe/lp_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/llvmpipe/lp_state_so.c
fddd5834ff4fc1bf629f25db0a723ae24e3c0b34 24-Jun-2010 Vinson Lee <vlee@vmware.com> llvmpipe: Remove unnecessary header.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_state_so.c
b5e381d9783f17c9a527ac38122444eac6807566 22-Jun-2010 Zack Rusin <zackr@vmware.com> llvmpipe: make geometry shaders and stream output work
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_state_so.c