This question came up in the late stages of writing my Radeon X1000 series review, and I just got confirmation from ATI yesterday. Turns out that the vertex shaders in the Radeon X1000 series GPUs don’t support a notable Shader Model 3.0 feature: vertex texture fetch. As it sounds, this capability allows the vertex shaders to read from texture memory, which is important because texture memory is sometimes treated as general storage in programmable GPUs. Vertex texture fetch is useful for techniques like displacement mapping, where the vertex and pixel shaders need to share data with one another.
I asked ATI’s David Nalasco about this issue, and he suggested a possible workaround for this limitation:
No, vertex texture fetch is not supported. However, since the X1000
family does all pixel shader calculations with FP32 precision, just like
the vertex shader, it is possible to get the same results using the
render to vertex buffer capability. Basically, you do a quick pre-pass
where you render to a special linear buffer in which each pixel
represents a vertex. Textures can be used to modify each vertex through
the pixel shader, and the result is then read back into the vertex
shader. The result is fast vertex texturing with full filtering
support, without requiring any special hardware in the vertex shader
engine.Note that render to vertex buffer is possible in R4xx as well, but is
limited to FP24 which could cause precision issues in some cases.
Such a workaround would likely involve a performance penalty, but I doubt it would be a major hit. The larger issue is probably just the fact that the workaround would require special consideration from developers, because the GPUs lack a straightforward vertex texture fetch capability.