all of the calculation is done on the CPU, but allegro is also drawing tens of thousands of individual pixels with al_draw_pixel, so that may be done with the GPU, I don't know. I've got a Radeon 5450, so maybe it's GPU bound.
There's a problem with the mouse input. ev.mouse.dx and ev.mouse.dy, as you know, don't work well in full screen, but even in windowed mode, dx or dy is always -2 or 2, when the other one is zero, so I tried to fix it by subtracting the old mouse position from the current mouse position and setting my mickeys variable to zero when the mouse position along a certain axis is the same as the previous frame. This, now that I think about it, would set the mickey_x to zero if, for example, I moved the mouse the same amount twice in a row.
If I used the absolute mouse position to control the camera rotation, this would be fixed, but there would no longer be unlimited mouse movement.
I've found 4095 stars looks OK. Maybe that would work better for you. I've found the mouse works better if the frame rate is higher.
The texture on the upper left is actually perlin noise being generated in real-time for every frame drawn. It's probably slower than normal perlin noise, but I'd rather have an algorithm that I understand than one that runs faster and makes no sense to me.
Maybe if I got the mouse dx and dy some different way I could make the camera rotate more smoothly. The camera is supposed to rotate through an azimuth of 0 to 360 degrees and an elevation of -180 to 180 degrees.
Edit: I'm trying out the image embedding