rem: printf("%dx%dx%d textels *2 in %f milliseconds; %f Mtextels/s; %f MiB/s\n",
add: printf("%zdx%zdx%zd textels *2 in %f milliseconds; %f Mtextels/s; %f MiB/s\n",
context: void display(void) {  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  glBindTexture(GL_TEXTURE_RECTANGLE_ARB, tex);  glTexSubImage2D(GL_TEXTURE_RECTANGLE_ARB, 0,		  0, 0, width, height,		  format, type,		  buf);  int x;  for (x = 0; x < width*height; ++x) {    buf[x] = 0;  }  glGetTexImage(GL_TEXTURE_RECTANGLE_ARB, 0,		format, type,		buf);    glBegin(GL_QUADS); {    glActiveTexture(GL_TEXTURE0);    glVertex2f(    0.0f,   0.0f);    glTexCoord2f(  0.0f,   0.0f);    glVertex2f(  128.0f,   0.0f);    glTexCoord2f( width,   0.0f);    glVertex2f(  128.0f, 128.0f);    glTexCoord2f( width, height);    glVertex2f(    0.0f, 128.0f);    glTexCoord2f(  0.0f, height);  }  glEnd();  glutSwapBuffers();  static int cnt = 0;  static struct timeval last;  static struct timeval now;  if (++cnt % 50 == 0) {/*     for (x = 0; x < 100; ++x) { *//*       printf("%08x ", buf[x]); *//*     } *//*     printf("\n"); */    last = now;    gettimeofday(&now, NULL);    double secs = (now.tv_sec + now.tv_usec * 1e-6)-(last.tv_sec + last.tv_usec * 1e-6);    secs /= cnt;    cnt = 0;        printf("%dx%dx%d textels *2 in %f milliseconds; %f Mtextels/s; %f MiB/s\n",	   width, height, sizeof *buf, secs * 1e3,	   2 * width * height / secs / 1e6,	   2 * width * height * (sizeof *buf) / secs / 1024 / 1024);  }}