Clutter currently compiles a single backend, and uses different shared object names for each different backend.
In theory, it should be possible to compile multiple backends in the same shared object, e.g.:
* X11 with EGLX and GLX (using Mesa) * EGL native for PowerVR, Intel CE, AMD and Mesa
The backend to be used should be selectable once, at execution time; possibly, using an environment variable, e.g.:
CLUTTER_BACKEND=egl-x11 ./test-actors CLUTTER_BACKEND=glx-x11 ./test-actors
A new shared object name should be devised; also, it should be possible to have shared objects still available with a specific default backend, e.g.:
libclutter-glx-1.0.so.0 → libclutter-gl-1.0.so.0 + CLUTTER_BACKEND=glx libclutter-eglx-1.0.so.0 → libclutter-gles-1.0.so.0 + CLUTTER_BACKEND=eglx
to avoid breaking existing applications.