gdjacobs wrote:I'm saying NVidia defined a GPU somewhat differently than how I read your definition. I feel it gels somewhat better to associate GPU with fully programmable pipelines. Using "general" to refer to a fixed function (even partially) pipeline just doesn't sit right, to me.
Who is referring to "general" then?
I don't see that word being used either in my post or in the nVidia quote.
I think you have to separate "programmable" into two things:
1) A "program" to render a set of source geometry onto a screen.
2) Programming certain parts of the pipeline.
The first is what a GeForce256 does: there's basically just a few instructions being fed to the GPU for "Render this batch of source geometry, using these matrices, to this viewport".
That can be seen as a "program".
Think of a GPU as having 'instructions' like "Transform & light vertexbuffer" and "draw T&L triangles".
The second is somewhat orthogonal to the first.
It allows you to also influence how certain parts of the pipeline process the geometry, rather than using a few 'pre-baked' algorithms in a state-machine. So basically your "Transform & light vertexbuffer" and "draw T&L triangles" 'instructions' can call programmable 'subroutines' themselves, rather than just evaluating certain states to pick some hardwired 'programs'.
However, that is a very blurry line there.
Firstly, even today's GPUs still have quite a bit of hardwired/state-machine pieces of logic (think about clipping polygons to the viewport, projecting from 3D to 2D, or performing 'hardwired' types of texture filtering such as bilinear, trilinear or anisotropic).
Secondly, you could even have a programmable pipeline, without fulfilling 1).
An example of that would be early DX9-capable hardware from Intel: they had programmable pixelshaders, yet they had no T&L whatsoever, so the CPU had to perform T&L and feed the data from system memory, much like on a VooDoo card.
In theory you could have a piece of hardware that implemented all types of shaders, yet had no ability to render a batch of geometry autonomously, and requires the CPU to feed each triangle.
GPU stands for "Graphics Processing Unit"
There's the distinction of GPGPU for "General Purpose Graphics Processing Unit", for GPUs that also support compute shaders (which aren't graphics-related in the strict sense).