Am I right thinking that modern consumer graphics cards (say those conventional nVidia and ATi models) use exactly the same GPU structures and operations for actual graphics rendering (through DirectX, OpenGL, etc.) and bare computations (through OpenCL, CUDA, etc.)? Is that actually the software (firmware+drivers) part that does all the DirectX/OpenGL functions support without doing any graphics-specific operations a pure hardware way? Is all that makes it a graphics acceleration card (rather than a purely general-purpose computation acceleration unit) a software logic abstraction layer - a mere application running on the hardware?
What I am actually interested in is if it is possible (regardless of how much work and know-how it is going to take) to write a full-software (user-space) 3D rendering (say a 3D game) engine using CUDA/OpenCL that would implement all the DirectX/OpenGL functions as efficiently (or close to it) as the card itself (with its firmware and drivers) does it and if any card hardware parts are going to be left unused when this engine works.
The reason that has led me to this question consists of the following facts I know from experience:
Hardware graphics acceleration drivers use to have many visible bugs.
Software rendering (I used to play 3D games the days it was an option) is almost always more stable (less prone to hangs and visual artifacts).
General-purpose CUDA/OpenCL operation seem to be relatively stable and deterministic, working much more reliable than "hardware" graphics acceleration.
So it seems a curious idea to implement 3D rendering the "software" way but employing the GPU instead of the CPU for the calculations as far as possible. It seems like this could nearly solve the Linux drivers mess for example.