Basically provides the ability to draw a buffer of unknown size created during transform feedback from the geometry shader. The key is that application doesn’t have to do a GPU readback to get the number of primitives generated before issuing the call. Usage cases involve using geometry shader transform feedback to filter geometry for future passes. The “March of The Froblins” paper outlines a bunch of cases,
I think this functionality is important, as tessellation is a data expansion technique and the cases of geometry shader usage I was referring to are for data reduction/filtering (see the ATI paper).
Wow. I should probably check that list more often. This 2nd spec is quite a bit better than what I was looking for,
“First, it provides transform feedback objects encapsulating transform feedback-related state, allowing applications to replace the entire transform feedback configuration in a single bind call. Second, it provides the ability to pause and resume transform feedback operations. When transform feedback is paused, applications may render without transform feedback or may use transform feedback with different state and a different transform feedback object. When transform feedback is resumed, additional primitives are captured and appended to previously
captured primitives for the object.”
Wonder what else is left in driver but not yet public via documentation?
Seems as if NVidia has now finished off (via NV extensions) the list of missing DX10 feature support in GL. We’ve got CG_OBJECT in cgCreateProgram and EXT_direct_state_access to help along the lines of pre-compiled shaders and missing immutable state objects. That leaves decoupling textures and texture filtering/sampler properties as the one primary DX10 feature not implemented in GL.
Also BlendState, DepthStencilState, and RasterizerState objects… or to encapsulate global states which haven’t been encapsulated yet. It should be quite simple to just define Gen/Bind/Delete functions and direct-state-access ones.