I used this technique in a real-time GPU DXT1 encoder I wrote around 10 years ago:
"Candid Covariance-Free Incremental Principal Component Analysis"
With this approach you can compute a decent-enough PCA in a few lines of shader code.
HW1 used this encoder to compress all of the GPU splatted terrain textures into a GPU texture cache. One of my coworkers, Colt McAnlis, designed and wrote the game's amazing terrain texture caching system.