With Mesa 17.3.1 and XScreenSaver 5.37 testing the discoball in demo, I do not get 60 FPS on the DPI monitor Dell U2718Q.
$ lspci -nn -s 0:02.0
00:02.0 VGA compatible controller : Intel Corporation HD Graphics 530 [8086:1912] (rev 06)
$ more /proc/version
Linux version 4.14.13.mx64.201 (firstname.lastname@example.org) (gcc version 5.3.0 (GCC)) #1 SMP Wed Jan 10 12:14:02 CET 2018
Screen 0: minimum 320 x 200, current 3840 x 2160, maximum 8192 x 8192
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-2 disconnected (normal left inverted right x axis y axis)
DP-2 connected 3840x2160+0+0 (normal left inverted right x axis y axis) 609mm x 349mm
3840x2160 60.00*+ 29.98
1920x1080 60.00 60.00 50.00 59.94 24.00 23.98
1920x1080i 60.00 50.00 59.94
1280x1024 75.02 60.02
1280x720 60.00 50.00 59.94
1024x768 75.03 60.00
800x600 75.00 60.32
720x480 60.00 59.94
640x480 75.00 60.00 59.94
HDMI-3 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
Running the command below, only around 30 FPS are shown and the “animation” stutters, that means, it is not smooth.
$ discoball -delay 0 -count 51 -spin -fps
Is that a hardware limitation, can the drivers be improved, or is it even XScreenSaver?
A lot of it is xscreensaver, which still thinks glVertex3f is a great way to upload geometry, which is why basically all its glx hacks are CPU-bound with Mesa. In this particular case (at least on the haswell I have handy) it's also that apparently every call to glPopMatrix turns into a vertex flush, and it calls PopMatrix once per tile on the disco ball, so...
Mesa could almost certainly be made more efficient on this path. It might be worth looking at stealing something like the immediate-fixed-function emulation from https://github.com/p3/regal . I had hoped that jwzgles translated GL1.x to GLES2, but no, it's to GLES1, so you're still calling PopMatrix all the time.