
Originally Posted by
allquixotic
With llvmpipe, gnome-shell is giving me 1 fps on a 2007-era top of the line (at the time) laptop with a Core 2 Duo CPU and 4GB of RAM.
There's a reason why llvmpipe and LLVM try so hard to support the newer instruction sets: because they give real performance gains on the massively parallel, compute-intensive workloads that 3d rendering demands, whether the rendering is taking place on CPU cores or GPU cores.
Actually, if you look at the CPUs and GPUs coming out in 2012, the differences between CPUs and GPUs are quickly evaporating. The major difference right now seems to be that CPUs still operate with cores numbering less than 10, while GPUs operate with much less-capable, smaller cores that, while fully general-purpose, are much greater in number than the cores on most CPUs (except heinously expensive HPC parts). But as far as their general ability, the two models are very very similar.
What we need to do is find a "happy medium" number of cores that allows us to make the best use of parallelism for graphics, while packing enough power and on-board cache and registers and streaming instructions into each core to give us great serial performance, too, since serial throughput is often needed for most information systems and server software, where the software is designed as a long sequential string of operations with maybe 2 - 8 threads.
I'd say that if we could take the serial throughput of a Nehalem-era Core processor and build out the number of cores to, say, 64 or 96, we'd have a single integrated circuit that could adequately perform the tasks of both high-end GPUs and high-end CPUs. And since the instruction set is still x86, your "hardware-accelerated" graphics driver would become llvmpipe, utilizing whatever the latest SSE instruction set revision is.
When you compare the ideal x86-CPU-suitable-for-graphics that I just described with a very old (2005 or older) dual core or single-core CPU, with about 33% of the serial performance of one Nehalem core and zero scalability, you will quickly realize that it's just physically impossible to make these old clunkers perform the kinds of calculations needed for OpenGL.
I mean, Michael has run benchmarks using absolutely state of the art CPUs, and we're seeing just tolerable performance from compositing. Do you have any idea how far processors evolved from ~2011 (which is around the timeframe that the CPUs Michael tests now were manufactured) all the way back to 2004? The technology is proceeding at a frightening pace.
IMHO, llvmpipe should look toward the future, not the past. The folks who want to get state of the art features like compositing working on downright obsolete hardware are hoping for something that will not happen. Upgrade your hardware. I mean, hell, my laptop from 2007 is obsolete by all accounts, and the ONLY way I can get semi-reasonable performance out of gnome-shell is to use the i965 IGP inside, whose modest parallelism is just barely adequate to run a smooth compositing session with a few 2d windows open (web browser, terminal and IDE seems to work well, but it slows down if too many programs are open.)
Now, on the other hand, if you were to manufacture a very small, low power CPU using state of the art instruction sets (SSE 4.2 etc) and a bunch of tiny cores, you could probably get fantastic performance out of llvmpipe. You don't need a TON of horsepower to get good 3d (just look at what Nvidia achieved with Tegra 2 and Tegra 3 on mobile platforms!) -- you just need the tight loops implemented in hardware, and a lot of cores. So you are more than welcome to ask for llvmpipe to be useful on small platforms, just not old platforms.