[Mesa-dev] [PATCH 0/8] i965 gen6: Initial implementation of transform feedback.

Paul Berry stereotype441 at gmail.com
Tue Dec 13 15:35:13 PST 2011

This is a follow up to "i965 gen6: Pass-through GS program for
future use by transform feedback".  This patch series implements
basic transform feedback functionality in i965 Gen6 (Sandy

Patches 1/8 and 2/8 lay some additional core mesa groundwork for
transform feedback, by having the linker record the stride for each
transform feedback buffer (it seems silly to do this in
driver-specific code), and by fixing a minor bug in

Patches 3/8 and 4/8 do some trivial i965 groundwork, fixing a flaw in
emitting IF instructions that was never exercised before, and moving
the VUE map to a place where it can be accessed while compiling the
geometry shader.

Patch 5/8 adds actual transform feedback capability, and patch 6/8
advertises support for the EXT_transform_feedback extension.  Since
there are a bunch of corner cases that aren't handled yet, I'm only
advertising support for the extension when the environment variable
MESA_GL_VERSION_OVERRIDE=3.0 is set.  I'll make it unconditional once
transform feedback support is finished.

Patches 7/8 and 8/8 add some fun pipeline flushing to ensure that if
the output of transform feedback is used in subsequent draw
operations, the subsequent draw operations won't start before
transform feedback completes.

Stuff that remains to implement after this patch series:
- Reset the streamed vertex buffer index to 0 on BeginTransformFeedback().
- Handle overflow of transform feedback buffers.
- Rasterizer discard.

[PATCH 1/8] mesa: Record transform feedback stride in linker output.
[PATCH 2/8] mesa: Fix off-by-one error in transform feedback size check.
[PATCH 3/8] i965 gen6+: Use 1-wide null operands for IF instructions
[PATCH 4/8] i965 gs: Move vue_map to brw_gs_compile.
[PATCH 5/8] i965 gen6: Initial implementation of transform feedback.
[PATCH 6/8] i965 gen6: Turn on transform feedback extension.
[PATCH 7/8] i965 gen6+: Make intel_batchbuffer_emit_mi_flush() actually flush.
[PATCH 8/8] i965: Flush pipeline on EndTransformFeedback.

More information about the mesa-dev mailing list