One big caveat with GNOME Shell is that it does only unredirect fullscreen SDL windows, which covers a lot of native games, but not anything running in Wine.

I have seen a few cases where performance in a game drops to the floor because of this, so for the moment I'm patching Mutter to unredirect anything running fullscreen:

Enable unredirect for all fullscreen windows. Not just unredirect-override.

--- mutter-3.2.1.orig/src/compositor/meta-window-actor.c
+++ mutter-3.2.1/src/compositor/meta-window-actor.c
@@ -1219,7 +1219,7 @@ meta_window_actor_should_unredirect (Met
   MetaScreen *screen = meta_window_get_screen (metaWindow);
   MetaWindowActorPrivate *priv = self->priv;
-  if (meta_window_is_override_redirect (metaWindow) && priv->opacity == 0xff && !priv->argb32)
+  if (priv->opacity == 0xff && !priv->argb32)
       int screen_width, screen_height;
       MetaRectangle window_rect;