Why the DX10/10.1 Radeon tessellator can’t support DX11 tessellation

Illustration courtesy of Emil Persson

No doubt a lot of owners of Radeon HD 2000 up to Radeon HD 4000 series of GPUs are wondering why their cards can’t support the seemingly identical feature called tessellation, which is a big part of the Direct3D 11 spec. Well, it seems like AMD has provided the answer itself.  According to the AMD technical paper Programming for Real-Time Tessellation on GPU the tessellator on the Radeon HD 2000/3000/4000 series is activated through AMD’s own tessellation API interface that works in-conjunction with Direct3D 9/10/10.1. This API however supports up to 15 times amplification, or levels of subdivision of the polygons. The more amplification, the smoother the tessellated polygonal object becomes, eventually becoming spherical.

Video by KhaMichel

The 15 times amplification limit on the AMD API isn’t likely to be arbitrarily set by the engineers at AMD; it probably reflects the maximum capability of the dedicated tessellator featured in the Radeon HD 2000/3000/4000 series. [Update: after this article was published AMD contacted Geeks3D.com and has confirmed that this is indeed a 15x hardware limitation as I have predicted] On the other hand, Direct3D 11 supports up to 64 levels of amplification. Since Direct3D (mostly) dropped cap bits starting from version 10, only Direct3D 11 cards can access all the new features in the Direct3D 11 API. The pre-5000 series cards simply do not meet the minimum amplification capability in the Direct3D 11 spec and therefore cannot use tessellation using this API.

On the other hand, it might be possible that AMD could extend its tessellation API to interface with Direct3D 11, and that remains an avenue to be explored.

P.S. While one might guess that 64x amplification is better than 15x, tessellation still needs to be used in moderation and carefully. As in the words of AMD:

The amplification rate is important because it provides guidelines for the coarse control mesh polygon budget with respect to the desired features in the super high-resolution mesh (also referred to as the “limit surface”). If we want to represent high-frequency features in our high-resolution surface (such as small bumps, warts, wrinkles and bevels), we need to make sure that the coarse mesh has enough polygons to generate positions for these features. Therefore, the higher the amplification rate, the lower the polygon count for our control cage can be.

0 Responses to “Why the DX10/10.1 Radeon tessellator can’t support DX11 tessellation”



  1. Leave a Comment

Leave a comment