Xenos hardware tesselator

Graham

Hello :-)
Veteran
Supporter
I've been looking around for information on this, but I can't find much (please let me know if I've missed any obvious threads).

Anyway, the two main quotes I've found are:

from all over the net:
-The hardware tesselator in Xenos supports both adaptive and sequential, and adaptive tesselation requires 2-pass. If the tesselator is used the vertex output from it is limited to 1 vertex per clock though the performance impact can be mitigated as output vertices from the tesselator have higher locality for better caching.

from the b3d article:
An additional functional element that Xenos provides to developers is a Geometry Tessellation Unit. The tessellation unit is a fixed function engine that accepts triangles, rectangles and quads as its primitive input, along with a tessellation level per edge such that the level of tessellation is completely variable across the surface of the original primitive.


Now... I've been thinking about this a lot, and in some ways I feel this is the most potentially powerful peice in the 360, yet I simply can't find any solid information on it.

So I'm wondering, in terms of usefulness, is this another TruForm, or something actually usable?

I'm still wondering:

Is the 'tessellation level per edge' cpu or gpu computed?
'vertex output from it is limited to 1 vertex per clock' I assume this is pre-tesselated vertices, and what is the normal vertex rate for xenos?

I was initially wondering if the tesselation would be pre or post-vertex shading, but given the 2-pass quote, can I guess that there can be a separate shader path for pre and post tesselated vertices? and do vertex shaders output tesselation levels?

Of course this all leads to displacement mapping...
How useful would this be? More so than occluded parallax?.. hmm

I ask all this, as I have various ideas on how to potentially exploit xenos and make pretty pictures. I just would like to know a bit more of how feasible it all is.
Of course I don't have a job working with xenos, in which case I wouldn't be asking :yes: *cough*

I appologize for rambling so...





For clarity, here is a kitten:

kitten1.jpg



Thanks.
 
Of course this all leads to displacement mapping...
How useful would this be? More so than occluded parallax?.. hmm

http://www.beyond3d.com/articles/xenos/index.php?p=09

The combination of the shader array and tessellation unit can now make the, oft spoken of but rarely seen, capability of displacement mapping an attainable method to use as this truly becomes a single pass algorithm for Xenos. A simple primitive can be sent to the tessellation unit which is then subdivided into a vertex mesh and then that can be applied to a vertex shader program that does displacement map lookups via the vertex fetch texture units and then the geometry mesh altered according to the sampled values from the texture sampler. Alternatively, if the screen-space projection of the input primitive to the tessellation unit is calculated prior to tessellation then the per-edge tessellation level can be figured out dependant on that projection such that displacement mapping with correct, dynamic level of detail can be achieved.

Also slides 16, 17 and 18 below may be of some interest, although very minimal they deal with displacement mapping and the shader array and tessellation.

http://ati.amd.com/developer/eg05-xenos-doggett-final.pdf

Now lets just wait for Laa-yosh and others to remind us of the issues :smile:
 
http://www.beyond3d.com/articles/xenos/index.php?p=09



Also slides 16, 17 and 18 below may be of some interest, although very minimal they deal with displacement mapping and the shader array and tessellation.

http://ati.amd.com/developer/eg05-xenos-doggett-final.pdf

Now lets just wait for Laa-yosh and others to remind us of the issues :smile:

3,2,1...

And not to turn this into a PS3 vs 360 thread, but how does an SPE or 2 handle adaptive tesselation versus the xenos?
 
3,2,1...

And not to turn this into a PS3 vs 360 thread, but how does an SPE or 2 handle adaptive tesselation versus the xenos?

What are you trying to do?! We haven't even gotten a good reply to the first post and you are already derailing thread with "Cell vs. Xenos -- Thursday, Thursday, THURSDAY!... for the 1 millionth repeat episode on Beyond3d, immediately following re-runs of Gilligan's Island and Matlock".

We know this much: The SPEs are more versatile. Now back to our previously scheduled broadcasting... (ps, I think the SPE question is on the forum with thoughts, so do a search :p )
 
Acert said:
Now lets just wait for Laa-yosh and others to remind us of the issues
Adaptive tesselation won't be single pass - and any other kind will make displacement very useless.
The other issue was already brought up by the op - the aforementioned paralawhatchawannacallem techniques have pixel granularity, if you want to match that with polygons (even with adaptive tesselation) it'll be a terribly inefficient use of the GPU.

As far as I'm concerned, neither option really replaces the other(on this generation of consoles) - they are more complimentary of each other.

Graham said:
So I'm wondering, in terms of usefulness, is this another TruForm, or something actually usable?
I would actually argue Truform can be quite useful - but it's really a closed environment thing. It was an ill fated addition as a hardcoded function, especially for something as fragmented as PC market.
 
What are you trying to do?! We haven't even gotten a good reply to the first post and you are already derailing thread with "Cell vs. Xenos -- Thursday, Thursday, THURSDAY!... for the 1 millionth repeat episode on Beyond3d, immediately following re-runs of Gilligan's Island and Matlock".

We know this much: The SPEs are more versatile. Now back to our previously scheduled broadcasting... (ps, I think the SPE question is on the forum with thoughts, so do a search :p )

Huh I thought it was friday!? Shit! on to the search!
 
I was initially wondering if the tesselation would be pre or post-vertex shading, but given the 2-pass quote, can I guess that there can be a separate shader path for pre and post tesselated vertices? and do vertex shaders output tesselation levels?
I'd guess it's pre-vertex shading as the comment about the locality of vertices suggests.
For clarity, here is a kitten
Cute.
 
Right.

Thanks for the links acert :) Always helpful you are
It's midnight here, so I'll have a read of them at work tomorrow :yes:

