DX10 DrawAuto for GL

I’d like to see DX10’s DrawAuto functionality in GL. DX10 reference,

http://msdn.microsoft.com/en-us/library/bb173564(VS.85).aspx

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,

http://ati.amd.com/developer/SIGGRAPH08/Chapter03-SBOT-March_of_The_Froblins.pdf

If someone knows of a better way to handle this kind of functionality in GL as of current API support, I’d like to hear about it.

With the new tesselation stage … would it be still relevant?

This whole geometry shader and tesselation stuff … look like a bit of a mess to me.

The geometry stage actually follows all the tessellator stuff, or it would if implemented as in HLSL SM5. Tessellator’s wedged between the VS and GS.

P.S. Those froblins are da bomb :sunglasses:

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).

Yes we can: http://www.opengl.org/registry/specs/NV/transform_feedback2.txt

Funny how this extension just show up when you speak about it Timothy :wink:

Next drivers release become more and more very expected with all those features!

I’ll be horn swaggled. That was fast!

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.”

Do note that this is already shipping on hardware that supports it.

> Shipping for GeForce GTX 280 & 260, June 16, 2008

I’m not sure that means drivers were ready.

Is someone could confirme?

I have this extension, 180.43 driver, GeForce GTX 260

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.