[TEST] Hardware Tessellation on Radeon in OpenGL: Radeon HD 5000 Tessellators Details

GPU Tessellation on Radeon

This short article brings some details to the first articles published yesterday about hardware tessellation on Radeon graphics cards:

AMD just provided me some clarification about the hardware tessellation on Radeon.

The main question in both first articles was about the max value of the tessellation factor.

On Radeon HD 2000, 3000 and 4000, the hardware tessellation unit (called tessellator) has a max tessellation factor of 15.0. This is a hardware limitation that can’t be changed by software tweaks. The tessellator of Radeon HD 2000, 3000 and 4000 is a fixed function unit and we can’t program it with a shader. In OpenGL there are only two functions (described HERE) that allow to control it.

On Radeon HD 5000 series (Evergreen family), things are different. The Radeon HD 5000 includes the fixed tessellator of HD 2000, 3000 and 4000 AND a new programmable tessellation unit. This new programmable tessellation unit will be exposed via a new OpenGL extension (available shortly). And this new extension will allow to exploit the maximum tessellation factor supported on HD 5000 graphics cards: 64.0. And this value of 64.0 is forced by Direct3D 11 specification. So we’ll be able to do Direct3D11-like tessellation in OpenGL shortly under all versions of Windows. Great news my friends 😉

On Evergreen family, both tessellation engines (fixed and programmable) are physically separated.

That’s why in the GeeXLab demo I was limited to 15.0 on my HD 5770. Currently GeeXLab uses the fixed tessellator (with a factor limited to 15.0) and not the new tessellator (with a factor of 64.0).

I can’t wait to test the new tessellator in OpenGL and add this support in GeeXLab.

And good news, the support of the fixed tessellation unit will be kept in all new Radeon and Catalyst.

Thanks to AMD for this clarification 😉

Update (2010.02.12):
The Radeon HD 5000 has two physically separated tessellation units: the old one (max factor of 15.0 – Radeon HD 2000, 3000, 4000 and 5000) and the new one (max factor of 64.0 – Radeon HD 5000 only). In both cases, the hardware tessellator (or tessellation stage) is a fixed function. The difference between both tessellation units is that in HD 5000 the tessellation stage is between new programmable stages (hull and domain) whereas in HD 2000, 3000 and 4000 the tessellation stage is alone.