+static void receive_gldQueryViewport(GlPacket *pkt UNUSED)
+{
+ int viewport[4];
+
+ no_break = 1;
+ glGetIntegerv(GL_VIEWPORT, viewport);
+ no_break = 0;
+}
+
+static void receive_gldReadPixels(GlPacket *pkt)
+{
+ GLint x, y;
+ GLsizei width, height;
+ GLenum format, type;
+ char *data;
+
+ packet_read_int(pkt, &x);
+ packet_read_int(pkt, &y);
+ packet_read_int(pkt, &width);
+ packet_read_int(pkt, &height);
+ packet_read_int(pkt, (int *)&format);
+ packet_read_int(pkt, (int *)&type);
+
+ data = (char *)malloc(width*height*typesize(type)*formatsize(format));
+ no_break = 1;
+ glReadPixels(x, y, width, height, format, type, data);
+ no_break = 0;
+ free(data);
+}
+
+static void receive_gldQueryLimits(GlPacket *pkt UNUSED)
+{
+ int value;
+
+ no_break = 1;
+ value = 0;
+ glGetIntegerv(GL_MAX_TEXTURE_UNITS, &value);
+ value = 0;
+ glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &value);
+ value = 0;
+ glGetIntegerv(GL_MAX_UNIFORM_BUFFER_BINDINGS, &value);
+ no_break = 0;
+}
+