I would actually argue Truform can be quite useful - but it's really a closed environment thing. It was an ill fated addition as a hardcoded function, especially for something as fragmented as PC market.

True. I suppose a better word may have been 'usage' not 'usefulness'. I had very mixed results with it myself, although it provided a nice lazy way to get higher lighting quality (when I hadn't got tangent spaces working for my perpixel path... ahh memories :p) Although if I recall it was quite unstable if you were not careful.

I just wonder if we will one day see that magical 1-million triangle screen. Just as a technical dream I suppose.

louhi.
 
I just wonder if we will one day see that magical 1-million triangle screen. Just as a technical dream I suppose.

What's so magical about 1 million triangles on the screen? You can easily hit that with a reasonably recent PC GPU. It's not something to brag about, but something go beat up your artists about :)
 
Right.

Thanks for the links acert :) Always helpful you are
It's midnight here, so I'll have a read of them at work tomorrow :yes:



True. I suppose a better word may have been 'usage' not 'usefulness'. I had very mixed results with it myself, although it provided a nice lazy way to get higher lighting quality (when I hadn't got tangent spaces working for my perpixel path... ahh memories :p) Although if I recall it was quite unstable if you were not careful.

I just wonder if we will one day see that magical 1-million triangle screen. Just as a technical dream I suppose.

louhi.

I'm sure we've hit over 1m triangles/frame in some recent games. Crysis will definetely go over that. I think PGR3 hit 2-3 million (something like 8 cars @ 90k average, brookline bridge at 1.5million + rest of environment though obviously there would only be rare peak cases where all 8 cars + most of the bridge + good chunk of rest of env. was visible).
 
Is the 'tessellation level per edge' cpu or gpu computed?
'vertex output from it is limited to 1 vertex per clock' I assume this is pre-tesselated vertices, and what is the normal vertex rate for xenos?

I was initially wondering if the tesselation would be pre or post-vertex shading, but given the 2-pass quote, can I guess that there can be a separate shader path for pre and post tesselated vertices? and do vertex shaders output tesselation levels?
The tessellation level is GPU computed. The normal vertex rate for Xenos is 1 vert/clock.

With single pass tessellation it is pre-vertex shader. With adaptive tessellation the factors are calculated in the vertex shader and written to memory with memexport. The second pass reads in this info an tessellates before the vertex shader.
 
With adaptive tessellation the factors are calculated in the vertex shader and written to memory with memexport. The second pass reads in this info an tessellates before the vertex shader.

Does this mean that the engine must use deferred tiling in order to use adaptive tesselation (since it requires the use of memexport)?

I hope that wasn't a stupid question :???:
 
Does this mean that the engine must use deferred tiling in order to use adaptive tesselation (since it requires the use of memexport)?

I hope that wasn't a stupid question :???:
Tiling is completely separate and is not required to use the tessellator or memexport. Tiling is only required if the frame buffer can't fit in edram.
 
Tiling is completely separate and is not required to use the tessellator or memexport. Tiling is only required if the frame buffer can't fit in edram.

I was under the impression that when using automatic tiling that memexport could not be used...wasn't there a thread about this a few months back? Something to the effect that using predicated tiling breaks memexport, or doesn't allow you to use it effectively?
 
Last edited by a moderator:
Found it, I knew I wasn't going crazy! Thx Jawed:
  • Xbox Procedural Synthesis isn't able to work directly with automatic predicated tiling. Automatic predicated tiling is where the developer can just say "render with tiles" and predicated tiling happens. To get XPS and tiling to work together, the developer has to perform their own tile extents testing and predication - it becomes a fully-manual tiling process, basically. Part of the XB360 D3D command set available to the developer is the predication instruction and the 2D extents capture, so it's not a nightmare. But it's certainly something for developers to get to grips with.
  • Memexport also requires manual tiling, otherwise memexport will perform duplicate writes to memory, once per tile.
http://www.beyond3d.com/forum/showpost.php?p=627728&postcount=202

So for games to use addaptive tesselation, the engine must first support manual tiling? How big of a hurdle is this? And can anyone give any insight as to what degree this is being implemented in next gen engines?
 
Last edited by a moderator:
During adaptive tessellation I expect there's no framebuffer, as such, so tiling at that point is irrelevant.

Jawed
 
If a developer is advanced enough to use adaptive tessellation then manual tiling should pose no problem. I'd guess most games will eventually use manual tiling, though I have no numbers or inside info so support this guess.
 
Back
Top