I believe should we see big evolutions in the next ten years, I'd bet on the following ones:
- A Programmable Primitive Processor ( heck, it's already in the NV40
)
- Dynamic Allocation. VS / PS programs share, for the most part at least, the same calculation units ( which would thus obviously be FP32 )
- Even more flexibility on the shading level, going beyond the idea of calling it "vertex" or "pixel" shading. That means EVERYTHING is programmable ( beside a few things, but then they'd still be instructions ) - and that you don't even see a distinction between pixel, triangle and vertex. It's just information. If you wanted, you could completely bypass triangles and have a vertex shader write to five calculated positions. Something you'd traditionally call a "pixel" shader would be able to create other pixels. You might even be able to create vertices, but then it'd get real icky, so I doubt that's ever gonna happen.
Of course, that last point is very future-looking, and even 10 years might be too optimistic for it. But I believe it will happen, evantually.
Then, what will differentiate CPUs from GPUs?
- Massive parallelism. The same code is used for a lot of stuff, and may even be stored in memory to be reused later ( heck, the NV3x already stores pixel programs in memory to not have to resend them through AGP )
- Always works on Vec4s or Vec3s/Scalars
- Dedicated things like triangle setup/interpolation/... being done VERY fast indeed.
- Native support for graphics-oriented intructions
- A lot less cache than on a CPU.
Uttar