[Mesa-dev] i965 gen6: Pass-through GS program for future use by transform feedback
Kenneth Graunke
kenneth at whitecape.org
Wed Dec 7 00:50:24 PST 2011
On 12/05/2011 09:40 AM, Paul Berry wrote:
> This patch series introduces a geometry shader program for i965 Gen6
> (Sandy Bridge) that does nothing--it simply passes vertices through to
> later stages of the graphics pipeline. This is a preliminary step
> towards implementing transform feedback, since on Gen6, transform
> feedback is accomplished by having the geometry shader write vertices
> to memory.
>
> Patch 01/10 is a core mesa patch--it introduces a new bit to the
> ctx->NewState bitfield to track when changes to the transform feedback
> setup have occurred. This allows the i965 back-end to avoid
> unnecessary recomputations when the transform feedback setup is
> unchanged.
>
> Patches 02/10-09/10 refactor the i965 driver in preparation for adding
> the new geometry shader program. In particular, they clean up the old
> (Gen4-Gen5) geometry shader code so that it can be expanded, and fix
> some code generation bugs that had previously been benign. Note:
> patches 06/10 and 07/10 are from Kenneth Graunke's "gs2" branch, which
> I used as the starting point for my development. They ensure that URB
> space is allocated for the GS unit so that the geometry shader program
> can run. Down the road, we may want to tweak the URB space allocation
> to improve performance, but that seems like it should wait until
> transform feedback functionality works.
>
> Patch 10/10 adds the pass-through program itself. At the moment it is
> not used (since transform feedback support isn't enabled by default
> yet), however it can be tested by setting the "INTEL_FORCE_GS"
> environment variable.
>
> [PATCH 01/10] mesa: Track changes to transform feedback state.
I agree with Eric's assessment about FLUSH_VERTICES. With that change,
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
> [PATCH 02/10] i965 gs: Reduce information in key to avoid unnecessary recompiles.
No comment here; sounds like you and Eric have it figured out.
> [PATCH 03/10] i965 gs: Remove unnecessary mapping of key->primitive.
> [PATCH 04/10] i965: Don't convert if/else to conditional adds on Gen6.
> [PATCH 05/10] i965: Fix convert_IF_ELSE_to_ADD for gen7.
These three are
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
> [PATCH 06/10] i965: Set the maximum number of GS URB entries on Sandybridge.
> [PATCH 07/10] i965: Initial stab at GS URB space allocation.
No comment here.
> [PATCH 08/10] i965 gs: Clean up dodgy register re-use, at the cost of a few MOVs.
Had comments/ideas; would love to see feedback from others. Still, it
looks correct, so you get a Reviewed-by.
> [PATCH 09/10] i965: Clean up misleading defines for DWORD 2 of URB_WRITE header.
Made a small suggestion but either way you get a Reviewed-by.
> [PATCH 10/10] i965 gen6: Implement pass-through GS for transform feedback.
Aside from the scary lack of GEN6_GS_RENDERING_ENABLE, you get a R-b.
Thanks, Paul. This looks like a great series.
More information about the mesa-dev
mailing list