+#include <xcb/composite.h>
+
+static void
+query_extensions(d_display_t *dpy)
+{
+ xcb_xfixes_query_version_cookie_t fixes_version_cookie;
+ xcb_render_query_version_cookie_t render_version_cookie;
+ xcb_composite_query_version_cookie_t composite_version_cookie;
+ xcb_damage_query_version_cookie_t damage_version_cookie;
+ xcb_render_query_pict_formats_cookie_t render_formats_cookie;
+
+ const xcb_query_extension_reply_t *rep;
+
+ xcb_prefetch_extension_data(dpy->conn, &xcb_xfixes_id);
+ xcb_prefetch_extension_data(dpy->conn, &xcb_render_id);
+ xcb_prefetch_extension_data(dpy->conn, &xcb_composite_id);
+ xcb_prefetch_extension_data(dpy->conn, &xcb_damage_id);
+
+ rep = xcb_get_extension_data(dpy->conn, &xcb_xfixes_id);
+ dpy->xfixes = rep && rep->present;
+ dpy->xfixes_error = rep && rep->first_error;
+ dpy->xfixes_event = rep && rep->first_event;
+ dpy->xfixes_opcode = rep && rep->major_opcode;
+
+ rep = xcb_get_extension_data(dpy->conn, &xcb_render_id);
+ dpy->render = rep && rep->present;
+ dpy->render_error = rep && rep->first_error;
+ dpy->render_event = rep && rep->first_event;
+ dpy->render_opcode = rep && rep->major_opcode;
+
+ rep = xcb_get_extension_data(dpy->conn, &xcb_composite_id);
+ dpy->composite = rep && rep->present;
+ dpy->composite_error = rep && rep->first_error;
+ dpy->composite_event = rep && rep->first_event;
+ dpy->composite_opcode = rep && rep->major_opcode;
+
+ rep = xcb_get_extension_data(dpy->conn, &xcb_damage_id);
+ dpy->damage = rep && rep->present;
+ dpy->damage_error = rep && rep->first_error;
+ dpy->damage_event = rep && rep->first_event;
+ dpy->damage_opcode = rep && rep->major_opcode;
+}
+